All articles
E-commerceAugust 5, 2026 7 min read

WhatsApp Commerce in LATAM and MENA: An Engineering Playbook for Shopify Stores

WhatsApp isn't a support channel in emerging markets — it's the storefront. Here's how we wire it into Shopify without turning ops into a call centre.

If you run a Shopify store selling into São Paulo, Cairo, or Karachi and your only "chat" button is Shopify Inbox, you're leaving money on the table — probably a lot of it. In these markets buyers open WhatsApp before they open a browser, and the checkout you spent six months optimising is often the second touch, not the first. This is a practical breakdown of how to make WhatsApp a first-class commerce surface on top of Shopify without breaking your ops team.

Why WhatsApp is the storefront, not the support desk

In most of LATAM and MENA, WhatsApp penetration among smartphone users sits comfortably north of 90%. Buyers ask about stock, sizing, delivery windows, and payment methods before they ever add to cart. If you treat WhatsApp as a post-purchase support channel, you're inheriting the tail end of a conversation your competitors already had.

What this means engineering-wise: the WhatsApp thread has to know the same things your storefront knows. Product availability, price with the right currency and tax, the customer's previous orders, their preferred language. That's the integration problem — everything else is UX around it.

Rule of thumb from our builds: if answering a pre-sale question requires an ops person to alt-tab into Shopify admin, you've already lost the margin on that order.

The three architectures you'll actually pick between

There are only three shapes this integration takes in production. Pick wrong and you'll rebuild in twelve months.

1. Shopify app + WhatsApp Business App (the shoebox)

You install something like the official Shopify WhatsApp channel or a marketplace app, connect a WhatsApp Business (not API) number, and agents reply from a phone or the WhatsApp Web client. Order data flows one way: Shopify → WhatsApp notifications.

Good for: stores under roughly 300 orders/month, single-country, one or two agents.

Breaks when: you need more than four devices on one number, you want automation, or you want to run broadcast campaigns without getting flagged.

2. WhatsApp Business Platform (Cloud API) + middleware

This is where serious stores land. You use Meta's Cloud API directly, or a BSP (Business Solution Provider) like Twilio, 360dialog, Gupshup, or Wati. A middleware layer — either theirs or yours — subscribes to Shopify webhooks and orchestrates messages.

Good for: multi-agent teams, template-driven campaigns, cart recovery flows, catalog messages, payment links.

Tradeoffs: you're now managing template approvals, 24-hour session windows, and per-conversation pricing. Meta's pricing model changed in mid-2025 to per-message for utility and marketing categories in most regions — read the current rate card before you model unit economics.

3. Full conversational commerce stack (headless-ish)

Here WhatsApp is a first-class channel alongside your storefront. Product discovery, cart, and sometimes payment happen inside the thread using WhatsApp Flows and native catalogs. Shopify becomes the system of record and fulfilment engine, not the buyer's primary UI.

Good for: high-repeat categories (groceries, pharmacy-adjacent, beauty refills, D2C food), markets where card penetration is low and COD or bank transfer dominates.

This is the most work, and it's the one that actually moves the needle in emerging markets.

Wiring it into Shopify without the ops team quitting

The non-obvious problem isn't the API — it's keeping inventory, pricing, and order state consistent between a thread and a cart. Here's the minimal event map we usually ship:

// Middleware: Shopify webhook → WhatsApp side effects
const handlers = {
  'orders/create': async (order) => {
    if (order.tags.includes('source:whatsapp')) {
      await wa.sendTemplate(order.phone, 'order_confirmed_v3', {
        order_number: order.name,
        total: formatMoney(order.total_price, order.currency),
        eta: computeEta(order.shipping_address)
      });
    }
  },
  'checkouts/update': async (checkout) => {
    // Abandoned after 45 min, only if consent flag set
    scheduleRecovery(checkout, { delayMin: 45 });
  },
  'inventory_levels/update': async (level) => {
    await notifyWaitlistSubscribers(level.inventory_item_id);
  }
};

A few things we've learned the hard way:

  • Tag the order source at creation time. Once an order is a week old and you're trying to attribute revenue to WhatsApp, guessing from phone number matches is a nightmare.
  • Use Shopify draft orders for thread-negotiated carts. When an agent builds a cart inside a conversation (custom bundle, wholesale price, whatever), create a draft order and send the invoice URL. Don't fake it with discount codes.
  • Idempotency keys everywhere. WhatsApp webhooks retry aggressively. Double-charging a customer because your payment link handler fired twice is a very expensive bug.

