*Club domestic league appearances and goals, correct as of 17:00, 14 December 2024 (UTC) ‡ National team caps and goals, correct as of 16:00, 7 August 2016 (UTC)
A member of Hearts under-19 squad, in September 2011, Hamilton was promoted to the first team due to injury to Marián Kello. He was named as a substitute for a Scottish Premier League match at Inverness Caledonian Thistle but did not make an appearance.[7] On 30 November 2012, he moved to Forfar Athletic on a one-month loan,[8] which was then extended by a further month.[9] He went out on loan again the following season, signing for East Fife in March 2014.[10]
In May 2016, Hamilton signed a contract extension, keeping him at Hearts until May 2019.[15] Hamilton played regularly for Hearts during the 2016–17 season after Alexander was sold to Aberdeen, but lost his place to Jon McLaughlin in the following season.[16]
Dundee
Hamilton signed a three-year contract with Dundee on 28 May 2018, for an undisclosed fee.[17][16] He made his debut on 14 July in a 4–0 win at Stirling Albion in the Scottish League Cup, and manager Neil McCann praised his performance.[18] On 4 August, in his first Premiership match for the Dee, he made a late error that allowed hosts St Mirren to win 2–1.[19] Hamilton would find himself in and out of the starting role all season, as Dundee were eventually relegated at the end of the season.[20] The following season in the Championship was once again full of inconsistencies for Hamilton, at one point conceding 6 goals to rivalsDundee United in one game. He again spent the campaign swapping in and out of the starting position before the season was ended early due to the coronavirus pandemic.[21]
Hamilton would leave Dundee at the conclusion of his contract in 2021, though would leave on a positive as Dundee confirmed promotion to the Premiership.[22]
Greenock Morton
In July 2021, Hamilton signed a one-year deal with Scottish Championship side Greenock Morton.[23] After playing every game of the 2021–22 season for Morton, Hamilton would not sign an extension and would leave the club at the end of the season.
Livingston
On 19 August 2022, Hamilton signed a two-year deal with Scottish Premiership side Livingston.[24] After making 8 appearances in two seasons, Livingston confirmed in May 2024 that Hamilton would depart the club upon the expiry of his contract.[25]
Ross County
In July 2024, Hamilton signed for Ross County on a one-year contract.[26] Hamilton made his competitive debut for the Staggies on 13 July in a win over Stranraer in the Scottish League Cup group stage.[27] Hamilton made his first league appearance for County on 30 November, coming on as a substitute away to Celtic after starting keeper Ross Laidlaw was forced off with an injury.[28]