Первое упоминание о Каргополе в письменных источниках относится к 1380 году. В Никоновской летописи есть упоминание о том, что каргопольский князь Глеб привёл свою дружину под знамена великого московского князя Дмитрия Донского и участвовал в Куликовской битве. Сам город Каргополь (в старинных актах Карго поле) упоминается в 1447 году, когда здесь нашёл убежище Дмитрий Юрьевич Шемяка, спасаясь от преследований великого князя Василия Тёмного. Нет сомнения, что Каргополь основан гораздо ранее конца XIV века. Берега реки Онеги, одного из путей в Поморье, были заняты новгородскими колонистами уже в XII веке, а в середине XIV века появились монастыри. По-видимому, первоначально каргопольское поселение зависело от Белозерского княжества, а в дальнейшем перешло под власть Новгородской республики. В Каргополе сохранился земляной вал, замыкавший с трёх сторон небольшой, квадратный в плане острог. Это место жители города называли «Городок», «Вал», «Валушки». Сейчас это городской квартал, обнесённый поросшей травой насыпью, из-за которой выглядывают крыши домов.
С подчинением Новгородской республики в 1478 году Московскому княжеству земли по реке Онеге до Белого моря составили Каргопольский уезд под управлением московского наместника.
Начиная с конца XV века Каргополь становится местом ссылки. Во времена Ивана III (1462—1505) сюда ссылали семьи пленных татарских ханов.
В XVI веке Каргополь был значительным торговым городом. Возведен новый острог, застроен посад. В 1506 году великий князь Иван III передал Каргополь своему сыну Василию по завещанию. В 1539 году город получил губную грамоту, представившую ему широкие права на местное самоуправление. Через Каргополь шла торговля с Поморьем солью и рыбой. Царские грамоты давали городу привилегии в торговле солью, тогда как жители Вологды и Белоозера не имели права ездить к морю и должны были покупать соль в Каргополе. Помимо соли местные купцы сплавляли лес, перекупали пушнину, поставляли железо. Окрестности города были богаты залежами железной руды.