After a standout amateur career at Westview High School, he was selected by the Cardinals in the second round of the 2012 MLB draft.
In the coming years, Baseball America rated him among the Cardinals' top prospects, twice naming him St. Louis's best defensive catcher.
[8] The St. Louis Cardinals selected Kelly as a third baseman in the second round, 86th overall, of the 2012 Major League Baseball (MLB) draft.
[13] In 2013, Kelly and Gary LaRocque, the Cardinals' director of player development, discussed his switching positions to catcher.
He spent the 2015 season with the Palm Beach Cardinals of the High–A Florida State League[16] and compiled a .219 batting average with eight home runs and 51 RBIs in 108 games.
[20] After batting .287 with 6 home runs and 18 RBI in 64 games for Springfield, Kelly was promoted to the Memphis Redbirds of the Triple–A Pacific Coast League on July 11, 2016.
[21] In 96 games between Springfield and Memphis prior to his call up he compiled a .289 batting average/.343 on-base percentage/.395 slugging percentage with six home runs and 32 RBIs.
[1] After the season, the Cardinals assigned Kelly to the Glendale Desert Dogs of the Arizona Fall League (AFL).
[13] He was recalled to St. Louis on July 21, replacing Eric Fryer, who was designated for assignment, as the backup to Yadier Molina.
[1] On December 5, 2018, the Cardinals traded Kelly, Luke Weaver, Andy Young, and a draft pick to the Arizona Diamondbacks in exchange for first baseman Paul Goldschmidt.
[34][35] Prior to the 2019 season, Baseball America ranked Kelly the Diamondbacks' fourth-best prospect and best defensive catcher.
Manager Torey Lovullo hoped that Kelly, Alex Avila, and John Ryan Murphy would be a "three-headed monster" at the position.
[37] Against the Boston Red Sox on April 6, he had three RBIs, including a go-ahead RBI single in the bottom of the ninth inning to give Arizona a 5–4 victory.
[38] On May 4, he hit his first career home run, the second of back-to-back homers against Kyle Freeland as Arizona beat the Colorado Rockies 9–2.
[40] On July 3, Kelly's home run against Kenley Jansen put the Diamondbacks ahead in the ninth, though they eventually lost 5–4 to the Dodgers in 10 innings.
[41] His three-run home run against John Means on July 24 helped the Diamondbacks beat the Baltimore Orioles 5–2.
[47][48] Kelly appeared in a majority of games at the catching position in 2020, splitting time with Stephen Vogt but getting most of the September starts.
[57] On March 20, Kelly left a spring training game after he was hit in the arm by a pitch from Chicago White Sox reliever Gregory Santos.
[59] After an eight–game rehab assignment with the Triple–A Reno Aces, Kelly was activated and assumed the roster spot of José Herrera, who was sent down to Triple–A.
[62] On August 19, 2023, Kelly signed a major league contract with the Detroit Tigers that included a club option for the 2024 season.
[65] On July 28, 2024, the Tigers traded Kelly to the Texas Rangers in exchange for Tyler Owens and Liam Hicks.