Interactive Guide: Dong Hoi Airport Arrival
https://cdn.tailwindcss.com
body {
font-family: ‘Inter’, sans-serif;
background-color: #F8F7F4;
color: #333;
}
.tab-active {
background-color: #4D8A8A;
color: #FFFFFF;
font-weight: 700;
}
.tab-inactive {
background-color: #E0E0E0;
color: #333;
}
.process-step {
display: flex;
align-items: center;
position: relative;
padding-bottom: 2.5rem;
}
.process-step:not(:last-child)::after {
content: ”;
position: absolute;
left: 1.25rem;
top: 2.5rem;
bottom: 0;
width: 2px;
background-color: #4D8A8A;
height: calc(100% – 1.25rem);
}
.process-icon {
width: 2.5rem;
height: 2.5rem;
border-radius: 9999px;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
z-index: 10;
}
.accordion-content {
max-height: 0;
overflow: hidden;
transition: max-height 0.5s ease-in-out;
}
.wait-time-bar {
transition: width 1s ease-in-out;
width: 0%;
}
Skip the Queue at Dong Hoi Airport
Transform your arrival experience from a long wait into a VIP welcome. See how the Fast Track service redefines your first hour in Vietnam.
Arrival Process Showdown
Compare the standard journey with the seamless Fast Track experience.
π© Standard Arrival
π Fast Track Arrival
Why Choose the Fast Track Service?
β±οΈ
Reclaim Your Time
Swap a 1-2 hour queue for a 5-minute breeze. More time for your vacation, less time waiting.
π§
Enjoy Zero Stress
A friendly expert navigates confusing procedures and language barriers for you. A truly seamless arrival.
π¨βπ©βπ§βπ¦
Total Convenience
Ideal for families with tired children, business travelers, or anyone who values a smooth start.
Book With Absolute Confidence
Your Pre-Flight Checklist
Ensure your passport is valid for at least 6 months beyond your entry date and has at least two blank pages. This is non-negotiable and checked by airlines before boarding.
E-Visa: Recommended for most travelers. Ensure you have a printed copy.
Visa-Free: Check if your nationality qualifies for a 14 to 45-day stay. For the most up-to-date and detailed list of visa-exempt countries and specific conditions, it is highly recommended to visit the official information page .
Visa on Arrival (VOA): You MUST have a pre-approved Visa Approval Letter. This is not available on arrival without pre-approval.
Have your hotel booking confirmation and proof of onward/return travel accessible (digital or print). Immigration officials may ask for them.
Be aware of duty-free limits (tobacco, alcohol) and declare currency over $5,000 USD. Do not bring prohibited items like narcotics, weapons, or anti-government materials.
Ready for a VIP Welcome?
Book the Immigration Fast Track service now in three simple steps and make your arrival at Dong Hoi Airport effortless.
Book Your Fast Track Service Now
Need a Visa? Let the Experts Handle It.
For a guaranteed smooth process for your E-visa or Visa on Arrival, let our experts manage your application.
β Simple, hassle-free application form.
β Fast turnaround with expert review to prevent errors.
β 100% success rate or your money back.
document.addEventListener(‘DOMContentLoaded’, function() {
const btnStandard = document.getElementById(‘btn-standard’);
const btnFasttrack = document.getElementById(‘btn-fasttrack’);
const processContent = document.getElementById(‘process-content’);
const data = {
standard: {
evisa: {
title: ‘E-Visa / Visa-Free’,
waitTime: ’30-60+ Mins’,
waitPercent: ‘80%’,
steps: [
{ icon: ‘βοΈ’, text: ‘Disembark Plane’ },
{ icon: ‘πΆ’, text: ‘Walk to Immigration Hall’ },
{ icon: ‘π’, text: ‘Queue at Immigration Checkpoint’ },
{ icon: ‘π’, text: ‘Present Passport & E-Visa’ },
{ icon: ‘π’, text: ‘Baggage Claim’ },
{ icon: ‘β
’, text: ‘Customs Check’ },
]
},
voa: {
title: ‘Visa on Arrival’,
waitTime: ’45-60 mins’,
waitPercent: ‘60%’,
steps: [
{ icon: ‘βοΈ’, text: ‘Disembark Plane’ },
{ icon: ‘π’, text: ‘Find VOA Counter & Submit Documents’ },
{ icon: ‘π’, text: ‘Wait for VOA Processing’ },
{ icon: ‘π΅’, text: ‘Pay Stamping Fee (Cash ONLY)’ },
{ icon: ‘π’, text: ‘Queue at Immigration Checkpoint’ },
{ icon: ‘π’, text: ‘Present Passport & New Visa’ },
{ icon: ‘π’, text: ‘Baggage Claim’ },
{ icon: ‘β
’, text: ‘Customs Check’ },
]
}
},
fasttrack: {
evisa: {
title: ‘E-Visa / Visa-Free’,
waitTime: ‘5-10 Mins’,
waitPercent: ‘10%’,
steps: [
{ icon: ‘π€’, text: ‘Met by Agent at Arrival Gate’ },
{ icon: ‘π’, text: ‘Escorted to Priority Immigration Lane’ },
{ icon: ‘π’, text: ‘Swift Passport Stamp’ },
{ icon: ‘π’, text: ‘Baggage Claim’ },
{ icon: ‘β
’, text: ‘Customs Check’ },
]
},
voa: {
title: ‘Visa on Arrival’,
waitTime: ’10-15 Mins’,
waitPercent: ‘15%’,
steps: [
{ icon: ‘π€’, text: ‘Met by Agent at Arrival Gate’ },
{ icon: ‘π§’, text: ‘Relax while Agent Handles ALL VOA Paperwork’ },
{ icon: ‘π’, text: ‘Escorted to Priority Immigration Lane’ },
{ icon: ‘π’, text: ‘Swift Passport Stamp’ },
{ icon: ‘π’, text: ‘Baggage Claim’ },
{ icon: ‘β
’, text: ‘Customs Check’ },
]
}
}
};
function createProcessHTML(processType, visaType) {
const processData = data[processType][visaType];
const stepsHTML = processData.steps.map(step => `
${step.icon}
${step.text}
`).join(”);
return `
${processData.title}
${stepsHTML}
`;
}
function renderContent(processType) {
const flowchartHTML = `
${createProcessHTML(processType, ‘evisa’)}
${createProcessHTML(processType, ‘voa’)}
`;
const visualizerHTML = `
Estimated Wait Time Comparison (Visa on Arrival)
Standard Arrival
${data.standard.voa.waitTime}
Fast Track Arrival
${data.fasttrack.voa.waitTime}
`;
processContent.innerHTML = flowchartHTML + visualizerHTML;
observeWaitTimeBars();
}
function setActiveButton(activeBtn) {
[btnStandard, btnFasttrack].forEach(btn => {
btn.classList.remove(‘tab-active’, ‘tab-inactive’);
if (btn === activeBtn) {
btn.classList.add(‘tab-active’);
} else {
btn.classList.add(‘tab-inactive’);
}
});
}
btnStandard.addEventListener(‘click’, () => {
setActiveButton(btnStandard);
renderContent(‘standard’);
});
btnFasttrack.addEventListener(‘click’, () => {
setActiveButton(btnFasttrack);
renderContent(‘fasttrack’);
});
const accordions = document.querySelectorAll(‘.accordion-item’);
accordions.forEach(item => {
const header = item.querySelector(‘.accordion-header’);
const content = item.querySelector(‘.accordion-content’);
const icon = item.querySelector(‘.accordion-icon’);
header.addEventListener(‘click’, () => {
const isOpen = content.style.maxHeight && content.style.maxHeight !== ‘0px’;
accordions.forEach(otherItem => {
if (otherItem !== item) {
const otherContent = otherItem.querySelector(‘.accordion-content’);
const otherIcon = otherItem.querySelector(‘.accordion-icon’);
otherContent.style.maxHeight = ‘0px’;
otherIcon.classList.remove(‘rotate-45’);
}
});
if (!isOpen) {
content.style.maxHeight = content.scrollHeight + ‘px’;
icon.classList.add(‘rotate-45’);
} else {
content.style.maxHeight = ‘0px’;
icon.classList.remove(‘rotate-45’);
}
});
});
function observeWaitTimeBars() {
const visualizer = document.getElementById(‘wait-time-visualizer’);
if (!visualizer) return;
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const bars = entry.target.querySelectorAll(‘.wait-time-bar’);
bars.forEach(bar => {
bar.style.width = bar.dataset.width;
});
observer.unobserve(entry.target);
}
});
}, { threshold: 0.5 });
observer.observe(visualizer);
}
renderContent(‘standard’);
});