There are no commercial flights to Vigan. The nearest airports are Laoag International Airport, about 60 kilometres to the north in Ilocos Norte, and Manila — the latter being the hub that most international travellers arrive through.
The standard way to reach Vigan from Manila is by overnight bus, and it works well. Several bus companies operate the route, with Partas and Dominion Bus Lines being the most established. Buses depart from terminals in Pasay (near the airport) and along EDSA in Cubao and Sampaloc; the journey takes nine to eleven hours depending on traffic leaving Manila. Departing in the evening, you arrive in Vigan in the early morning in time for breakfast longganisa and an uncrowded Calle Crisologo — this is the way most independent travellers do it.
From Laoag, minibuses and vans run south to Vigan in about an hour and a half. This is useful if you are combining Vigan with Pagudpud (the beach resorts in the far north of Ilocos Norte) or flying into Laoag to avoid the Manila bus journey. Flying Manila–Laoag and busing down is a reasonable option if you have limited time, though it is more expensive than the direct bus.
Vigan can also be reached from Baguio by bus (around five hours), which makes it a natural stop on a northern Luzon circuit combining the highland city with the Ilocos coast.