Campbell begann seine Karriere in der Saison 2005/06 bei den Sault Ste. Marie Greyhounds, für die er in den folgenden drei Spielzeiten in der Juniorenliga Ontario Hockey League (OHL) auf dem Eis stand. Unmittelbar nachdem sich die Los Angeles Kings aus der National Hockey League (NHL) im Rahmen des NHL Entry Draft 2008 die Transferrechte am Kanadier gesichert hatten, spielte er zwischen 2008 und 2013 zunächst ausschließlich für deren Farmteam, den Manchester Monarchs, in der American Hockey League (AHL). Nachdem Campbell bereits im Sommer 2012 einen Zwei-Wege-Vertrag bei den Kings unterzeichnet hatte[2], kam er in der Saison 2013/14 erstmals zu drei Einsätzen in der NHL, verbrachte aber den Großteil der Spielzeit weiterhin bei den Monarchs in der AHL und fungierte als deren Mannschaftskapitän.
Im Sommer 2014 unterschrieb der Defensivspieler einen Einjahreskontrakt bei den Arizona Coyotes[3], wo er in der Saison 2014/15 regelmäßig sowohl in der NHL als auch in der AHL beim Farmteam Portland Pirates zum Einsatz kommt. Nach einem Jahr bei den Coyotes schloss er sich im Juli 2015 den Toronto Marlies aus der AHL an. Zwei Monate später unterzeichnete er zudem einen Zwei-Wege-Vertrag bei den Toronto Maple Leafs, der es ihm erlaubt, sowohl in NHL als auch in AHL zu spielen.[4]
Nach zwei Jahren in Toronto kehrte Campbell im Juli 2017 als Free Agent zu den Arizona Coyotes zurück. Diese setzten ihn in der Saison 2017/18 ausschließlich bei den Tucson Roadrunners in der AHL ein, bevor er im Juli 2018 samt Marcus Krüger, Jordan Maletta, MacKenzie Entwistle und einem Fünftrunden-Wahlrecht im NHL Entry Draft 2019 an die Blackhawks abgegeben wurde. Im Gegenzug erhielten die Coyotes Vinnie Hinostroza, Jordan Oesterle sowie ein Drittrunden-Wahlrecht im gleichen Draft und übernahmen darüber hinaus den Vertrag von Marián Hossa.[5] Nach der Saison 2018/19 wurde sein auslaufender Vertrag nicht verlängert, sodass er seine aktive Karriere in der Folge beendete.
Zur Saison 2019/20 schloss er sich den Hamilton Bulldogs aus der OHL als Assistenztrainer an und bewältigte mit dem Franchise auch den zwischenzeitlichen Umzug nach Brantford. Nach insgesamt fünf Spielzeiten zog er als Assistenztrainer zu den Belleville Senators aus der AHL weiter.
(Legende zur Spielerstatistik: Sp oder GP = absolvierte Spiele; T oder G = erzielte Tore; V oder A = erzielte Assists; Pkt oder Pts = erzielte Scorerpunkte; SM oder PIM = erhaltene Strafminuten; +/− = Plus/Minus-Bilanz; PP = erzielte Überzahltore; SH = erzielte Unterzahltore; GW = erzielte Siegtore; 1Play-downs/Relegation; Kursiv: Statistik nicht vollständig)