ITALIA

Athari Italy · Bespoke Italy Travel

Your Dream Italy
Trip Starts Here

Answer a few questions about your vision and we'll design a completely bespoke Italian journey — crafted around your passions, travel style, and the moments that matter most to you.

5 minutes
🎯Fully personalized
✈️No commitment required
Step 1 of 12
Question 01 — The Spark

Why Italy?

What's drawing you there? Select anything that resonates, then tell us more in your own words.

Skip
Question 02 — Your Travel Party

Who's joining you on this adventure?

Select all that apply, then add any details about your group below.

Skip
Question 03 — When Are You Going?

Do you have dates in mind?

Even a rough idea helps us think about seasonal highlights, crowds, and availability.

How long will you be in Italy?

⚠️ Not including flying days — allow an extra day each way if travelling from the US

Or dial in an exact number of days:

1 day
10 days in Italy
60 days
Skip
Question 04 — Where in Italy?

Any cities or regions calling your name?

Select the ones that excite you — don't worry about logistics, that's our job.

Skip
Question 05 — Where You'll Rest Your Head

What kind of accommodations feel like you?

Select everything that resonates — mix and match is fine.

Skip
Question 06 — Your Pace

How do you like your days to feel?

There's no wrong answer — this shapes everything from your itinerary structure to your hotel choices.

Question 07 — How You Like to Explore

Private tours, group tours, or on your own?

This is one of the biggest decisions in how your days are structured — select all that appeal to you.

Skip
Question 08 — Getting Around

How would you like to move between places?

Each option creates a very different experience of Italy — select everything you're open to.

Skip
Question 09 — What Excites You

Rate what matters to you in Italy

Feel free to love them all — it's Italy, after all.

🛍Shopping
🏛History & Tours
🍝Food
🍷Wine
👨‍🍳Cooking Lessons
🎨Art & Museums
☀️Relaxation
Churches
🏟Major Attractions

★★★★★ = Essential  ·  ★ = Rather skip it

Skip
Question 10 — Must-Haves & Must-Nots

Any bucket list moments? Anything to leave out?

A specific site, experience, region, restaurant — anything you've dreamed about or want to skip entirely.

Skip
Question 11 — The Dream

"It was an amazing trip because we were able to..."

Finish the sentence. Imagine you're back home a week after returning. What made it unforgettable?

Skip
Question 12 — Your Travel History

Tell us about your best — and worst — past trips

This helps us understand exactly what to replicate and what to avoid.

Skip
Question 13 — Investment

What's your approximate budget per person?

This is just a general guideline — every trip we design is fully customizable and we'll work with you to find the perfect balance as we go. Excludes international airfare.

💡 Don't worry if you're not sure — budget is just a starting point. We'll tailor every recommendation to what works best for you once we speak.

Skip
Question 14 — Who You Are

What do you love doing when you're not travelling?

Hobbies, passions, professions — the best trips are extensions of who you are.

Skip
Question 15 — Final Thoughts

Anything else we should know?

Physical restrictions, dietary needs, things you've researched, or anything that didn't fit above. This is the catch-all.

Your Personalized Italy Profile

Here's the trip we see
taking shape for you

Crafting your Italy story...
Analyzing your answers

Does this capture what you're looking for?
Almost There

Let's Start Planning
Your Italy

Share your details and one of our Italy specialists will reach out to begin designing your bespoke itinerary — no commitment required.

🔒Your info stays private
📞We'll call within 1 business day
🚫No spam, ever
🇮🇹

Your Italy
Awaits

We've received your trip profile and one of our Italy specialists will be in touch within one business day to begin crafting your itinerary. In the meantime, get excited — this is going to be a trip you'll be talking about for years.

01
We review your full profile and begin researching
02
A specialist calls to dive deeper and answer questions
03
We present your custom itinerary — built just for you

Want to learn more about how we work?

