Initially starting out at Burnley and Blackburn Rovers,[4] Mahoney moved to Accrington Stanley, where he progressed through the academy and began his senior career.[5] He made his first-team debut on 28 August 2013 in a 2–0 League Cup defeat against Cardiff City, and his League Two debut three days later as a second-half substitute in a 1–0 defeat at home to Burton Albion.[4][6] In all, Mahoney made six appearances for Stanley's first team.[7]
Blackburn Rovers
Mahoney signed for Blackburn Rovers on 13 December 2013, initially as a member of their development squad.[8] In his first few weeks at the club, he was an unused substitute in several Championship matches,[9] and, at the age of 16 years and 337 days, became the third youngest Blackburn Rovers debutant when he replaced Lee Williamson late in the 5–0 FA Cup defeat to Manchester City.[10][11] When he turned 17, he signed his first professional contract with the club.[12] His progress stuttered, as happens with young players,[10][13] and he was not initially given a squad number for the 2015–16 season.[14] Towards the end of that season – more than two years after his Blackburn debut – Mahoney was given his League debut in the starting eleven for a 1–1 draw with Nottingham Forest on 19 April 2016, and kept his place for the next match. Manager Paul Lambert was impressed with Mahoney's self-belief and his natural ability with both feet.[15][16]
In the 2016–17 season, Mahoney played twice in the EFL Cup, but in January 2017 was still awaiting his next league outing. Although Blackburn were relatively strong in attacking areas, manager Owen Coyle rejected offers to take Mahoney on loan, claiming he would get his chance in the second half of the season.[17][18] He made his first league appearance of the season on 4 February, as a second-half substitute in a 1–0 win over Queens Park Rangers,[19] and went on to play in 13 of the 17 remaining Championship matches as the team failed to avoid relegation to League One. He himself did not score, but three times he set up goals that earned points for the team: Derrick Williams' last-minute equaliser against Cardiff City,[20]Lucas João's first goal in a draw with Norwich City four days later,[21] and Tommie Hoban's winner against Nottingham Forest in April.[22] Although Mowbray was keen to keep him at the club, no deal could be agreed.[23]
AFC Bournemouth
On 4 July 2017, Mahoney signed a four-year contract with Premier League club AFC Bournemouth.[24] The clubs could not agree a fee, so the Professional Football Compensation Committee ruled that Bournemouth should pay an initial £425,000 and included provision for appearance-based additional payments and for a sell-on clause of 20% of profit resulting from any future sale.[25]
After playing in two cup games for the Cherries in 2017, Connor moved to Barnsley on loan for the second half of the 2017–18 season.[26]
On 7 August 2018, Mahoney joined Championship club Birmingham City on a season-long loan.[27] He made his debut as a second-half substitute in a 1–0 defeat away to Middlesbrough.[28] Having started the match at home to Sheffield Wednesday on 27 October in place of the injured Jacques Maghoma, Mahoney scored his first career goal just before half-time when he "cut in unchallenged from the left to fire in a right-footed shot past Cameron Dawson into the far roof of the net"; Birmingham went on to win 3–1.[29][30]
Millwall
On 9 July 2019, Mahoney signed for Millwall on a long-term contract for a fee of £1,100,000.[31] He was released when his contract expired at the end of the 2021–22 season.[32]
Huddersfield Town
On 6 July 2022, following the expiry of his contract at Millwall, Mahoney joined fellow Championship club Huddersfield Town on a two-year deal.[33]
Following the conclusion of the 2023–24 season, Huddersfield Town announced that Mahoney would be departing the club.[35]
Barrow
On 24 June 2024, Mahoney agreed to join League Two side Barrow on a two-year deal.[36]
International career
In January 2014, he was called up by England U17 for the first time.[37] Mahoney made his England U17 (and his only appearance for the side) debut, in a 2–1 loss against Belgium U17 on 30 January 2014.[38]
Eight months later, in September 2014, Mahoney was called up by England U18.[39] Four days later, he made his England U18 debut, in a 2–0 loss against Italy U18.[40]