Townsend came through the youth ranks at Hull City after joining the club at the age of eight and was promoted to the club's first team during the 2011–12 season. He joined Grimsby Town on loan on 25 October 2011, initially for one month. He made his debut on 29 October, playing in a 5–0 win against Ashington in the fourth qualifying round of the FA Cup, and was named man-of-the-match. He made his league debut on 5 November, playing the full 90 minutes of a 2–2 draw against Bath City. After making 5 appearances, his loan was extended by a further month. On 29 December, the loan was extended until the end of the season. At the end of the 2011–12 season Townsend was awarded the club's "Supporters Young Player of the Season" award. On 20 November 2012, he joined Chesterfield on a month-long loan. He made his debut on 15 December, replacing Jay O'Shea after 85 minutes of a 1–1 draw at home to Burton Albion. On 29 December, he scored his first goal for Chesterfield and was then sent off later in the game, during a 1–1 draw against Morecambe. The loan was eventually extended to the end of the season. On 29 April, his loan deal ended and he returned to Hull City. Townsend's breakthrough of sorts, at the start of the 2013/2014 season, occurred when he made his Hull City debut on 27 August 2013, coming on as 55th-minute substitute in a LeagueCup game against Leyton Orient. Following this, Townsend moved on a month-long loan to Carlisle United on 2 September 2013. The loan was extended for two months on 26 September 2013. Townsend moved to Dundee United on loan in July 2014. He made his debut on 10 August 2014, as Dundee United beat Aberdeen 3–0 in the opening game of the 2014–15 season. Following transfer deadline day moves he returned to Hull City early on 3 February 2015. On 28 February 2015, Townsend joined Scunthorpe United on a month-long loan, which was later extended to the end of the season. Having signed a one-year contract extension with Hull in June 2015, Townsend was again loaned to Grimsby Town, joining for one month on 12 October 2015. This was later extended until 1 January 2016. On 6 January 2016 Townsend signed for Scunthorpe United on a free transfer. Townsend scored his first goal for the club in a 6–0 win over Swindon Town on 28 March 2016. On 28 July 2018 he joined West Bromwich Albion on a three-year deal, following Scunthorpe's decision to reject an offer from former team Hull.