All articles
E-commerceMay 19, 2026 6 min read

WhatsApp Commerce in LATAM and MENA: The Stack That Actually Converts

WhatsApp isn't a marketing channel in Brazil, Mexico, or the UAE — it's the storefront. Here's the architecture we use when checkout has to happen inside a chat, not on a PDP.

WhatsApp Commerce in LATAM and MENA: The Stack That Actually Converts

If your growth team is still measuring success in PDP scroll depth while your Brazilian or Saudi customers are DMing your support number asking "tem no tamanho M?" or "متوفر؟", you're already losing the sale to a competitor who replied in ninety seconds. WhatsApp isn't a top-of-funnel channel in these markets — for a meaningful slice of buyers, it is the funnel. The question isn't whether to support it; it's how to wire it up without turning your ops team into a 24/7 call centre.

We've shipped WhatsApp-first commerce flows for brands in São Paulo, Mexico City, Riyadh, and Dubai, and the architecture that survives contact with real shoppers looks very different from the demos Meta shows on stage. Here's what we actually build.

Why WhatsApp Beats the Storefront in These Markets

Three things stack up in LATAM and MENA that don't apply in, say, Germany or the US:

  1. Trust deficit on web checkouts. Card fraud history, unfamiliar brands, and a strong preference for talking to a human before paying. A chat thread feels safer than a Stripe modal.
  2. Payment fragmentation. Pix in Brazil, OXXO and SPEI in Mexico, Mada and Tabby/Tamara in the Gulf. Shoppers want to confirm "do you accept X?" before committing. WhatsApp makes that one message.
  3. Mobile-only behaviour with patchy connectivity. A 4MB PDP with hero video is a tax. A chat thread loads on 3G.

When we A/B'd a classic Shopify checkout against a WhatsApp-assisted checkout for a Mexican apparel brand last year, the chat path closed a meaningfully higher share of high-AOV orders. We won't quote a hard percentage — sample size and category bias matter — but it was large enough that the client killed the "chat with us" widget and replaced it with a WhatsApp CTA on every PDP within a sprint.

The Core Stack

There's no single product that does this well end-to-end in 2026. You're integrating four layers:

  • Messaging layer: WhatsApp Business Platform (Cloud API) — direct from Meta, or via a BSP like Twilio, 360dialog, or Gupshup.
  • Conversation orchestration: your bot/agent runtime. This is where intent detection, catalog lookup, and human handoff live.
  • Commerce backend: Shopify, WooCommerce, or your custom OMS. The source of truth for inventory, pricing, and orders.
  • Payments: a hosted checkout link (Stripe, Mercado Pago, Tap, HyperPay) or native WhatsApp Pay where available.

The mistake we see most often: teams pick a BSP first and discover six weeks in that its bot builder can't call their Shopify catalog without a brittle Zapier chain. Pick the orchestration layer first, then the BSP.

Cloud API vs BSP: a quick honest take

Go direct with Cloud API if you have engineering bandwidth and your volume is under a few hundred thousand conversations a month. You save the per-message markup, and you own the webhook pipeline.

Go with a BSP if you need a pre-approved template library, a shared inbox for human agents, or you're launching in multiple countries with different compliance footprints. The markup buys you time.

Catalog Sync: The Boring Part That Breaks Everything

Meta's product catalog (the one that powers product messages and the in-chat shopping experience) is a separate object from your Shopify or Woo catalog. You have to sync it, and the sync is where most projects rot.

A few hard-won rules:

  • Sync on webhook, not cron. When a variant goes out of stock on Shopify, you have minutes — not hours — before someone gets sent a product card for an unavailable SKU.
  • Don't sync your full catalog. Sync the top 200–500 SKUs by velocity. WhatsApp's UX falls apart with thousands of items, and Meta's review process punishes bloated catalogs.
  • Mirror identifiers. Store the Meta retailer_id against your Shopify variant ID in your own database. When the inevitable reconciliation bug happens, you'll need both sides.

A minimal sync worker, conceptually:

