Born in Cambuslang, Lanarkshire, Scotland, Campbell played for local Junior-grade teams Rutherglen Glencairn and Cambuslang Rangers in his early years; he won the Glasgow Junior League with the latter and twice represented Scotland at that level. Liverpool manager Tom Watson brought him to Anfield in May 1911. In a contemporary interview he credited Donald McKinlay in assisting him during his early days at the club. Campbell did not make his debut until 10 February 1912 in a Division One match at Ewood Park, a game that saw the Reds lose to Blackburn Rovers 1–0. Known for having safe hands, the goalkeeper took over from Sam Hardy after Hardy moved to Aston Villa, and proved to be just as secure as Liverpool's last line of defence. He only missed one game during the 1912–13 season, before he was replaced by his young understudy, Elisha Scott. Campbell did put up a decent fight for the number 1 jersey, playing in all but four games of the 1913–14 campaign, and he was between the sticks for the 1914 FA Cup Final at the Crystal Palace ground on 25 April. The game finished disappointingly for Liverpool, in a 1–0 defeat to Burnley. The match was to be the last to be played at this venue and it was played in front of a reigning monarch for the very first time, George V. Like many footballers of his era, Campbell's career was interrupted for four years due to the First World War, however upon his return to the game in 1919 he found himself once again number 1 for Liverpool. He stayed there until April 1920, when he played what turned out to be his last game for the club.
Later career
Campbell left Liverpool in April 1920, returning to Scotland to play for Partick Thistle for a fee of £1750 where he played in the club's underdog victory in the 1921 Scottish Cup – still the only occasion they have won the trophy. He returned south of the border to New Brighton before joining Stoke City in 1923. Campbell was used as second choice 'keeper to Bob Dixon and in his four seasons spent at the Victoria Ground he made 35 appearances. He then spent another four seasons at Leicester City before ending his career with a two-year spell with old club New Brighton.
International career
Campbell was capped eight times by Scotland, his debut coming in a British Home Championship match at Ninian Park, Cardiff against Wales in 1920; the game finished in a 1–1 draw. He had also been selected in an unofficial wartime international in May 1916.