↑ Количество игр и голов за профессиональный клуб считается только для различных лиг национальных чемпионатов, обновлено по состоянию на 4 августа 2024 года.
↑ Количество игр и голов за национальную сборную в официальных матчах.
О’Доннелл был капитаном в юношеской команде «Абердина»[2]. Затем он перешёл в «Селтик»[3], где помог команде выиграть молодёжный кубок Шотландии[4] и национальный чемпионат среди юношей до 19 лет в сезоне 2010/11.
«Партик Тисл»
В 2011 году О’Доннелл покинул «Селтик»[5] и 23 августа подписал однолетний контракт с «Партик Тисл»[6]. 17 сентября он дебютировал, выйдя на замену в домашней игре против «Эр Юнайтед» (4:0)[7]. В сезоне 2012/13 О’Доннелл провёл 38 матчей, помог команде выйти в Премьер-лигу и дойти до финала шотландского кубка вызова[7]. В том сезоне О’Доннелл был включён в символическую сборную года национального чемпионата[8].
27 января 2015 года «Блэкпул» увеличил первоначальное предложение за О’Доннелла с 50 000 до 125 000 фунтов стерлингов[9]. Это предложение было принято шотландским клубом, но О’Доннелл отклонил личные условия, предложенные в Блэкпуле, в пользу того, чтобы доиграть оставшиеся шесть месяцев своего контракта[10]. Он покинул «Партик Тисл» по истечении срока контракта в конце сезона 2014/15[11], сыграв за клуб 139 матчей[7].
«Лутон Таун»
22 июня 2015 года О’Доннелл подписал двухлетний контракт с английским клубом «Лутон Таун»[11]. Он дебютировал 11 августа в домашней игре против «Бристоль Сити» в Кубке лиги[12]. Первый гол состоялся 1 сентября в домашнем матче против «Лейтон Ориента» в розыгрыше Кубке футбольной лиги[13]. Он закончил сезон 2015/16, сыграв 33 матча и забив один гол[14]. О’Доннелл покинул клуб, когда его контракт истёк в конце сезона 2016/17[15].
«Килмарнок»
4 июля 2017 года О’Доннелл подписал трёхлетний контракт с клубом «Килмарнок»[16]. После назначения Стива Кларка главным тренером «Килмарнока» О’Доннелл показал хорошие результаты и в мае 2018 года получил вызов в национальную сборную Шотландии. В августе 2019 года шотландский клуб предложил О’Доннеллу новый трёхлетний контракт[17]. В январе 2020 года «Оксфорд Юнайтед» сделал предложение О’Доннеллу[18], но сделка не была завершена до закрытия трансферного окна. Он отклонил новый контракт с «Килмарноком» в конце сезона 2019/20[19].
«Мотеруэлл»
13 августа 2020 года «Мотеруэлл» объявил о подписании О’Доннелла[20]. 1 февраля 2021 года до конца сезона он согласовал новый контракт с «Мотеруэллом»[21]. 13 апреля О’Доннелл подписал новый двухлетний контракт с клубом[22].
О’Доннелл попал в состав сборной Шотландии на чемпионат Европы 2020 и сыграл во всех трёх матчах групповой стадии на турнире[26]. Его выступление в первом матче против Чехии подверглось критике, но затем похвалу после нулевой ничьи с Англией во второй игре[26].