Customer story
Bazaar
A marketplace that uses WhatsApp Business as its primary support inbox. Templates and interactive messages going out, inbound webhooks coming back, an automation layer resolving 85% of conversations without a human in the loop.
Sector
E-commerce marketplace
Channel
Headline
284K msgs/mo · 85% AI resolution
The challenge
Support volume in a region where WhatsApp is the inbox.
Bazaar serves customers in markets where WhatsApp is the default communication channel — not an alternative to email or phone, but the place where people reach out by reflex. That's the operational reality: order questions arrive on WhatsApp. Return requests arrive on WhatsApp. Delivery slot changes arrive on WhatsApp. The customer service team can't ask the customer to come to a portal; the portal has to live where the customer already is.
At low volume, a shared WhatsApp number works. At a hundred thousand messages a month, the math breaks. Past two hundred thousand it's actively against the business: every minute a human agent spends on a question the system could have answered is a minute the queue grows. The brief was straightforward to state and hard to deliver — route the volume that an automation layer can resolve to that automation layer, escalate the rest to humans cleanly, and keep the conversation thread intact across the handoff.
Why Bird
Official Meta BSP, with templates and inbound on the same auth.
Bird has been an official Meta Business Solution Provider since the WhatsApp Business API existed. That status matters operationally: template-approval signals come back as webhooks on the same endpoint that delivers message receipts, session-window awareness is exposed in the SDK rather than left to the developer to track, and the BSP relationship is direct rather than resold through a transit aggregator.
- Template approval as a first-class event. When a template is submitted, Bird emits
whatsapp.template.approvedorwhatsapp.template.rejectedwebhooks — no polling, no dashboard refresh. - Session-window awareness in the SDK.The send call knows whether the recipient is in an open 24-hour window and routes free-form or template accordingly. The developer doesn't track which state the conversation is in.
- Interactive messages built in. Buttons, lists, quick replies, and product cards are first-party features on the send call — the same shape across every WhatsApp-supported region.
- Inbound messages as signed webhooks. Every customer reply lands on the same webhook endpoint as the outbound delivery receipts, HMAC-signed and replay-protected. The support inbox subscribes to
whatsapp.received; the automation layer subscribes to the same event.
The integration
Templates out. Webhooks in. One thread either way.
The architecture is straightforward in shape: Bird handles the WhatsApp wire, Bazaar runs the automation layer on top. Outbound messages are template sends through the Bird SDK when the conversation is out of session, interactive messages when a session is open. Inbound messages arrive as signed webhooks at a single endpoint; that endpoint fans them out to two consumers — the automation layer that tries to resolve the conversation, and the support inbox that catches anything the automation escalates.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// 1. Outbound template message (out-of-session).
// Template "order_shipped" approved by Meta; variables filled per recipient.
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: {
name: "order_shipped",
language: "en",
variables: { name: "Ada", tracking_id: "BZR-22841", carrier: "Aramex" },
},
});
if (error) throw error;
console.log(data.id);
// → "wa_msg_4Hc91Yk8h..."
// 2. Inbound replies arrive as signed webhooks at /webhooks/bird.
// Type "whatsapp.received" → route to the support inbox; the AI layer
// answers what it can and escalates the rest to a human agent.The handoff from automation to human is the part most WhatsApp implementations get wrong. With Bird, both sides — the AI layer and the human inbox — subscribe to the same whatsapp.received event stream and reference the same conversation ID. When the AI escalates, the human agent picks up the thread mid-conversation with full context; the customer sees one continuous reply chain, not a vendor handoff.
The numbers
284K messages a month. 85% resolved before a human sees them.
The 85% AI resolution rate is the number that pays for the architecture. The remaining 15% of conversations are the ones that need a human — refunds, complex order modifications, sensitive complaints — and those get a human, with the thread intact, on the same channel. The bill scales with messages out and conversations open, not with seat licenses.
284K
WhatsApp messages a month flowing through the Bird BSP connection.
85%
Inbound conversations resolved by the automation layer without a human agent touching the thread.
1
Inbox for the support team — templates, interactive messages, inbound, automation handoff, all on one BSP.
What's next
WhatsApp Flows for the structured part of every conversation.
The natural next step is WhatsApp Flows for the parts of a conversation that are actually structured forms — return reason selection, delivery slot rescheduling, address correction. Those interactions are awkward as free-text exchanges and clean as multi-step forms with backend validation. Bird's WhatsApp Flows surface exposes the same approval and webhook model as templates do, which keeps the operational footprint identical to what's already running.
Beyond that: SMS as a fallback for markets and moments where WhatsApp delivery isn't guaranteed, declared inline on the send call. Same auth model, same idempotency key, same webhook shape.
Carry-forward reference from bird.com. Message volume and AI resolution rate reported by Bazaar; named-quote attribution being confirmed with the team for launch.
Build on the same network.
Official Meta BSP, with templates, interactive messages, and inbound webhooks on one auth model. A test API key is yours immediately.