The 24-hour window problem

Meta lets you reply freely for 24 hours after a customer's last message. Outside that window, you can only send pre-approved templates, and marketing templates cost more than utility ones. This shapes your entire notification strategy.

Practically: cart recovery at 45 minutes and 4 hours works inside session. Anything the next day needs a utility or marketing template, and "utility" is interpreted narrowly by Meta reviewers. We've had templates rejected for being too promotional even when they were confirming a real event. Keep a stash of pre-approved variants.

Checkout: links, Flows, and the payment mess

The checkout question splits by market.

LATAM (Brazil, Mexico, Colombia, Argentina): Shopify Checkout with local payment methods — Pix, OXXO, Mercado Pago, MODO — via Shopify Payments where available or a gateway app. Send the buyer a checkout URL from the thread. Don't try to collect card details in-chat; you don't want the PCI scope and buyers don't trust it anyway.

MENA (UAE, Saudi Arabia, Egypt): COD is still dominant in Egypt and parts of the Gulf, but Tabby, Tamara, and Mada card checkouts are climbing fast. WhatsApp Flows can collect the address and COD confirmation inline, then hand off to Shopify via a draft order. This drops checkout abandonment materially for low-AOV categories.

Pakistan, Bangladesh, Nigeria: Bank transfer and mobile wallets (JazzCash, Easypaisa, bKash, Paystack). Payment link + manual verification is still the norm. Automate the verification with a webhook from the wallet provider into your middleware, then auto-mark the Shopify order as paid.

WhatsApp Pay exists in Brazil and India but coverage and merchant onboarding are uneven. Don't architect around it as your primary rail yet — treat it as a nice-to-have.

Metrics that actually tell you if it's working

Forget "messages sent". The numbers that matter:

  • Assisted conversion rate — orders where a WhatsApp thread happened within 24 hours before checkout, divided by threads. In our builds this typically lands between 15% and 35% for considered purchases, higher for repeat categories.
  • Response time p50 and p95. Under two minutes p50 is the bar; past five minutes p95 and your conversion craters.
  • Template rejection rate. If Meta is rejecting more than 10% of your templates, your copy is too promotional or you're miscategorising.
  • Cost per assisted order. Sum of conversation fees + agent time + tooling, divided by attributed orders. This is the number your CFO cares about, and it's the one most teams never calculate.

A quick note on consent

Opt-in has to be explicit and logged. "By checking out you agree to receive WhatsApp messages" pre-ticked is not consent under GDPR, LGPD, or Meta's own policies. Store the timestamp, the source, and the wording. When Meta audits a number for quality issues — and they will — you want to produce that log in an hour, not a week.

Where the whole thing falls apart

The failure modes are boringly consistent across the projects we've seen:

  1. One shared number, no routing. Five agents on WhatsApp Web, messages get missed, customers ghost. Move to the Cloud API the moment you have more than two agents.
  2. Broadcasts without segmentation. Sending the same template to 40,000 numbers gets your quality rating downgraded within a week. Segment by recency and past engagement.
  3. No fallback when Meta is down. It happens. Have SMS or email as a secondary rail for order confirmations at minimum.
  4. Treating it as a marketing channel only. The ROI is in pre-sale and cart recovery, not in blasting offers.

Where we'd start

If you're running a Shopify store doing more than a couple of hundred orders a month into LATAM or MENA and you don't have a serious WhatsApp integration, the first two weeks look like this: get a Cloud API number provisioned through a BSP, wire three webhooks (order created, checkout abandoned, fulfilment shipped) into utility templates, and put one trained agent on the inbox with clear response-time SLAs. That's a weekend of engineering and it will pay for itself before the quarter ends. Everything after — Flows, in-thread catalogs, payment automation — is optimisation on top of a channel that's already producing.

If you want a second pair of eyes on the architecture before you commit, our e-commerce team has shipped this stack across a few markets and is happy to argue about the tradeoffs.

#Shopify#WhatsApp#Conversational Commerce#CRO#Emerging Markets

Want a team like ours?

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

Start a project