Caldwell started his career with Celtic Boys Club. At 16 he went to England, alongside his elder brother Steven at Newcastle United. Breaking through from the reserves proved difficult, however, and in search of first team football, he went on loan to other clubs on several occasions: Darlington and Hibernian in 2001–02, then Coventry and Derby County the following season.

During four years at Celtic, Caldwell helped the club win two league championships, the 2006–07 Scottish Cup and the 2008–09 Scottish League Cup, although he was subject to criticism from Celtic fans.[6][7] Caldwell himself later said that this was due to injuries in his first season, and then having to play out of position at right back during the early part of the 2007–08 season (before Andreas Hinkel was signed).[8] He was also criticised during the 2006–07 season for a bad tackle on Kilmarnock player David Fernández, which damaged the Spaniard's cruciate ligament.[9] Caldwell apologised to Fernandez after the game, protesting that he had never intentionally hurt an opponent.[9]

Caldwell subsequently gained recognition and respect from the fans, becoming something of a cult hero, as shown by the chants of "heid" when he was in possession of the football.[8] After being named as the Writers' Player of the Year for the 2008–09 season, Caldwell stated his belief that this was due to him having a long run in his preferred position, and improved concentration and decision making on his part.[8]

During the 2009–10 season, however, Caldwell had a contract dispute with the club, claiming that the club were "kidding themselves" if they thought he would accept their offer.[10] New manager Tony Mowbray, who had also worked with Caldwell at Hibernian, responded by stating that he would not ask the board to increase the offer.[10] Subsequent to this, Middlesbrough had a joint offer for Caldwell and Barry Robson accepted by Celtic.[11]

Caldwell eventually signed for Wigan Athletic on a four-and-a-half-year contract for an undisclosed fee on 13 January 2010.[12] He made his Wigan debut in a 2–0 win against Wolves on 16 January 2010. He scored his first goal for Wigan in a 2–1 defeat to Blackburn Rovers on 27 January 2010.[13] Caldwell was sent off twice in Premier League defeats against Manchester City on 29 March (3–0) and Chelsea on the final day of the 2009–10 season (8–0).

Caldwell was appointed captain of Wigan Athletic early in the 2010–11 season, following the departure of previous captain Mario Melchiot in the summer.[14] In the 2011–12 season, Caldwell was a key player in the club's battle against relegation from the Premier League, and received the club's Player of the Year award at the end of the season.[15] In May 2013 he jointly lifted the FA Cup with playing captain Emerson Boyce after Wigan defeated Manchester City 1-0 in the final.[16] Caldwell returned from injury as a substitute in the 2013–14 FA Cup semi final against Arsenal. The match ended in a 1–1 draw, but Caldwell missed the first attempt in the penalty shootout, which Wigan lost.[17] In the 2013–14 Football League Championship playoff semi final second leg against QPR, Caldwell conceded a penalty kick during a 2–1 defeat that ended Wigan's hopes of promotion.[18]

Caldwell signed a one-year contract with Wigan in July 2014.[19] As part of the new agreement he was also given some coaching responsibilities.[19] He announced his retirement from playing on 28 February 2015 after being unable to recover from a long term hip injury.[20]

After retiring as a player in February 2015, Caldwell formally joined the coaching staff at the Wigan Athletic academy.[20] He was appointed the new manager of Wigan Athletic on 7 April 2015 after the dismissal of Malky Mackay with the club 23rd in the Championship with five games remaining.[24]

He was unable to halt the clubs relegation to League One but was assured by club chairman David Sharpe that he would remain in charge.[25] The following season Caldwell guided Wigan to the League One title and promotion back to the Championship at the first attempt.[26] Along with club success Caldwell was also recognised with the manager of the month award for February[27] and the LMA League One Manager of the Year award.[28] On 25 October 2016, after 18 months in charge, Caldwell was dismissed by Wigan, with the club in 23rd position and winless in four games.[29]

On 17 January 2017, he was appointed manager of League One club Chesterfield on a one-year rolling contract, following the dismissal of Danny Wilson.[30] He was unable to prevent the club being relegated and was sacked on 16 September when the decline continued the following season in League Two.