Product Management Case Study

Real-Time Order Tracking via Webhook Infrastructure

How we went from manual polling and missed deliveries to a 99.6% event-delivery system that saved ₹60–80K per day in re-delivery costs — and reduced WISMO calls by 59%.

Company
Blowhorn (eCommerce Fulfillment)
Role
Product Manager II
Scale
10,000+ orders / day
Coverage
70+ cities across India
scroll
01 — Customer

A Tiered Partner Ecosystem

Not every merchant has the same bandwidth for integration. The tracking solution was designed from day one as a tiered product — meeting each partner where they were technically.

TIER 1 — SMB
Small & Mid-Size Merchants

D2C sellers, regional retailers, ONDC-listed brands. No dedicated tech team. Needed tracking out-of-the-box.

Used Blowhorn's built-in OMS tracking UI — zero integration required
Automated templated SMS via Blowhorn's own Twilio-backed comms layer
Toggle-on experience — no API keys, no engineering overhead
~60% of partner count · <200 orders/day
TIER 2 — GROWTH
Mid-to-Large Merchants

Shopify & ONDC sellers with in-house tech. Wanted to own their customer communication stack.

Consumed webhook events to power their own SMS/email workflows
Moderate customisation — event selection, endpoint config
Self-serve dashboard for integration and monitoring
~30% of partner count · 200–800 orders/day
TIER 3 — ENTERPRISE
Enterprise Clients

Decathlon, Croma, Apollo. Dedicated integration teams, existing CRM/marketing stacks. Required richly-structured event feeds.

Full webhook integration with MoEngage, CleverTap, Salesforce
Rider details + OTP injection in out_for_delivery events
Versioned payload schema with 12-month backward compatibility
~10% of partner count · 50% of GMV · 1,000–3,000+ orders/day
02 — Problem

The Pain Was Quantifiable

Before the webhook infrastructure, Blowhorn's OMS relied on a fragmented, semi-manual tracking architecture. The cost of inaction was measurable — daily.

🔁 WISMO Overload
Merchants had to poll APIs at intervals to check order status — introducing 30–90 min lag. Support teams were drowning in "Where Is My Order?" calls.
↑ 18–25% of all inbound support contacts were WISMO calls
📦 Delivery Failures from Delayed OTP
When orders moved to 'Out for Delivery', rider details and OTP reached the end-customer only when the rider called — often minutes before arrival or not at all.
↑ 14–17% first-attempt delivery failure rate
📣 Missed Marketing Triggers
Enterprise clients had no reliable real-time signal from the logistics layer. Review requests fired 6–12 hours post-delivery. Failed-delivery recovery campaigns ran the next business day.
↑ Lost upsell, review, and loyalty touchpoints at every delivery event
1,500
re-deliveries per day
at 10k daily orders
@ 15% first-attempt failure rate
Daily re-delivery cost (network)
₹67,500 – ₹97,500
@ ₹45–65 per failed re-delivery attempt across the network
03 — Solution

Two Layers. One Architecture.

A deliberately tiered design — ensuring 100% of partners got real-time tracking, while giving enterprise clients the programmatic control they needed.

🟢
Layer 1: Built-in OMS Tracking

Zero-integration tracking for SMB partners. Toggle-on dashboard with automated templated SMS via Blowhorn's own Twilio-backed communication service. No API keys. No engineering overhead.

SMB tier zero-integration templated SMS
Layer 2: Webhook Notification Infrastructure

Event-driven push system for growth and enterprise partners. Configurable endpoints, rich payloads, retry guarantees. Status propagation from 60 minutes to under 90 seconds.

enterprise tier real-time push 99.5% delivery
🔔
5 Event Types Shipped

order_confirmed → out_for_delivery (with rider + OTP) → delivered → delivery_failed → return_initiated. Each with a consistent, versioned JSON schema and backward compatibility guarantee.

rider details OTP injection versioned schema
🛡️
Reliability Built In

Exponential backoff retry (3 attempts: 30s → 2min → 8min), Redis-backed dead-letter queue, and a self-serve dashboard with event logs, manual retry, and endpoint health monitoring.

dead-letter queue self-serve portal 99.9% uptime
04 — User Stories

The Three Jobs to Be Done

Each story represents a distinct user need, backed by acceptance criteria and measured outcomes.