// Triggered by Shopify products/update webhook
async function syncVariantToMeta(variant: ShopifyVariant) {
  if (!isInTop500(variant.product_id)) return;

  const payload = {
    retailer_id: variant.id.toString(),
    name: variant.title,
    price: Math.round(variant.price * 100),
    currency: variant.currency,
    availability: variant.inventory_quantity > 0 ? 'in stock' : 'out of stock',
    image_url: variant.image?.src,
    url: `https://shop.example.com/products/${variant.handle}`,
  };

  await metaCatalogApi.upsert(CATALOG_ID, payload);
  await db.variantMapping.upsert({
    shopifyId: variant.id,
    metaRetailerId: variant.id.toString(),
    lastSyncedAt: new Date(),
  });
}

Queue it, retry it, and log every failure to a dashboard your ops team actually checks.

Designing the Conversation Flow

The template that converts, across every market we've launched in, looks roughly like this:

  1. Customer messages from a CTA (PDP button, Instagram ad, QR code in physical store).
  2. Bot acknowledges in under two seconds with a context-aware greeting ("saw you were looking at the linen shirt — want to see sizes?").
  3. Bot sends a product list message with 3–5 relevant SKUs.
  4. Customer picks one; bot confirms size/colour, total, and shipping ETA in plain text.
  5. Bot sends a hosted payment link OR offers cash-on-delivery / Pix / OXXO voucher.
  6. On payment webhook, bot sends order confirmation and tracking link.

Two things to get right:

Hand off to humans before they ask

If the customer types anything that doesn't match an intent in two consecutive turns, route to a human. Don't make them say "agent." The cost of a misrouted bot conversation is a lost order; the cost of a human picking up a clear question is thirty seconds.

Templates vs session messages

WhatsApp charges per conversation (a 24-hour window), and you can only initiate one with an approved template. Design your template library before you build the bot. Common ones you'll need approved: abandoned-cart recovery, back-in-stock, shipping update, review request. Get them submitted week one — approvals can take days, and rejections compound.

Payment Handoff Without Losing the Thread

Native WhatsApp Pay exists in some markets (India, Brazil for some merchants) but coverage is uneven. The reliable pattern is a hosted checkout link with the cart pre-filled.

For Shopify, the cleanest way is generating a Draft Order via Admin API, then sending the invoice_url. The customer pays through standard Shopify checkout — same fraud rules, same payment methods, same tax logic — and your bot listens on the orders/paid webhook to close the loop.

const draft = await shopify.draftOrder.create({
  line_items: [{ variant_id: selectedVariant, quantity: 1 }],
  customer: { phone: waPhoneNumber },
  note: `WA conversation ${conversationId}`,
  tags: 'whatsapp-commerce',
});

await wa.sendText(waPhoneNumber,
  `All set. Pay here: ${draft.invoice_url}\nLink expires in 24h.`);

Tag the order. You'll want to report on WhatsApp-attributed revenue separately, and your finance team will thank you when they're reconciling channel performance.

What Actually Goes Wrong in Production

A few patterns we keep seeing:

  • Template rejections at scale. Meta's review is stricter than the docs suggest. Avoid promotional language in utility templates, and never put a URL shortener in a template body.
  • The 24-hour window trap. Agents reply at hour 25 and suddenly you owe a template fee, or the message silently fails. Build a timer into your agent console.
  • Phone number churn. In LATAM especially, customers change SIMs. Don't treat the WhatsApp number as a stable customer ID — link to email or a loyalty ID where you can.
  • Compliance. Saudi Arabia and the UAE have specific consent requirements for marketing messages. Bake opt-in capture into the first conversation and store the timestamp.

Where We'd Start

If you're a Shopify brand doing meaningful volume in Brazil, Mexico, Colombia, the UAE, or Saudi, here's the order we'd ship in:

  1. Week 1–2: WhatsApp Business Platform account, top 200 SKUs synced to Meta catalog, one human agent on the official WhatsApp Business app. No bot yet. Measure inbound volume and intent distribution.
  2. Week 3–4: Build the draft-order checkout link flow. Add a WhatsApp CTA to PDPs. Keep humans answering.
  3. Week 5–8: Automate the top three intents you actually saw — usually size availability, shipping cost, and order status. Leave everything else to humans.
  4. Quarter 2: Add proactive flows — abandoned cart, back-in-stock — with approved templates.

Don't start with a full conversational AI agent. Start with humans, instrument everything they do, and automate what you've proven matters. If you want a hand mapping this against your stack, our e-commerce engineering team does exactly this work.

#E-commerce#WhatsApp#Conversational Commerce#Shopify#CRO

Want a team like ours?

72Technologies builds production software for the kind of teams who actually read this blog.

Start a project