Born in Northampton, England, Gordon began his career with Peterborough United in 2009 and appeared twice as an unused substitute in the 2011–12 season, having been a first team regular in the youth and development squads. Gordon then signed his first professional contract, in December 2012 on his 17th birthday. By that time he had already made his first team debut, in a 2–0 home defeat by Wolverhampton Wanderers on 22 September 2012. In November 2013, having made four league appearances for Peterborough, Gordon went on trial with Premier League side West Ham United scoring twice in his opening trial game for West Ham under-18 side against Aston Villa under-18s and another two in a 9–0 defeat of Gillingham in a friendly on 11 November 2013. In November 2013, a West Ham United bid for Gordon was rejected by Peterborough United.
West Ham United
On 31 December 2013, West Ham United confirmed the signing of Gordon. In January 2014, Gordon was an unused substitute for West Ham's 5–0 FA Cup defeat by Nottingham Forest.
Loan Spells
Gordon joined Chelmsford City on loan for a month on 22 December 2014. Several days later, he scored on his debut, in 5–1 home defeat by Ebbsfleet United. Gordon then scored in his next game, a 5–3 away win against Staines Town, followed up by scoring his third goal, a 2–0 away win against Ebbsfleet United and in his fourth game, a 6–2 home win against Farnborough Town, Gordon scored twice and provided two assists. On 23 January 2015, his loan spell with Chelmsford City was extended by a month. Gordon then ended his loan spell with the club the following month. On 26 March 2015, Gordon joined Nuneaton Town on loan until 1 May 2015. Gordon made his Nuneaton Town soon after on 28 March 2015, making his first start, in a 2–1 loss against Halifax Town. In his fourth appearance for the club, he scored his first Nuneaton Town goal, in a 1–1 draw against Woking on 18 April 2015. Gordon made his last appearance on the last game of the season, in a 5–3 loss against Chester. On 18 January 2016, Gordon joined League of Ireland side Sligo Rovers on loan until the end of August ahead of the 2016 League of Ireland season. Gordon made his Sligo Rovers debut in the opening game of the season against Shamrock Rovers, which saw them lose 2–0. Gordon then scored his first goal for the club on 7 May 2016, netting the final goal of the match as Sligo Rovers ran out 4–1 victors at home to Wexford Youths. After making ten appearance and scoring once, Gordon returned to West Ham in June 2016. On 1 January 2017, Gordon joined League Two side Newport County on loan until the end of the 2016–17 season. He made his debut for Newport in the starting line-up in a 3–1 defeat to Stevenage in League Two on 7 January. Gordon scored his first goal for Newport on 4 February in a League Two 1–1 draw with Cheltenham Town.
Cheltenham Town
With mutual consent to leave West Ham still in contract, Gordon signed in September 2017 for Cheltenham Town. On 10 May 2018, it was announced that Gordon would leave Cheltenham at the end of his current deal in June 2018 during a long-term injury period which put Gordon out for the foreseeable.
Gordon joined Southern League Premier Division Central side Tamworth, initially as a trialist on a non-contract, in the hope that he could regain match fitness following on from a long injury lay off during his time at Cheltenham Town. He played his first game in a Staffordshire FA Senior Cup tie away at Kidsgrove Athletic, which they were defeated 6–0, but following on from the departure of striker Michael Taylor, Gordon was in contention to make his league debut at hone to Bedworth United. However Gordon's league debut for Tamworth came in the next home game, against St Neots Town on 9 February 2019, coming on as an 81st minute substitute for Tyrell Waite in a 5–0 victory for the home side. Gordon scored his first goal for Tamworth on 2 March 2019, scoring the fourth goal in a 4–1 home victory against Halesowen Town.