Vigovia

Sales Central

My Day
Home
Leads
Scorecard
Quotes
Trips
Rates
Sales Central

Welcome to Sales Central

You are
Showing
Saved quotes
Updated this week
Sent this week
Client opens

Recent quotes

Loading…

Start a quote — pick a destination

My Day

Your queue, your follow-ups, your collections — in priority order.

🔥 My queue
📤 Awaiting reply
💰 Collections due

Leads

Every inquiry — captured, scored, and one click from a quote.

Agent scorecard

Every rep, every day — a weighted score against the pass mark. New leads, contacts, quotes sent, bookings won.

Trip setup

Cities, nights & transfers

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).

Pre-built trips

Ready-made itineraries by country

Pick a trip, set the dates, keep or swap the default hotels — a quote in under a minute.

Live rates

Rate desk

Search a live rate for one hotel, flight or activity — then share a single-item quote by text, link, WhatsApp or email.

Owner only · utkarsh@vigovia.com

Integrations

Keys are stored server-side only — values are never shown or sent back; enter a new value to set or rotate. Follow the steps under each card to activate an integration when you're ready.

Configuration status

Loading…

API keys

UPI payments (no gateway)

Feed your merchant UPI ID here — every quote & booking then shows a scan-to-pay QR + link.

Connect TeleCRM & fetch stages

Point TeleCRM's webhook here, fire a test, then import the exact stage names it sends — no guessing.

  1. Set LEAD_WEBHOOK_SECRET (in API keys above) to any random string.
  2. In TeleCRM → Automation → Webhook, add a "new lead" + "stage changed" trigger pointing at this URL (append your secret):
Connect the backend to see the URL
  1. Hit Send test in TeleCRM (or change one lead's stage), then Refresh below.
  2. Import the detected stages, set each to a status, and Save the map.

CRM status parity (TeleCRM)

Map each TeleCRM stage to a Sales Central status so a lead carries the same stage in both systems, both directions. One TeleCRM Stage = status per line. Status ∈ new · contacted · quoted · won · lost.

Setup steps

1 · Live flight & hotel search — SerpApi
  1. Create an account at serpapi.com → copy your Private API Key (Dashboard → API Key).
  2. Paste it into SERPAPI_KEY above → Set.
  3. Test: Rates tab → Hotels → search a city; live results = working.
2 · AI planner & hotel insights — Anthropic (Claude)
  1. Get a key at console.anthropic.com → API keys.
  2. Paste into ANTHROPIC_API_KEY → Set.
  3. Test: New quote → ✨ Plan with AI.
3 · UPI QR / UPI ID payments (no gateway)
  1. This one is set in Admin (gear) → Quote defaults, not here.
  2. Enter your UPI ID (VPA) + Payee name → Save.
  3. Every quote & booking then shows a scan-to-pay UPI QR + link.
4 · Zoho Invoice — gateway link, invoicing & auto-reconcile
  1. At api-console.zoho.in (use your data-centre domain) create a Self Client; note the Client ID + Client Secret.
  2. Generate a grant code with scope ZohoInvoice.fullaccess.all, then exchange it once for a refresh token (Self Client → Generate Code → token endpoint).
  3. Find your Organization ID in Zoho Invoice → Settings.
  4. Paste ZOHO_CLIENT_ID, ZOHO_CLIENT_SECRET, ZOHO_REFRESH_TOKEN, ZOHO_ORG_ID, and ZOHO_DC (in / com / eu / com.au) → Set each.
  5. Test: any quote → Convert to Booking → step 2 → Raise in Zoho (returns invoice number + pay link).
5 · Razorpay card / netbanking (optional)
  1. Only if you want a card/netbanking gateway in addition to Zoho.
  2. Razorpay Dashboard → Settings → API keys (Key ID + Secret) + a webhook secret.
  3. Paste RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET, RAZORPAY_WEBHOOK_SECRET → Set. (Ping me to wire the Razorpay flow when ready.)
6 · Email delivery — Resend
  1. At resend.com verify your sending domain + create an API key.
  2. Paste RESEND_API_KEY and set RESEND_FROM (e.g. quotes@vigovia.com) → Set.
  3. In Admin → Settings, set Email provider to Resend. (Without this, email uses Gmail — 100/day.)
7 · WhatsApp — AiSensy
  1. In AiSensy, approve a template campaign; copy the API key + campaign name.
  2. Paste AISENSY_API_KEY + AISENSY_CAMPAIGN → Set. (Else WhatsApp falls back to a wa.me link.)
8 · Operations & Finance Central hand-off
  1. Get the webhook URLs for Operations Central and Finance Central.
  2. Paste OPS_CENTRAL_URL and FINANCE_CENTRAL_URL.
  3. Share an HMAC secret with each; paste SALES_OPS_SECRET + SALES_FINANCE_SECRET → Set. (Signed, replay-proof hand-off.)
9 · Alerts — Telegram
  1. Create a bot with @BotFather → copy the token; add the bot to your ops group.
  2. Get the chat id (e.g. via @getidsbot).
  3. Paste TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID → Set.
10 · One-time backend setup (Apps Script)
  1. Open the Apps Script (backend) project → Editor.
  2. Run runSetup_ once and authorise the scopes.
  3. Enables daily Drive backups, the 5-min Ops/Finance outbox delivery, and the rotation reminder. Nothing hands off to Operations until this is run.
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)
Quote defaults — every kiosk starts a new quote from these. Reps can raise markup, not go below it.
Adds a “Pay via UPI” QR to every quote — customers scan & pay to this UPI ID. Leave blank to hide.
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.

Activity library

Manage activities

Pipeline

Where every quote stands

Loading pipeline…
Approvals

What needs your call

Loading…