Il arrive de l'équipe junior de Cambuslang Rangers dans le club de Middlesbrough en janvier 1914 mais sa carrière est interrompue un temps lors de la Première Guerre mondiale, où il évolue pour les Hearts. À la fin de la guerre, il joue pour Dunfermline Athletic de la Central League. Wilson retourne en 1921 à Middlesbrough.
Après une saison, il est meilleur buteur de la League puis rejoint le Chelsea de David Calderhead en pour £ 6 500. Il joue en tout 253 matchs pour Chelsea et 52 buts avant de rejoindre QPR en 1931. Après deux saisons à Nîmes en France, il va entraîner brièvement le Walsall.
Wilson joue douze fois avec l'équipe d'Écosse de 1920 à 1923, marquant treize buts.