Rangers Wilson came through the youth team ranks at Rangers and captained the under-19 team. He was tipped early on to have a big future at Ibrox (being compared to
Alan Hansen), even drawing interest from other clubs before he had made his professional debut. Wilson had been an unused substitute on several occasions during the latter part of the
2008–09 season, including the
2009 Scottish Cup Final against
Falkirk. He made his professional debut for Rangers against
Dundee in the
League Cup, playing the full 90 minutes of a 3–1 win in October 2009. Just over a week later, he became the youngest Rangers player to play in the
UEFA Champions League by starting a 1–1 draw against
Unirea Urziceni, aged just . After the match, Wilson described making his debut as "unbelievable". While veteran captain
David Weir commented on Wilson, reminding himself as a seventeen years old version of himself. Having made three appearances so far, Wilson says he doesn't expect to have more starts, once
Majid Bougherra made his return. Weir then revealed that both Weir and
Saša Papac helped him to handle his step up to the first team. Wilson scored his first goal for Rangers in a 4–1 away victory against
Hearts at Tynecastle on 27 March 2010. In mid-March, Wilson is close of signing a new contract, according to Manager
Walter Smith. After a promising debut season, Wilson was awarded both the Scottish FWA Young Player of the Year award and the Scottish PFA Young Player of the Year award. He was also voted as Rangers Young Player of the Year by the club's supporters. Upon receiving the awards, Wilson says winning the double in his first season with Rangers is something special. In all for Rangers, he played 26 times and scored once. He was sent off in the
2010 League Cup Final against
St Mirren. After the match, Wilson says his sending off was his first and was gutted, in addition, he felt receiving a red card let the team down. While in process of signing a contract, Wilson was linked with
Premier League sides
Aston Villa and Liverpool.
Liverpool and
Jon Flanagan. On 21 July 2010, Wilson joined
Liverpool and signed a three-year deal for an initial transfer fee of £2 million, potentially rising to £5 million based on appearances. Two months later, on 22 September 2010, Wilson made his Liverpool debut. He appeared regularly for the reserves in the early part of the season, scoring his first goal for the second-string on 20 October 2010, in a 3–3 draw with
Blackburn Rovers at
Prenton Park. He made his debut for the first team on 22 September 2010 in their defeat to
League Two side
Northampton Town in the third round of the
League Cup; Northampton winning 4–2 on penalties after a 2–2 draw. In the January transfer window, Wilson was linked with a loan move to Rangers's Old Firm rival
Celtic. Wilson played for Liverpool in a
Europa League tie with
Sparta Prague in which he played the full 90 minutes and was praised for his effort by manager
Kenny Dalglish. He made his first
Premier League start on 27 February 2011 at the
Boleyn Ground in a 3–1 defeat against
West Ham United. On 17 March, he again started a Europa League tie against
Braga. On 2 April, he replaced the injured
Daniel Agger during the first half in a 2–1 defeat away to
West Bromwich Albion. In the 2011–12 season, Wilson wanted to leave Liverpool to go out on loan, in order to gain first team football experience. Rangers were among the teams interested in signing Wilson. Wilson made his first appearance against his ex side
Rangers in a 1–0 friendly defeat on 18 October 2011. Upon joining Hearts, Wilson says he didn't have any regrets about joining Liverpool and insisted it made him a better player.
Loan spells On 31 December 2011 it was confirmed that Wilson would join
Blackpool on loan until the end of the season once the transfer window was declared opened the following day. He made his debut in Blackpool 2–1 win against
Crystal Palace. On 22 November 2012, he was loaned to Championship side
Bristol City. He was given the number 40 shirt. Upon joining the club Wilson expressed surprise at the side's then league position which saw it languishing in the relegation zone. He made his first and only appearance for City as a 90th-minute substitute two days later in a 3–1 win away at
Middlesbrough.
Heart of Midlothian On 18 January 2013, he joined
Scottish Premier League side
Heart of Midlothian on loan from Liverpool until the end of the season. He was given the squad number four and made his debut the following day from the start at
Celtic Park, in a
Scottish Premier League match against
Celtic, in a 4–1 defeat. He then played in the Scottish League Cup for the first time in three years when Hearts faced
Inverness Caledonian Thistle, which Hearts won on a penalty-shootout after a 1–1 draw after extra-time. The win put Hearts into the final. However, there was controversy over his appearance when he last played in the Scottish League Cup, resulted in him receiving a red card three years ago. The Scottish FA stated that Wilson was indeed eligible, stating he served his ban at the beginning of season 2010/11 and the SFA does not operate competition-specific disciplinary procedures. In the
final against
St Mirren, Wilson started in the match, partnering a central defender with captain
Andy Webster. The match ended with St Mirren winning 3–2 against, having gained revenge on him for three years ago. Since moving to Hearts, Wilson became a regular in the first team and was willing to stay at Hearts for the long term. On 27 May 2013, it was announced that Wilson would sign a permanent deal with Hearts after his Liverpool contract was up in the summer. The move was initially blocked by the
SPL following the club entering
administration and being unable to register new players, but this was later rescinded and Wilson was confirmed as a Hearts player on 30 June. On 2 July, Hearts made Wilson club captain at the age of just 21, which manager
Gary Locke quote "a big responsibility for him". It is thought this is the reason for Wilson re-signing with the club. Wilson's first game at Hearts as captain came in the opening game of the season, in a 1–0 defeat to
St Johnstone. After winning 3–1 against
Aberdeen on 24 August 2014, Wilson was involved in a tunnel incident that saw him receive a one match ban. Then in November, Wilson played a role in giving Hearts points in two games when he assisted one goal in a 3–1 win over Aberdeen and another, in a 2–2 draw against
Ross County. Soon, Wilson was on the sideline when he had tonsillitis and scored on his return in a 3–3 draw against St Johnstone. Wilson scored his second goal of the season a month later on 21 March 2014, in a 2–1 loss against
Dundee United. His third goal came in a 4–2 defeat to
Partick Thistle on 7 May 2014. However, Wilson was unable to help the club survive relegation from the Scottish Premiership. Despite this, Wilson made thirty-three appearances and scored three times in the league. Despite the relegation, Wilson vowed to help the club bounce back to the Scottish Premiership, as he was keen to stay at Hearts when they would be in the Scottish Championship. In his second season at Hearts, Wilson stated he was looking forward to playing in the Scottish Championship, and he scored the club's first goal of the season in the Championship against his former club Rangers which he refused to celebrate. Hearts went on to win 2–1. Wilson was soon on the sidelines when he strained his hamstring. Wilson made his return against
Queen of the South and scored his second goal of the season, as well as providing two assists in a 4–1 win. Wilson captained Hearts through the 2014/15 season as they won the Championship and gained promotion to the Premiership. Near the end of the season, it was reported by BBC Sport that Wilson had exercised a clause in his contract allowing him to become a
free agent. Wilson made his second debut for Rangers against
Hibernian in the first round of the
Challenge Cup on 25 July 2015. Over the course of the subsequent season, he played in central defence alongside
Rob Kiernan. The pair, however, received criticism for some of their performances. He made his debut for the club on 27 February 2018 in their
CONCACAF Champions League match against
Toronto FC, starting in the 0–0 draw. Wilson scored his first goal for the Colorado Rapids on 11 May 2019 in a 3–2 home defeat against
Real Salt Lake. He scored his second goal a month later on 28 June against
Los Angeles FC, a lone 49th minute goal to give the Rapids a 1–0 home victory. Wilson was waived by Colorado on 2 January 2024.
Queen's Park On 1 February 2024, Wilson's return to Scotland was confirmed when he joined
Scottish Championship club
Queen's Park on an eighteen-month contract. On 18 July 2024, Wilson had his contract terminated by mutual consent.
Livingston On 15 October 2024, Wilson joined hometown club
Livingston on a short-term contract until January 2025. On 31 December 2024, the contract was extended to the end of the season. ==International career==