Macey started to play youth football for Avon Arsenal Comets. In 2007, he applied but was rejected from Bristol Rovers' Centre of Excellence. Macey was also invited to train with Cardiff City but felt the travel commitment was too much. He then later went on to represent the youth teams of Bath City and Yate Town before Bristol Rovers signed him in 2009 before signing him as a full-time scholar in 2011. He first appeared in the Bristol Rovers squad for their League Two fixture against Torquay United in March 2012 but never made a first-team appearance for Bristol Rovers. He was however a part of their under-18 double-winning team. Macey was offered a professional contract at the end of the second year of his scholarship in the summer of 2013.
On 23 October 2013, Macey signed for Arsenal after a trial with them. Arsenal beat off competition from Everton and a number of Championship clubs to sign Macey from Bristol Rovers. Due to his age, Arsenal also reportedly paid Bristol Rovers £100,000 in compensation for Macey after he had rejected an offer of a new contract at Bristol Rovers. In his first season at Arsenal, he was suggested as an immediate replacement for Łukasz Fabiański. In 2014, Macey was chosen to travel with Arsenal's first-team to a pre-season training camp in Austria and was later selected as a substitute for Arsenal's Premier League match against West Bromwich Albion. On 8 January 2015, Macey signed for League Two club Accrington Stanley on a one-month loan. He made his Football League debut in a 3–0 defeat away to Tranmere Rovers on 17 January. Macey made his final appearance for Accrington in a 5–1 home defeat to Northampton Town on 31 January, and finished the loan with four appearances. On 31 January 2017, Macey joined League Two club Luton Townon loan until the end of 2016–17. He debuted on 7 February in an EFL Trophy quarter-final tie against Yeovil Town, which Luton won 5–2. Macey went on to make his league debut four days later in a 2–1 win at home to Crawley Town. Macey was recalled by Arsenal on 5 April to provide cover for first-choice goalkeeper Petr Čech and second-choice goalkeeper David Ospina who were sidelined with a groin strain and an abdominal injury respectively, having made 13 appearances for Luton. Macey made his debut for Arsenal on 24 October 2017 against Norwich City in the EFL Cup fourth round, with the match finishing a 2–1 victory after extra time. He made his European debut in the UEFA Europa Leaguegroup stagenine days later, keeping a clean sheet in a 0–0 home draw against Red Star Belgrade. Macey signed a new contract of undisclosed length with Arsenal on 6 December. Macey joined League One club Plymouth Argyle on 30 July 2018 on a season-long loan to replace the injured Harry Burgoyne. He made his debut in a 2–1 away defeat to Walsall five days later on the opening day of 2018–19. Macey was an ever-present in the team until he suffered a dead leg in a 2–1 defeat away to AFC Wimbledon on 26 December, and was deputised by Kyle Letheren in his absence. Macey won the FA Cup by merit of being part of the Arsenal FA Cup Squad and being on the bench for the FA Cup 2019-20 final match against Chelsea.