Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Sampdoria | 2025/26 – 2026/27 | 39 | 5 | 0 |
| Empoli | 2019/20 – 2024/25 | 126 | 3 | 14 |
| Palermo | 2023/24 | 31 | 1 | 4 |
| Lecce | 2020/21 | 42 | 4 | 7 |
| Scotland U21 | 2017 – 2019 | 7 | 0 | — |
| Verona | 2018/19 – 2019/20 | 36 | 3 | — |
| Celtic | 2013/14 – 2017/18 | 38 | 3 | — |
| Bari | 2017/18 | 19 | 2 | — |
| Hibernian | 2015/16 – 2016/17 | 44 | 5 | — |
| Scotland U19 | 2014 – 2015 | 10 | 3 | — |
| Rosenborg | 2015/16 | 11 | 3 | — |
| Celtic U19 | 2013 | 6 | 2 | — |
| Scotland U17 | 2013 | 3 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 Jul 2024 | Palermo | Empoli | — |
| 28 Aug 2023 | Empoli | Palermo | Loan |
| 11 Aug 2021 | Lecce | Empoli | € 1.5M |
| 11 Sept 2020 | Verona | Lecce | — |
| 17 Jan 2020 | Verona | Empoli | Loan |
| 3 Aug 2018 | Bari | Verona | Free |
| 17 Jan 2018 | Celtic | Bari | — |
| 14 Aug 2015 | Celtic | Hibernian | Loan |
| 25 Jun 2015 | Rosenborg | Celtic | — |
| 2 Apr 2015 | Celtic | Rosenborg | Loan |
| 7 Aug 2025 | Empoli | Sampdoria | Free Transfer |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | Coppa Italia | Sampdoria | 1 | 1 | 90 | 0 | 0 | 1 | 0 | 6.00 |
| 2026/27 | Serie B | Sampdoria | 7 | 7 | 551 | 2 | 0 | 4 | 0 | 6.56 |
| 2025/26 | Coppa Italia | Sampdoria | 1 | 1 | 99 | 1 | 0 | 0 | 0 | 7.20 |
| 2025/26 | Serie B | Sampdoria | 30 | 27 | 2217 | 2 | 0 | 12 | 0 | 6.65 |
| 2024/25 | Serie A | Empoli | 36 | 27 | 2347 | 0 | 4 | 10 | 0 | 6.74 |
| 2024/25 | Coppa Italia | Empoli | 5 | 4 | 366 | 0 | 2 | 1 | 0 | 6.78 |
| 2023/24 | Serie B | Palermo | 31 | 15 | 1227 | 1 | 4 | 3 | 0 | 6.80 |
| 2023/24 | Serie A | Empoli | 1 | 0 | 5 | 0 | — | 0 | 0 | 6.20 |
| 2023/24 | Coppa Italia | Empoli | 1 | 1 | 68 | 0 | — | 0 | 0 | — |
| 2022/23 | Serie A | Empoli | 25 | 11 | 1003 | 0 | 1 | 9 | 0 | 6.54 |
| 2022/23 | Coppa Italia | Empoli | 1 | 1 | 56 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | Friendlies Clubs | Empoli | 1 | 1 | 69 | 0 | — | 0 | 0 | — |
| 2021/22 | Serie A | Empoli | 38 | 23 | 2019 | 2 | 3 | 4 | 0 | 6.76 |
| 2021/22 | Coppa Italia | Empoli | 2 | 0 | 86 | 0 | — | 0 | 0 | 6.25 |
| 2020/21 | Serie B | Lecce | 40 | 32 | 2664 | 3 | 7 | 4 | 0 | 6.93 |
| 2020/21 | Coppa Italia | Lecce | 2 | 2 | 210 | 1 | — | 2 | 0 | — |
| 2019/20 | Serie B | Empoli | 16 | 15 | 1353 | 1 | 4 | 7 | 1 | 6.93 |
| 2019/20 | Serie A | Verona | 4 | 2 | 195 | 0 | — | 1 | 0 | 6.60 |
| 2019/20 | Coppa Italia | Verona | 1 | 1 | 120 | 0 | — | 0 | 0 | — |
| 2019/20 | Club Friendlies | Verona | 1 | 0 | 22 | 0 | — | 0 | 0 | — |
| 2018/19 | Serie B | Verona | 28 | 22 | 1848 | 3 | — | 2 | 0 | — |
| 2018/19 | Coppa Italia | Verona | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2017/18 | Serie B | Bari | 19 | 18 | 1471 | 2 | — | 5 | 1 | — |
| 2017/18 | Premiership | Celtic | 1 | 0 | 23 | 0 | — | 0 | 0 | — |
| 2017/18 | Premier League International Cup | 3 | 3 | 270 | 0 | — | 1 | 0 | — | |
| 2017 | UEFA U21 Championship | Scotland U21 | 7 | 6 | 536 | 0 | — | 1 | 0 | — |
| 2016/17 | Premiership | Celtic | 10 | 5 | 464 | 1 | — | 1 | 0 | — |
| 2016/17 | League Cup | Celtic | 1 | 0 | 17 | 0 | — | 0 | 0 | — |
| 2016/17 | Scottish Cup | Celtic | 1 | 1 | 66 | 0 | — | 0 | 0 | — |
| 2016/17 | UEFA Champions League | Celtic | 1 | 0 | 5 | 0 | — | 0 | 0 | 6.70 |
| 2016/17 | International Champions Cup | Celtic | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2015/16 | Championship | Hibernian | 32 | 27 | 2433 | 5 | — | 8 | 0 | — |
| 2015/16 | Premiership | Celtic | 1 | 0 | 2 | 0 | — | 0 | 0 | — |
| 2015/16 | Eliteserien | Rosenborg | 9 | 0 | 116 | 3 | — | 0 | 0 | — |
| 2015/16 | Scottish Cup | Hibernian | 7 | 5 | 494 | 0 | — | 0 | 0 | — |
| 2015/16 | League Cup | Hibernian | 5 | 5 | 422 | 0 | — | 1 | 0 | — |
| 2015/16 | NM Cupen | Rosenborg | 2 | 2 | 141 | 0 | — | 0 | 0 | — |
| 2015 | UEFA U19 Championship | Scotland U19 | 5 | 5 | 449 | 3 | — | 2 | 0 | — |
| 2014/15 | Premiership | Celtic | 9 | 4 | 419 | 1 | — | 0 | 0 | — |
| 2014/15 | League Cup | Celtic | 1 | 0 | 8 | 0 | — | 0 | 0 | — |
| 2014/15 | Scottish Cup | Celtic | 1 | 0 | 10 | 0 | — | 0 | 0 | — |
| 2014/15 | UEFA Europa League | Celtic | 2 | 0 | 42 | 0 | — | 1 | 0 | — |
| 2014/15 | UEFA Champions League | Celtic | 1 | 0 | 18 | 0 | — | 0 | 0 | — |
| 2014 | UEFA U19 Championship | Scotland U19 | 5 | 5 | 431 | 0 | — | 0 | 0 | — |
| 2013/14 | Premiership | Celtic | 8 | 4 | 354 | 1 | — | 1 | 0 | — |
| 2013 | UEFA Youth League | Celtic U19 | 6 | 6 | 540 | 2 | — | 1 | 0 | — |
| 2013 | UEFA U17 Championship | Scotland U17 | 3 | 3 | 215 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Suspended | 28 Apr 2025 | 5 May 2025 | 7 |
| Suspended | 9 Dec 2024 | 14 Dec 2024 | 5 |
Trophies
| Competition | Season | Place |
|---|---|---|
| Premiership (Scotland) | 2016/2017 | Winner |
| Premiership (Scotland) | 2013/2014 | Winner |
| League Cup (Scotland) | 2017 | Winner |
| League Cup (Scotland) | 2016 | Winner |
| League Cup (Scotland) | 2014/2015 | Winner |
| League Cup (Scotland) | 2015/2016 | 2nd Place |
| Scottish Cup (Scotland) | 2016/2017 | Winner |
| Scottish Cup (Scotland) | 2015/2016 | Winner |
