WhatsApp Commerce on Shopify: The Integration Patterns That Actually Convert
WhatsApp is the checkout for half the emerging-market internet, but bolting it onto Shopify is where most teams go wrong. Here's the architecture, the tradeoffs, and the patterns that actually move revenue.

If you sell into LATAM, MENA, South Asia, or most of Sub-Saharan Africa, WhatsApp isn't a support channel — it's the storefront. Shoppers ask about stock, negotiate, send screenshots, and expect to finish the purchase in the same thread. The teams shipping serious revenue there aren't running Shopify or WhatsApp; they're running both, welded together carefully.
This is a breakdown of the integration patterns we've used on live stores, what breaks, and where the actual conversion lift comes from.
Why the default Shopify "WhatsApp button" is a trap
Most stores start by dropping a floating WhatsApp icon on the PDP. It opens wa.me/<number>?text=... with a prefilled message. It feels productive. It's also where the funnel goes to die.
The problems compound fast:
- The message lands in a shared inbox with no product context beyond a URL
- Agents copy-paste variant info, get it wrong, and quote out-of-stock SKUs
- There's no attribution back to the Shopify order — you can't tell what WhatsApp is worth
- Response times drift past 10 minutes and the shopper is gone
A button is not an integration. What you actually want is a system where the WhatsApp thread is an authenticated commerce session, the catalog is synced, and the checkout hand-off drops the shopper on a pre-filled Shopify cart with UTM and agent attribution baked in.
The three integration tiers, and when each makes sense
Before any code, pick the tier honestly. Overbuilding here is a common failure mode.
Tier 1: Assisted sales (Shared Inbox + Deep Links)
Good for stores under roughly 500 WhatsApp conversations per month. You use a shared inbox tool (Rasayel, Trengo, WATI, or similar) connected via the WhatsApp Business API through a BSP (Business Solution Provider — Meta requires one). Agents reply manually. The store's job is just to make every outbound touchpoint deep-link into a Shopify cart with attribution.
No bots. No catalog sync. Just clean plumbing.
Tier 2: Catalog + template-driven flows
Once volume justifies it, sync your Shopify catalog into WhatsApp's native Product Catalog (via Meta's Commerce Manager or the Graph API). Now agents can send product cards inside the chat, and you can trigger template messages for abandoned carts, back-in-stock, and order updates. This is where most serious brands live.
Tier 3: Full conversational checkout
WhatsApp Flows plus a webhook backend that reads inventory, applies discounts, and creates draft orders in Shopify. The shopper never leaves WhatsApp until payment. This is powerful but expensive to maintain — plan for a dedicated engineer.
If you're not sure which tier you need, start at Tier 1 and instrument it well. You'll know within six weeks whether Tier 2 is worth the build.
The architecture we keep coming back to
Here's the shape of a Tier 2 integration that survives Black Friday without duct tape:
[Shopify] ──webhooks──► [Integration service] ──► [BSP / WhatsApp Cloud API]
▲ │ │
│ │ ▼
│ │ [Agent inbox]
│ ▼
└── Admin API ◄── [Draft orders, cart permalinks, customer tags]
The integration service is the piece nobody talks about but everything depends on. It handles:
- Signing and verifying webhooks in both directions
- Idempotency (Shopify retries, WhatsApp retries, you dedupe)
- Mapping WhatsApp phone numbers to Shopify customers
- Building cart permalinks with the right
attributes[]anddiscountparams - Rate limiting outbound template sends so you don't get your number quality-rated down
We usually build this as a small Node or Python service on a boring PaaS. Nothing fancy — the fancy part is the state machine, not the runtime.
Cart permalinks are your best friend
The cleanest handoff from WhatsApp back to Shopify checkout is a cart permalink. It's undervalued.
// Build a Shopify cart permalink from a WhatsApp conversation
function buildCartLink(items: Array<{variantId: string; qty: number}>, opts: {
agentId: string;
conversationId: string;
discount?: string;
}) {
const path = items.map(i => `${i.variantId}:${i.qty}`).join(',');
const params = new URLSearchParams({
'attributes[source]': 'whatsapp',
'attributes[agent]': opts.agentId,
'attributes[conv]': opts.conversationId,
...(opts.discount ? { discount: opts.discount } : {}),
});
return `https://your-store.com/cart/${path}?${params.toString()}`;
}
Those attributes[...] params land on the Shopify order as line-item and order-level notes. Now you have real attribution — you can tell finance exactly what WhatsApp closed, and which agent closed it.
Catalog sync: the boring problem that sinks projects
This is where most integrations rot. Shopify is the source of truth. WhatsApp's catalog needs to reflect it. But WhatsApp's catalog API has quirks:
- Product updates aren't instant; expect propagation delay of a few minutes to a few hours
- Image URLs must be publicly reachable and stable
- Variant handling is flat — WhatsApp doesn't understand Shopify's option/variant hierarchy natively
- Rejected items (price mismatches, restricted categories) fail silently unless you poll
Our approach:
- Listen to
products/update,products/delete, andinventory_levels/updatewebhooks from Shopify - Debounce per-product for 30 seconds so a bulk edit doesn't spam the catalog API
- Flatten variants into WhatsApp items using
retailer_id= Shopify variant ID (this makes the mapping bulletproof later) - Run a nightly reconciliation job that diffs the two catalogs and re-syncs anything that drifted
Skip the reconciliation job at your peril. Silent drift is the #1 support ticket source we see.
Where the conversion lift actually comes from
After running this on several stores across MENA and LATAM, the wins are not evenly distributed. In our experience, the ranking looks roughly like this:
- Abandoned cart template messages within 30–60 minutes. This is the single highest-ROI feature. Recovery rates on WhatsApp templates run meaningfully higher than email in these markets — often multiples higher, though the exact lift depends on category and price point.
- Order confirmation + shipping updates on WhatsApp. Reduces "where is my order" tickets, which frees agents to sell.
- Back-in-stock notifications. Opt-in list grows fast; conversion on send is strong because intent is fresh.
- Agent-assisted PDP recovery. When a shopper messages from a specific product page, the agent gets that context and can send the exact variant card. This alone can lift assisted-sale close rates noticeably.
- Post-purchase upsell 3–5 days after delivery. Consumables and accessories work; apparel less so.
What doesn't move the needle as much as vendors claim: fully automated chatbots that try to replace the agent. In markets where WhatsApp shopping is dominant, shoppers can smell a bot in two messages and bounce. Use automation for triage and enrichment, not for closing.
The compliance and quality-rating stuff nobody warns you about
Meta rates your WhatsApp Business number on a quality score. If it drops, your template sends get throttled or blocked. Things that tank quality fast:
- Sending marketing templates to users who didn't opt in explicitly
- High block rates (which means your templates feel spammy)
- Sending outside the 24-hour customer service window without a proper template
- Reusing the same template for wildly different purposes
Build opt-in capture into your Shopify checkout — a clear consent checkbox tied to the phone field, stored as a customer metafield. Don't scrape phone numbers from historical orders and start blasting; you will lose the number.
Also: template approval takes 24–48 hours and Meta rejects for reasons that read like poetry. Budget for iteration.
Where we'd start
If you're a Shopify brand doing meaningful volume in a WhatsApp-first market and you don't have this wired up yet, here's the sequence we'd run:
- Week 1: Pick a BSP, get the number provisioned, deploy a shared inbox. Add opt-in to checkout.
- Week 2: Build the integration service skeleton — webhook receivers, cart permalink builder, phone-to-customer mapping. Ship the abandoned cart template first, nothing else.
- Week 3–4: Add catalog sync and order status templates. Instrument attribution end-to-end so finance can see WhatsApp revenue by agent.
- Week 5+: Only now decide if Tier 3 (in-chat checkout via Flows) is worth building. Most stores never need it.
The teams that win here treat WhatsApp as a first-class surface of the store, not a plugin. If you want help scoping the build, that's the kind of work we do at 72Technologies — and if you're earlier in the funnel thinking, the rest of the e-commerce archive has more of these breakdowns.
Want a team like ours?
72Technologies builds production software for the kind of teams who actually read this blog.
Start a projectKeep reading
Cart Abandonment Recovery on Shopify: What Actually Moves the Needle in 2026
Most cart abandonment recovery advice is stuck in 2019. Here's what we've seen actually recover revenue on Shopify stores in 2026 — and what's a waste of engineering time.
Shopify Collection Pages at 10,000 SKUs: Faceted Filtering Without Killing TTFB
Faceted filtering on large Shopify catalogs quietly destroys collection page performance. Here's how we architect it to keep TTFB under 400ms without a full replatform.
Shopify Functions vs Scripts: What Actually Runs at Checkout in 2026
Scripts are gone, Functions are the new contract. Here's what we learned porting discount logic, delivery customizations, and payment gating to Shopify Functions — and where the model still hurts.
