Heffernan joined the Nenagh Éire Óg club at a young age and played in all grades at juvenile and underage levels before eventually joining the club's top adult team. On 13 September 2014, Heffernan lined out at left wing-back when Nenagh Éire Óg drew 1-20 to 2-17 with Burgess in the North Tipperary Championship final. He retained his position for the replay two weeks later and claimed a winners' medal following the 0-14 to 0-08 victory.
Heffernan first played for Tipperary when he joined the minor team in advance of the 2011 Munster Championship. He made his first appearance for the team on 27 April 2011 when he came on as a 39th-minute substitute for Ray Ralph in a 2-16 to 1-13 defeat by Waterford. On 15 July 2012, Heffernan lined out at left wing-back when Tipperary faced Clare in the Munster final. He scored a point from play and ended the game with a winners' medal after a 1-16 to 1-12 victory. Heffernan again lined out at left wing-back when Tipperary drew 2-13 to 1-16 with Dublin in the All-Ireland final. He retained his position for the replay on 30 September 2012 and ended the game with an All-Ireland medal following the 2-18 to 1-11 victory. Heffernan was once again eligible for the minor grade in 2013. He played his last game in the grade on 26 June 2013 when he lined out at left wing-back in a 1-17 to 0-17 defeat by Limerick. Heffernan was drafted onto the Tipperary under-21 team before the 2014 Munster Championship. He was an unused substitute on 16 July 2014 when Tipperary suffered a 5-19 to 1-25 extra-time defeat by Clare. On 16 July 2015, Heffernan made his first appearance for the under-21 team when he was selected at centre-back for Tipperary's Munster semi-final meeting with Limerick. He ended the game on the losing side following a 3-16 to 3-14 defeat. Heffernan was again eligible for the under-21 grade in 2016. He lined out at left wing-back when Tipperary suffered a 2-19 to 0-15 defeat by Waterford in the Munster final in what was his last game in the grade.
Senior
Heffernan was added to the extended training panel of the Tipperary senior team at the start of the 2014 season. On 7 September 2014, he was a member of the extended panel when Tipperary drew 1-28 to 3-22 with Kilkenny in the All-Ireland final. Heffernan was again a panel member for the replay on 27 September 2014, however, Tipperary suffered a 2-17 t 2-14 defeat. On 12 July 2015, Heffernan was selected amongst the substitutes when Tipperary qualified to play Waterford in the Munster final. He remained as an unused substitute but ended the game with a Munster Championship medal following Tipperary's 0-21 to 0-16 victory. Heffernan made his first appearance for the Tipperary senior team on 6 March 2016 when he lined out at right wing-back in a 1-18 to 1-17 defeat by Waterford in the National League. He was later prevented from making his Munster Championship debut after being ruled out of all hurling activity after suffering a series of concussions. On 10 July 2016, Heffernan won a second Munster Championship medal as an unused substitute after Tipperary's 5-19 to 0-13 defeat of Waterford in the final. He was again named on the bench for the All-Ireland final against Kilkenny on 4 September 2016. Heffernan remained on the bench but claimed an All-Ireland medal following the 2-29 to 2-20 victory. On 23 April 2017, Heffernan lined out as a substitute when Tipperary suffered a 3-21 to 0-14 defeat by Galway in the National League final. Tipperary qualified for a second successive National League final on 8 April 2018 with Heffernan lining out at right wing-back. He ended the game on the losing side following a 2-23 to 2-17 defeat by Kilkenny. On 29 June 2019, Heffernan was selected amongst the substitutes when Tipperary qualified to play Limerick in the Munster final. He was introduced as a substitute for James Barry but ended the game on the losing side following a 2-26 to 2-14 defeat. On 18 August 2019, Heffernan was selected at left corner-back when Tipperary faced Kilkenny in the All-Ireland final. He ended the game with a second All-Ireland winners' medal - his first on the field of play - following the 3-25 to 0-20 victory. He ended the season by receiving an All-Star nomination.