01
"As a merchant partner, I want to receive a real-time push the moment an order moves to 'Out for Delivery' — with rider details and OTP — so that I can immediately relay this to my end-customer via SMS, without any manual intervention from my ops team."
out_for_delivery webhook fires within 60 seconds of dispatch system update
Payload includes rider_name, rider_phone_masked, delivery_otp, eta_window, order_id
3-attempt exponential backoff retry if partner endpoint returns non-200
Merchant configures which endpoint receives each event type independently
📈 Outcome: First-attempt delivery success rate improved from ~83% to ~91% over 4-week pilot — 9.6% relative uplift, ~120 fewer re-deliveries/day at pilot scale
02
"As a technical integration lead, I want to register, test, and monitor my webhook endpoints from a self-serve dashboard so that I can go live with real-time order tracking in under 2 hours — without raising a support ticket to Blowhorn's integration team."
Register up to 5 endpoint URLs per account, mapped to specific event types
'Send Test Event' fires a synthetic payload and shows HTTP response in real time
Event Log shows last 500 events, filterable by type, status, and timestamp
Failed events can be manually retried from the dashboard with visible retry history
📈 Outcome: Median partner integration time dropped from 7 business days to 1.5 days (−79%). Webhook setup support tickets fell 68% within 6 weeks of launch
03
"As a CX manager at an enterprise client, I want to receive structured webhook events the moment an order is 'Delivered' or 'Delivery Failed' — with a delivery guarantee — so that I can trigger post-purchase CRM workflows within minutes of the delivery outcome, not hours later."
delivered and delivery_failed events fire within 90 seconds of rider app update
Payload includes order_id, delivery_timestamp, failure_reason, customer_id
Separate endpoint URLs configurable per event type for independent CRM routing
Versioned schema (v1, v2) with 12-month backward compatibility guaranteed
📈 Outcome: One enterprise client reported +22% post-delivery review submissions and −31% failed-delivery support contacts within 8 weeks of integrating the event feeds into their CRM
05b — Schema Design

One Schema. Every Event.

The most important architectural decision: a single comprehensive JSON payload across all event types. Partners integrate once, never re-integrate. Fields irrelevant to an event return null — the contract never changes shape.

webhook payload · v2 ● LIVE

      
Why One Schema?
🔌
Integrate Once, Never Re-integrate
Partners build their consumer logic against one schema. Adding new event types or fields never breaks existing integrations.
🧱
Null Fields, Not Missing Fields
Every field always present in every payload. Irrelevant fields are null, not absent. Predictable contract, zero defensive parsing needed.
🚀
Enabled 1.5-Day Onboarding
Consistent schema + self-serve dashboard = partners could go live without a single Blowhorn engineer involved. Down from 7 business days.
📦
12-Month Backward Compatibility
Schema versioned (v1 → v2). Enterprise clients build on the API with confidence — no breaking changes without 12 months notice.
Field Coverage by Event
Field Group OFD DEL FAIL RET
Core order
Rider detailsnull
OTPnullnullnull
Failure reasonnullnullnull
Return detailsnullnullnull
Delivery confirmationnullnullnull
05 — Business Impact

Numbers That Moved the Business

Tracked over 12 weeks post-launch across 4 enterprise clients and 15 merchant partners.

~83%
91%
first-attempt delivery success
First-attempt delivery success rate (pilot cohort)
+9.6% relative uplift
~22%
9%
of total support volume
WISMO calls as % of inbound support contacts
−59% reduction
7 days
1.5d
median integration time
Partner webhook integration lead time
−79% faster onboarding
30–90 min
<90s
status propagation latency
Time from status change to partner notification
60× faster
+22%
review submission rate
Post-delivery review rate (enterprise pilot client)
via CRM trigger automation
₹70K
saved per day
Estimated daily re-delivery cost savings (network)
₹60K–₹80K range
06 — Technical Architecture

Built for Scale & Reliability

An event-driven microservice layer on top of Blowhorn's existing OMS — decoupled from core write paths to ensure zero latency impact on order processing.

🔄
CDC via Debezium + Kafka
Order status transitions captured via Change Data Capture pattern — decoupled from the OMS write path. Zero impact on core order processing performance.
🚀
Node.js Webhook Dispatcher
Consumed from Kafka, enriched payloads with rider + OTP data via internal gRPC calls to dispatch service, then dispatched to registered partner endpoints over HTTPS.
♻️
Redis Dead-Letter Queue
Exponential backoff retry (3 attempts: 30s → 2min → 8min). Events undelivered after all retries surfaced in the partner dashboard for manual retry.
📊
Elasticsearch + Kibana Observability
Every dispatch attempt logged with event_id, partner_id, event_type, http_status, latency_ms, retry_count — powering Event Log UI and internal SLA dashboards.
☁️
AWS ECS Fargate + Auto-scaling
Configured to handle 3× normal volume spikes during sale events. Maintained 99.9% uptime throughout high-growth phases.
🖥️
Self-Serve Partner Dashboard
React frontend with PostgreSQL-backed config store and thin REST API. Partners register endpoints, map event types, test connections, and view event history — no Blowhorn engineer required.