Skip to Content
GuidesCommerceAggregator integration (Zomato + Swiggy)

Aggregator integration (Zomato + Swiggy)

Active POS can receive Zomato and Swiggy orders alongside walk-in counter sales and dine-in tables. Orders land in a unified Aggregators tab with sound + takeover modal, and the cashier accepts with one tap.

What you get

  • Unified order tray — Pending, Preparing, Awaiting pickup lanes for both platforms
  • One-tap accept with prep-time picker (15 / 25 / 35 min)
  • Auto-accept timer when the cashier is busy — Zomato/Swiggy inaction penalties never fire
  • KOT auto-print with [ZMT-#] or [SWG-#] source prefix on the same counter printer that handles walk-in
  • Real-time menu sync when items run out at the counter
  • Tactical pause (“kitchen overwhelmed → resume in 15 min”)
  • Hours of operation — auto-pauses outside business hours
  • GST bill upload to Swiggy after pickup (FSSAI compliance)

Onboarding sequence

┌─────────────────────────────────────────────────────────────┐ │ TENANT (BAKERY OWNER) ─────────────────────────────────────│ │ 1. Active POS already configured + printer paired │ │ 2. Catalog 100% veg/non-veg classified │ │ 3. Sign Zomato + Swiggy POS-vendor contracts │ │ 4. Hand outlet IDs + signed paperwork to ops │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ AEGIS OPS ────────────────────────────────────────────────-│ │ 5. Insert encrypted credentials (admin endpoint) │ │ 6. Flip pos_aggregator_orders_enabled = true │ │ 7. Verify entitlement endpoint returns enabled=true │ │ 8. Trigger initial menu sync │ │ 9. Run sandbox webhook smoke test │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ TENANT (LIVE) ─────────────────────────────────────────────│ │ 10. Aggregators tab now visible in cashier-portal │ │ 11. First Zomato order arrives → takeover modal pops │ │ 12. Cashier accepts → KOT prints → kitchen prepares │ │ 13. Mark food ready → mark picked → bill auto-uploads │ └─────────────────────────────────────────────────────────────┘

Cashier daily flow

When the bakery opens for the day:

  1. Open pos.active-reach.ai. Top status bar shows ● Online · ● Printer ready.
  2. The Aggregators tab sits next to Counter and Tables. The badge number shows orders currently active across Zomato + Swiggy.
  3. New orders arrive via takeover modal (full-screen, sound chime, 30-second auto-accept countdown).
┌──────────────────────────────────────────────────────────────┐ │ ─── NEW ZOMATO ORDER · #ZMT-481 ───────────────── ⏱ 0:23 │ │ │ │ ₹620 · 3 items │ │ 1× Margherita Pizza Med │ │ 1× Pepperoni Pizza Med (no olives) │ │ 1× Coke 500ml │ │ │ │ R. Sharma · 2.4 km · Zomato Logistics │ │ │ │ ┌─ ACCEPT — Prep ready in ◯15 ●25 ◯35 min ──────────┐ │ │ │ │ │ │ │ [✓ Accept order · 25 min prep] │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ [Reject ▾] │ │ ⓘ Auto-accepting in 0:07 with default 25 min │ └──────────────────────────────────────────────────────────────┘
  1. After accept: KOT prints automatically with platform-prefix:
┌────────────────────────────┐ │ *** KOT #481 *** │ │ Counter 1 · 14:32 │ │ Source: ZMT delivery │ │ ────────────────────────── │ │ [ZMT #481] │ │ Margherita Pizza × 1 │ │ Pepperoni Pizza × 1 │ │ no olives │ │ Coke 500ml × 1 │ │ ────────────────────────── │ │ FIRE: NOW │ │ ✂ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ └────────────────────────────┘
  1. When food is ready, tap Mark food ready on the Aggregators card. Status pushes to the platform; rider is notified.

  2. When the rider picks up, tap Mark picked. For Swiggy, the GST bill auto-uploads at this step (FSSAI compliance).

Day-to-day controls

Pause for 15 minutes (kitchen overwhelmed)

At the top of the Aggregators tab there’s a status pill. Tap it → choose 15 / 30 / 60 / 120 minutes. Both platforms auto-pause simultaneously and resume automatically when the timer expires.

┌─ ● Accepting orders · tap to pause ────────────────────────┐ │ │ │ Pause for… │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ 15 minutes until 14:47 │ │ │ │ 30 minutes until 15:02 │ │ │ │ 60 minutes until 15:32 │ │ │ │ 120 minutes until 16:32 │ │ │ └──────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────┘

86 an item that just ran out

Long-press a product tile on the Counter screen. A sheet asks whether to mark it unavailable everywhere (catalog + Zomato + Swiggy) or just on this terminal.

┌─ Mark out of stock ────────────────────────────────────────┐ │ ⚠ Pepperoni Pizza Med · ₹320 │ │ │ │ Where to apply? │ │ ◉ Everywhere — catalog + push to Zomato + Swiggy real-time│ │ ◯ This terminal only — catalog flag, no platform push │ │ │ │ [Cancel] [Mark out of stock] │ └──────────────────────────────────────────────────────────────┘

The platforms reflect the change within seconds — no more “customer ordered an item we don’t have.”

Hours of operation

Settings → Hours of operation — set per weekday open/close times. The hours-of-operation tick checks every 5 minutes and auto-pauses aggregators outside hours. Tenants who don’t configure hours are treated as 24/7 (opt-in).

Manual menu sync

Settings → Aggregators — tap “Sync menu now” to push the full catalog to a platform. The periodic worker also runs every 5 minutes, so this is mostly for after a major catalog edit when you want it reflected immediately.

What ops needs from you (the tenant)

ItemWhere to find it
Zomato outlet IDZomato partner dashboard → Settings → Outlet info
Zomato API key + webhook secretZomato partner dashboard → API integration
Swiggy outlet IDSwiggy partner dashboard → Restaurants
Swiggy API key + webhook secretSwiggy partner dashboard → Integrations
GST registration certificateFor FSSAI bill upload compliance
FSSAI license numberRequired by both platforms

Email these to your Aegis account manager. Setup takes ~15 minutes once the platforms have provisioned your outlet for POS integration.

Limits + gotchas

  • Inaction timeouts: Zomato auto-rejects orders if you don’t respond within ~60s. The cashier-portal’s auto-accept timer fires with default 25-min prep at 30s to leave headroom.
  • Menu changes propagate within ~5 minutes via the periodic worker, or instantly via the “86 item” flow.
  • Multi-outlet chains: each outlet has its own credentials row. Currently single-counter terminals ({location}:counter-1); multi -counter chains are on the roadmap.
  • iPhone Safari: WebUSB printer support requires Android tablet or Windows/macOS. Bills still send via SMS/WhatsApp on iOS but no thermal print.

Troubleshooting

SymptomFirst checkLikely cause
Aggregators tab missingRefresh the pageEntitlement bootstrap not yet fetched
”Paused — auto-rejecting”Check Aggregators tab top pillManual pause or outside hours
KOT didn’t printSettings → Counter Printer → “Test print”Printer disconnected or paired terminal mismatched
Menu out of date on ZomatoSettings → Aggregators → “Sync now”Worker hadn’t run since edit
Customer reports item not foundLong-press tile → “86 item · everywhere”Catalog is_available drift