Зак родился 12 декабря 1994 года в Пинсоне, штат Алабама, в семье Фреда и Софи Каннингемов. Кроме него в семье ещё четверо сыновей и две дочери. Во время учёбы в школе он занимался лёгкой атлетикой, играл в баскетбол. За футбольную команду школы Каннингем выступал в течение трёх лет, был капитаном команды. По итогам сезона 2012 года Зак был признан Линейным нападения года по версии газеты Birmingham News[1].
В 2013 году Каннингем поступил в Университет Вандербильта в Нашвилле. Во время учёбы на первом курсе он не играл за университетскую команду, тренируясь с запасными игроками защиты и работая над физической готовностью. В сезоне 2014 года Зак принял участие в одиннадцати играх «Вандербильт Коммодорс», сделав 67 захватов и 1,5 сэка. Последние пять игр он провёл в стартовом составе на позиции внутреннего лайнбекера в схеме 3—4[1].
В 2015 году он принял участие в двенадцати играх, девять из которых провёл в стартовом составе. По итогам чемпионата Зак вошёл в символическую сборную конференции по опросам тренеров команд и сайта ESPN. На четвёртом курсе Каннингем провёл свой лучший сезон в студенческом футболе. Он стал лидером конференции и вошёл в число десяти лучших игроков страны по количеству захватов (125). В ноябре 2016 года Зак вошёл в число пяти финалистов Приза Баткаса, вручаемого лучшим лайнбекерам школьного, студенческого и профессионального футбола. Он также стал первым игроком в истории университета, вошедшим в символическую сборную национального чемпионата с набранными 100 % голосов[1].
Перед драфтом НФЛ 2017 года сильными сторонами Каннингема называли его реакцию, способность захватывать игроков соперника за линией розыгрыша за счёт выбора позиции, его устойчивость к травмам. Отдельно выделяли способность Зака играть в персональном прикрытии против раннинбеков и тайт-эндов соперника за счёт атлетизма и понимания игры. Минусами называли относительно слабые ноги, из-за чего он не всегда мог сохранять равновесие после контакта с соперником, и склонность атаковать игрока с мячом снизу вверх, позволяя оппоненту уходить от захвата[2]. На драфте он был выбран клубом «Хьюстон Тексанс» во втором раунде под общим 57 номером[3].
В дебютном для себя сезоне Каннингем отыграл 816 снэпов в защите, сделав 90 захватов и 1,5 сэка. Он успешно заменил ветерана команды Брайана Кушинга, пропустившего десять игр чемпионата из-за дисквалификации за применение запрещённых препаратов. В 2016 году «Тексанс» позволяли сопернику набирать в среднем 41,6 ярда за счёт пасов на раннинбеков, а с приходом Зака этот показатель снизился до 32,1 ярда. Каннингем испытывал проблемы с блокирующими линии нападения соперника и лучшие свои качества проявлял, получая возможность играть по мячу[4].