Lavery started his youth career in Canada, playing for the Red Deer Renegades. He then played with Northern Irish youth side Goodyear while having trials at Tottenham Hotspur, Portsmouth and Charlton Athletic. A successful trial at Ipswich Town saw him spend two years at the club before rejecting the offer of a new deal in late 2011 and leaving the club after his academy scholarship expired. He went on to have trials at Sunderland and Leicester City in November. In December 2011 Lavery was reported to be in talks with League Two club Bradford City.
Finally, in the summer of 2012, Lavery signed for Sheffield Wednesday to join their development squad. On 28 August 2012, Lavery was included in Sheffield Wednesday's first-team squad as an unused substitute for the League Cup tie against Premier LeagueFulham. A 1–0 win saw Sheffield Wednesday enter the third round of the competition, but Lavery failed to get on the pitch for that game, against Premier League outfit Southampton. After continuing success in Sheffield Wednesday's development squad, Lavery was targeted by clubs for a possible loan deal and, on 25 January 2013, he signed for League Two side Southend United. He made his professional debut a week later on 2 February when Southend hosted Oxford United.
2013–14 season
On 10 August 2013, Lavery was named on the bench for Wednesday for the home Football League Championship game against Burnley. This was the second game of the season and Wednesday's first home game. In the second half, with Wednesday trailing 2–1, Lavery made his debut for the club but was unable to help his side to salvage a point. In November 2013, he joined League Two club Plymouth Argyle on loan until the start of January 2014. Lavery made his debut against Dagenham & Redbridge the next day, and scored the first senior goal of his career during his first start against Bury on 21 December. Five days later, he opened a 3–2 win at former club Oxford with a goal in the first minute of the second half. The loan was then extended for a month after he scored his third goal in four starts on New Year's Day against Torquay United, but he was recalled less than a week later. Upon his return to Sheffield Wednesday, Lavery was used as a second-half substitute against Leeds United on 11 January 2014. He scored two goals, his first professional goals for Sheffield Wednesday, in their 6–0 home victory against their Yorkshire rivals. He scored a further brace for the Owls in a 4–1 win over Birmingham City on 15 March 2014.
2014–15 season
On 2 February 2015, Lavery was loaned to League One team Chesterfield until 7 March, replacing Cardiff City-bound Eoin Doyle. On 9 March, having scored three goals in seven games including a last-minute winner at Milton Keynes Dons, he extended his loan until the end of the season, but was recalled by Wednesday only six days later, due to an injury to Will Keane. He scored his first Wednesday goal of the season on 21 March, as they came from behind to win 3–2 at South Yorkshire rivals Rotherham United. On 11 April he added a second, opening a 1–1 home draw against Charlton with a volley from Lewis Buxton's cross.
Sheffield United
On 30 August 2016, Lavery joined Sheffield United after turning down a new contract offer from city rivals Wednesday. His first goal for them was in a 4-0 home win against Swindon Town. On 29 January 2018, Lavery moved to South Yorkshire neighbours Rotherham United, on loan until the end of the 2017–18 season. He was transfer-listed by Sheffield United at the end of the 2017–18 season. Lavery joined Bury on a season-long loan on 31 August 2018. He scored his first goal for Bury in a 2-1 EFL Trophy loss against Rochdale on 4 September 2018. He was released by Sheffield United at the end of the 2018–19 season.
Walsall
On 6 August 2019, Lavery signed an undisclosed-length contract with Walsall.
International career
Lavery is eligible to play for his country of birth Canada and, as both his parents were born there, either Northern Ireland or the Republic of Ireland. Before Lavery's move to England he played for Canada U-17 in warm-up games in preparation to qualifiers for the 2009 FIFA U-17 World Cup. However, after playing time in Northern Ireland for Goodyear and then his move to Ipswich Town, he switched to the Northern Ireland national side. He made his debut for Northern Ireland U-21 on 17 November 2010 in a 3–1 loss against Scotland. He has also made three appearances for the Northern Ireland U-19 team. On 21 May 2015, Lavery was given his first call-up to the senior Northern Ireland team ahead of a friendly with Qatar and a UEFA Euro 2016 qualifying match against Romania. Manager Michael O'Neill had wanted him to feature the previous Summer in a tour of South America, but Lavery was unavailable as he was the best man in his brother's wedding.