Visit athariitaly.com
// ===== CHAT SYSTEM ===== const chatHistory = []; let chatState = 'opening'; // opening | chatting | capturing | done function buildChatContext() { const a = answers; const parts = []; if (a.q1_why && a.q1_why.length) parts.push('Motivation: ' + a.q1_why.join(', ')); if (a.q1_detail) parts.push('In their words: ' + a.q1_detail); if (a.q2 && a.q2.length) parts.push('Travel party: ' + a.q2.join(', ')); if (a.q2_detail) parts.push('Group details: ' + a.q2_detail); if (a.q3_dates) parts.push('Travel dates: ' + a.q3_dates); if (a.q3_date_detail) parts.push('Date details: ' + a.q3_date_detail); if (a.q3_dur) parts.push('Trip length: ' + a.q3_dur); if (a.q4_dest && a.q4_dest.length) parts.push('Destinations: ' + a.q4_dest.join(', ')); if (a.q5_acc && a.q5_acc.length) parts.push('Accommodation style: ' + a.q5_acc.join(', ')); if (a.q11_dream) parts.push('Dream outcome: ' + a.q11_dream); if (a.q13_budget) parts.push('Budget: ' + a.q13_budget); return parts.join('\n'); } async function initChat() { chatState = 'opening'; chatHistory.length = 0; const name = typeof window.quizFirstName === 'string' && window.quizFirstName.trim() ? window.quizFirstName.trim() : null; // Build a personalised first line based on quiz answers const a = answers; const parts = []; if (a.q4_dest && a.q4_dest.length) parts.push(a.q4_dest.slice(0,2).join(' and ')); if (a.q2 && a.q2.length) parts.push(a.q2[0].toLowerCase()); if (a.q3_dates && a.q3_date_detail) parts.push(a.q3_date_detail); else if (a.q3_dur) parts.push('for ' + a.q3_dur); let personalLine = ''; if (parts.length >= 2) { personalLine = (name ? name + ', a ' : 'A ') + parts[1] + ' trip' + (parts[0] ? ' to ' + parts[0] : '') + (parts[2] ? ', ' + parts[2] : '') + ' sounds wonderful!'; } else { personalLine = (name ? name + ', your' : 'Your') + ' Italy trip profile looks wonderful!'; } const openingMessage = personalLine + '\n\nEvery trip we design at Athari Italy is custom-designed by one of our Italy Travel Specialists. There\'s no commitment required and you don\'t pay anything until you receive the perfect itinerary.\n\nWe\'re just about ready to get started on yours, but there\'s one small step left. Just a quick 15-minute call with one of our Specialists to make sure we have all the details we need to build something truly perfect for you.\n\nWe\'re flexible and can set up a time at your convenience. How does that sound?'; showTyping(); await delay(1200); hideTyping(); addAIMessage(openingMessage); showQuickReplies([ { label: '✅ Sure, let\'s get started', action: 'ready' }, { label: '🤔 I\'m not ready yet', action: 'notready' } ]); chatState = 'chatting'; } function delay(ms) { return new Promise(r => setTimeout(r, ms)); } function showQuickReplies(buttons) { const msgs = document.getElementById('chat-messages'); const wrap = document.createElement('div'); wrap.className = 'chat-quick-replies'; wrap.id = 'quick-replies'; buttons.forEach(btn => { const b = document.createElement('button'); b.className = 'chat-quick-btn'; b.textContent = btn.label; b.onclick = () => handleQuickReply(btn.action, btn.label); wrap.appendChild(b); }); msgs.appendChild(wrap); msgs.scrollTop = msgs.scrollHeight; } function removeQuickReplies() { const qr = document.getElementById('quick-replies'); if (qr) qr.remove(); } async function handleQuickReply(action, label) { removeQuickReplies(); addUserMessage(label.replace(/^[✅🤔]\s+/, '')); if (action === 'ready') { showTyping(); await delay(800); hideTyping(); addAIMessage("That's great to hear! Share your name and email below and we'll show you the available times."); showCaptureForm('book'); chatState = 'capturing'; } else if (action === 'notready') { showTyping(); await delay(1000); hideTyping(); addAIMessage("That's completely fine — we understand you might not be quite ready yet.\n\nEven with the information we already have, our specialists can put together a personalised itinerary that gets us 90% of the way there. We'll email it to you with no obligation, and you can decide where you'd like to take it from there.\n\nJust share your name and email below and we'll get started on it for you."); showCaptureForm('email'); chatState = 'capturing'; } } async function sendChatMessage() { const input = document.getElementById('chatInput'); const msg = input.value.trim(); if (!msg) return; input.value = ''; addUserMessage(msg); chatHistory.push({ role: 'user', content: msg }); const context = buildChatContext(); const name = typeof window.quizFirstName === 'string' && window.quizFirstName.trim() ? window.quizFirstName.trim() : null; const systemPrompt = `You are a warm, professional booking assistant for Athari Italy, a bespoke Italy travel company. Your ONLY goal is to get the user to either book a 15-minute call or provide their email for a personalised itinerary. QUIZ ANSWERS FROM THIS CLIENT: ${context} YOUR RULES: 1. Always steer toward booking the call or getting their email. Do not answer detailed Italy questions. 2. If they ask Italy questions, acknowledge briefly and redirect: "That's exactly what our specialist will cover — they'll have specific recommendations based on your profile." 3. Keep messages short — 2-4 sentences maximum. 4. End every response with either: SHOW_BOOK_BUTTONS (if they seem ready to proceed) or SHOW_EMAIL_BUTTONS (if they seem hesitant). Always end with one of these — never leave the user without an option. 5. Be warm and human. Use the client's first name if you know it. The client's first name is: ${name || 'unknown'}.`; showTyping(); try { const response = await fetch(API_PROXY_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'claude-sonnet-4-20250514', max_tokens: 300, system: systemPrompt, messages: chatHistory }) }); const data = await response.json(); let text = data.content.map(i => i.text || '').join('').trim(); hideTyping(); if (text.includes('SHOW_BOOK_BUTTONS')) { text = text.replace('SHOW_BOOK_BUTTONS', '').trim(); chatHistory.push({ role: 'assistant', content: text }); addAIMessage(text); showQuickReplies([ { label: '✅ Sure, let\'s get started', action: 'ready' }, { label: '🤔 I\'m not ready yet', action: 'notready' } ]); } else if (text.includes('SHOW_EMAIL_BUTTONS')) { text = text.replace('SHOW_EMAIL_BUTTONS', '').trim(); chatHistory.push({ role: 'assistant', content: text }); addAIMessage(text); showQuickReplies([ { label: '📧 Send me the itinerary by email', action: 'notready' }, { label: '📞 Actually, let\'s book a call', action: 'ready' } ]); } else { chatHistory.push({ role: 'assistant', content: text }); addAIMessage(text); showQuickReplies([ { label: '✅ Sure, let\'s get started', action: 'ready' }, { label: '🤔 I\'m not ready yet', action: 'notready' } ]); } } catch(err) { hideTyping(); addAIMessage("I'd love to help you take the next step. Would you like to book a quick call with Dean, or would you prefer we send you a personalised itinerary by email?"); showQuickReplies([ { label: '✅ Book a call', action: 'ready' }, { label: '📧 Send me the itinerary', action: 'notready' } ]); } } function submitChatDetails() { const name = document.getElementById('chatName').value.trim(); const email = document.getElementById('chatEmail').value.trim(); if (!name || !email) { alert('Please enter your name and email to continue.'); return; } // Prevent multiple submissions const btn = document.querySelector('#chat-capture-form button'); if (btn.disabled) return; btn.disabled = true; btn.textContent = 'Please wait...'; btn.style.opacity = '0.6'; btn.style.cursor = 'default'; window.chatLeadName = name; window.chatLeadEmail = email; const form = document.getElementById('chat-capture-form'); const mode = form.dataset.mode || 'book'; // Send lead to Zapier submitChatLead(name, email, mode); // Fire conversion tracking gtag_report_conversion(); trackEvent('lead_submitted', { name: name }); if (mode === 'email') { // Email path — show thank you message in chat, then transition to thanks screen document.getElementById('chat-capture-form').style.display = 'none'; addAIMessage("Perfect, thank you " + name.split(' ')[0] + "! One of our Italy specialists will put together your personalised itinerary and email it to " + email + " within one business day. We can't wait to show you what we have in mind."); setTimeout(() => { document.getElementById('lead-screen').style.display = 'none'; document.getElementById('thanks-screen').style.display = 'flex'; window.scrollTo(0, 0); }, 3000); } else { // Book path — build Calendly URL with pre-filled name and email const calendlyBase = 'https://calendly.com/athari/15min'; const params = new URLSearchParams({ background_color: '1c1a16', text_color: 'f2ede4', primary_color: 'c9a84c', hide_gdpr_banner: '1', name: name, email: email }); const calendlyUrl = calendlyBase + '?' + params.toString(); // Show Calendly using direct iframe — most reliable approach const wrap = document.getElementById('calendly-widget-wrap'); wrap.innerHTML = ''; document.getElementById('chat-container').style.display = 'none'; document.getElementById('calendly-container').style.display = 'block'; window.scrollTo(0, 0); } } async function submitChatLead(name, email, mode) { const a = answers; const lines = []; lines.push('=============='); lines.push('NEW ATHARI ITALY LEAD'); lines.push('=============='); lines.push(''); lines.push('CONTACT'); lines.push('-------'); lines.push('Name: ' + name); lines.push('Email: ' + email); lines.push('Phone: Not provided'); lines.push(''); lines.push('NOTE: Lead came via the AI chat flow. Path chosen: ' + (mode === 'email' ? 'Email itinerary (no call booked)' : 'Booked a call via Calendly') + '.'); lines.push(''); lines.push('TRIP OVERVIEW'); lines.push('-------------'); if (a.q1_why && a.q1_why.length) lines.push('Why Italy: ' + a.q1_why.join(', ')); if (a.q1_detail) lines.push('In their own words: ' + a.q1_detail); lines.push('Travelling with: ' + (a.q2 && a.q2.length ? a.q2.join(', ') : 'Not specified')); if (a.q2_detail) lines.push('Group details: ' + a.q2_detail); lines.push('Travel dates: ' + (a.q3_dates || 'Not specified')); if (a.q3_date_detail) lines.push('Date details: ' + a.q3_date_detail); lines.push('Trip length: ' + (a.q3_dur || 'Not specified')); lines.push('Destinations: ' + (a.q4_dest && a.q4_dest.length ? a.q4_dest.join(', ') : 'Not specified')); if (a.q4_dest_detail) lines.push('Notes: ' + a.q4_dest_detail); lines.push(''); lines.push('Accommodation: ' + (a.q5_acc && a.q5_acc.length ? a.q5_acc.join(', ') : 'Not specified')); if (a.q5_acc_detail) lines.push('Notes: ' + a.q5_acc_detail); lines.push('Pace: ' + (a.q6_pace || 'Not specified')); lines.push('Getting around: ' + (a.q8_transport && a.q8_transport.length ? a.q8_transport.join(', ') : 'Not specified')); lines.push('Budget: ' + (a.q13_budget || 'Not specified')); if (a.q11_dream) { lines.push(''); lines.push('Dream moment:'); lines.push(a.q11_dream); } if (a.q12_best) { lines.push(''); lines.push('Best past trip:'); lines.push(a.q12_best); } if (a.q12_worst) { lines.push(''); lines.push('Past frustrations:'); lines.push(a.q12_worst); } if (a.q15_other) { lines.push(''); lines.push('Additional notes:'); lines.push(a.q15_other); } lines.push(''); lines.push('=============='); lines.push('AI-GENERATED TRIP SUMMARY (shown to client)'); lines.push('=============='); lines.push(''); lines.push('Trip name: ' + (document.getElementById('tripName').textContent || '—')); lines.push(''); lines.push(document.getElementById('tripDescription').innerText || '—'); const fullBody = lines.join('\r\n'); try { await fetch('https://hooks.zapier.com/hooks/catch/268505/upza1e5/', { method: 'POST', body: JSON.stringify({ name: name, email: email, phone: 'Not provided', subject: 'Athari Italy — New Lead: ' + name, body: fullBody }) }); } catch(err) { console.warn('Lead submission failed:', err); } } // ===== CHAT UI HELPERS ===== function addAIMessage(text) { const msgs = document.getElementById('chat-messages'); const div = document.createElement('div'); div.className = 'chat-bubble-ai'; div.textContent = text; msgs.appendChild(div); msgs.scrollTop = msgs.scrollHeight; } function addUserMessage(text) { const msgs = document.getElementById('chat-messages'); const div = document.createElement('div'); div.className = 'chat-bubble-user'; div.textContent = text; msgs.appendChild(div); msgs.scrollTop = msgs.scrollHeight; } function showTyping() { document.getElementById('chat-typing').style.display = 'block'; const msgs = document.getElementById('chat-messages'); msgs.scrollTop = msgs.scrollHeight; } function hideTyping() { document.getElementById('chat-typing').style.display = 'none'; } function showChatInput() { document.getElementById('chat-input-wrap').style.display = 'block'; setTimeout(() => document.getElementById('chatInput').focus(), 100); } function hideChatInput() { document.getElementById('chat-input-wrap').style.display = 'none'; } function showCaptureForm(mode) { hideChatInput(); const form = document.getElementById('chat-capture-form'); form.style.display = 'flex'; // Update button text based on mode const btn = form.querySelector('button'); if (mode === 'email') { btn.textContent = 'Send Me My Itinerary →'; form.dataset.mode = 'email'; } else { btn.textContent = 'Show Me Available Times →'; form.dataset.mode = 'book'; } // Pre-fill name if we have it from the quiz const firstName = typeof window.quizFirstName === 'string' && window.quizFirstName.trim() ? window.quizFirstName.trim() : null; if (firstName) { document.getElementById('chatName').value = firstName; document.getElementById('chatName').placeholder = firstName + ' — add your last name'; } setTimeout(() => { const nameField = document.getElementById('chatName'); if (!nameField.value) nameField.focus(); else document.getElementById('chatEmail').focus(); }, 100); }