Durable webhook queue
Every inbound event is persisted before we 200. Failed events retry with exponential backoff up to 8 attempts. Nothing falls through.
From the first HI to the final receipt, WA-B handles the conversation, the cart, the cash, and the customer record.
MoMo runs in the background. We charge on the 1st, retry failures , send WhatsApp reminders 3 days before billing, and grace-suspend after 2 days past due.
Customers, riders, and you all see the same status: pending, paid, preparing, on-the-way, delivered. One source of truth, automatic WhatsApp notifications at each step.
Menu, hours, delivery zones, branded greetings, follow-up cadence. Every setting is hot-reloaded: change at 11:59, your customers see it at 12:00.
Production-grade code every Ghanaian SME deserves but rarely gets: durable webhook queues, advisory locks, audit logs.
Every inbound event is persisted before we 200. Failed events retry with exponential backoff up to 8 attempts. Nothing falls through.
Each business is silo'd by phone-number ID. We never cross streams. Even on a misrouted webhook, your data stays yours.
Renewals, reminders, and suspensions run via DB advisory locks. Run 50 replicas; only one fires the job.
Tenant or admin scope, SHA-256 hashed at rest, revocable in one SQL line. Real keys, not session cookies pretending.
Customers without MoMo? No problem. HMAC-SHA512 signed events, idempotent reference handling, redirect callback ready.
Cron jobs run on local time. Reminders go out when humans actually read them. Currency formatted right. Phones normalized.