Add cities in visit order. Once two are in the list, a transfer option appears between them — I only offer the modes that actually make sense for that route (e.g. no flight for a 2-hour hop).
Section 4
📸 Activities — day by day
Search live fares
Find a flight
Opens live results in a new tab — this tool doesn't hold flight inventory itself, so pull the fare you want to quote from there.
Add to quote
Manual flight entry
Once you've found a fare, log it here so it flows into the itinerary and quote total. Tip: paste a whole line like “Bangkok–Phuket, 14 Aug, 06:40–08:05, ₹4,200” into any field and it auto-splits.
Flights in this quote
Team backend
Google Sheets connection
Point this at your deployed Apps Script web app so activities and saved quotes are shared across everyone on the team, instead of living only in this browser. Leave blank to keep using local-only storage.
○ Local-only
Sales Central · access control
Team, kiosks & sessions
Reps sign in with an emailed OTP; every quote is stamped server-side with the rep's kiosk. Add people before their first login — there is no self-serve signup. Login enforcement is a switch in the backend (AUTH_REQUIRED); flip it on only after you've run authorizeScopes() and added yourself below.
Feature switches — flip on when you're ready. Changes are live immediately, no redeploy.
Require login
Enforce OTP sign-in for everyone
Phone OTP
Let reps sign in by phone (needs an SMS provider below)
Device pairing
Kiosk tablets inherit their kiosk automatically (Option A)
Step-up PIN
Ask for a PIN before Won/Lost & high-margin changes
Location anomaly flags
Flag logins far from the kiosk (never blocks)
Credentials — stored server-side, never shown back in full. Leave a secret blank to keep the existing value.
Activity loader
Add a new activity
Adds to your personal activity library, on top of the built-in Thailand sheet.
Bulk import from Excel or CSV
Upload your Thailand activity Excel (.xlsx) or a .csv export directly — same headers as the built-in sheet (Activity Name, Activity Category, Price (INR), Short Description, City, and so on). All recognised columns are captured; unrecognised ones are ignored. A simplified name/category/city/price/duration/short/family sheet also works.