Donaldson grew up in North Berwick, East Lothian, and attended North Berwick High School, joining Livingston's youth ranks in 2011 from Tynecastle.[1] After progressing through the club's youth system and impressing for the reserve team, he signed a new two-year contract for Livingston on 17 January 2013.[2] Later that month he went on trial with Premier League club Manchester United.[3] He made his first-team debut for Livingston as a late substitute against Dunfermline Athletic on 30 March 2013.[4] He then went on to make a further four appearances towards the end of season 2012–13.[5] In December 2013, Donaldson was allowed to travel to Queens Park Rangers for a trial.[6] In January 2014, Donaldson completed his move to Queens Park Rangers,[7] for a fee of around £150,000.[8] In all he made 29 appearances in all competitions, scoring once.[9]
On 28 January 2014, aged 19 Donaldson joined Queens Park Rangers from Livingston after impressing QPR manager Harry Redknapp during a week-long trial.[10] Donaldson made his senior and Championship debut on 3 May 2014 in a 3–2 away win against Barnsley at Oakwell, where he was named in the starting line up and played the full 90 minutes.[11]
On 13 July 2015, Donaldson joined Scottish Premiership side Dundee United on a three-year contract following his release from QPR.[12] Donaldson was released on 7 August 2017, after two seasons with the club.[13]
Later that month, he signed a short-term contract with Inverness Caledonian Thistle.[14] In December 2017, he extended his Inverness contract for a further two and a half years.[15]
Donaldson moved to Ross County in January 2020 for an undisclosed transfer fee.[16] He made his debut in a 1–0 defeat to Ayr United in the Scottish Cup.