If you sell in India and you want WhatsApp to increase Shopify sales, start with two flows and ignore everything else for a month: a COD confirmation message before dispatch, and an abandoned checkout sequence. Both run on the phone number you already collect. Both pay back within a billing cycle at almost any order volume above a few hundred a month. Broadcast campaigns, chat widgets, catalogue browsing inside WhatsApp — those come later, and some of them never earn their keep.
Business App or the API: don't overbuy
The free WhatsApp Business app on a phone handles a surprising amount. Quick replies, labels, a catalogue, away messages. If you're doing 200 orders a month and one person answers the phone, that's your stack. Buying a Business Solution Provider subscription, template approval workflows and a shared inbox at that volume is money spent to feel professional.
The switch happens when you need to send outbound messages triggered by a Shopify event, at volume, without a human tapping send. That means the WhatsApp Business Platform (the API) through a BSP. Expect a monthly platform fee plus per-message charges from Meta, plus 18% GST on top of both. Most Indian BSPs price the platform fee somewhere in the low thousands of rupees a month for a starter tier, and the fee is usually the smaller half of your bill once volume picks up.
One thing that catches people: the number you use on the API can't be used in the regular WhatsApp app at the same time. If your support team is answering customers on a personal handset today, migrating that number breaks their workflow on day one. Plan the handover, or start the API on a fresh number and forward the old one.
COD confirmation is the highest-ROI message you'll send
Cash on delivery is still the majority of orders for a lot of Indian D2C brands, and RTO is the tax you pay for it. A confirmation message sent 30 to 60 minutes after the order — before your warehouse picks it — does three things: it filters out fake and duplicate orders, it flushes out buyers who've already changed their mind, and it gives you a slot to offer a small discount for switching to prepaid.
Arithmetic, with numbers you should replace with your own. Say 1,000 orders a month, 70% COD, so 700 COD orders. RTO at 28% is 196 undelivered parcels. Forward freight ₹70, reverse ₹70, packaging and handling ₹25 — call it ₹165 a parcel, so ₹32,340 burnt monthly.
Now run the flow. Ninety buyers take a 5% prepaid nudge and pay upfront. Remaining COD orders: 610. Confirmed COD converts better, so RTO on that pool falls to 20%, which is 122 returns instead of 196. Seventy-four RTOs avoided × ₹165 = ₹12,210 saved. Against that, the prepaid discount costs you 90 × ₹75 (5% of a ₹1,500 AOV) = ₹6,750, and messaging costs maybe ₹1,200 including follow-ups and platform fee. Net around ₹4,200, plus 90 orders' worth of cash collected three weeks earlier and 74 fewer parcels your ops team has to reconcile.
That margin is thin enough to be honest about. If your AOV is ₹600 and your RTO is 12%, this flow will not transform your P&L. If your AOV is ₹2,500 and RTO is over 30%, it's the single best thing you can do this quarter.
Two implementation details we get wrong on the first pass more often than we'd like. First, hold the order in Shopify until confirmation, or you'll dispatch before the customer replies and the message becomes decorative — tag the order and have your WMS or 3PL respect the tag. Second, don't auto-cancel on silence. Silence usually means the customer is at work. Cancel only on an explicit no, and treat a non-reply as a normal COD order with one polite reminder.
Abandoned checkout: timing beats copy
Everyone rewrites the message. Almost nobody tests the delay. In our accounts the first message goes out 20 to 30 minutes after abandonment — long enough that the customer isn't still on the page, short enough that they remember what they were buying. Second message at 20 to 24 hours. A third at 48 hours only if the cart value justifies it, and never with a bigger discount than the second, because you're training people to abandon.
WhatsApp recovers meaningfully more of the same carts than email does for Indian traffic, mostly because the message is read within minutes and the checkout link is one tap away on the same device. It's also the reason to keep the message short. Product name, one line, the link. No banner image, no three bullet benefits. The template that reads like a person typing outperforms the one that reads like a campaign.
Include the actual cart recovery URL from Shopify, with a UTM on it, and shorten it through your BSP so you can attribute clicks. If you're running Omnisend or Klaviyo for email, run the WhatsApp step inside the same flow rather than a parallel tool, otherwise the customer gets both at the same minute and you look automated.
Order updates are cheap and quietly reduce your support load
Shipped, out for delivery, delivered, delayed. These are utility templates, they cost a fraction of marketing messages, and Meta's billing changes over the last year have made in-window utility messaging cheaper still. Check your BSP's current rate card, because this has moved twice and will move again.
The measurable win isn't sales, it's tickets. "Where is my order" is the biggest single category of inbound for most stores, and a proactive out-for-delivery message removes a large chunk of it. If you're paying an agency or a support seat to answer those, the saving is real and it shows up on a spreadsheet.
The delay template is the one worth writing carefully. Tell people before the promised date passes, not after. A courier delay you disclose is an inconvenience; one they discover is a complaint.
Broadcasts: useful, and much easier to ruin than email
A bad email gets ignored. A bad WhatsApp broadcast gets you blocked, and blocks feed your quality rating, and a low quality rating throttles how many messages Meta will let you send. You can degrade a number in a week and spend a month recovering it.
Practical limits we hold to: no more than two or three marketing broadcasts a month to any one contact, segment hard so the message is genuinely relevant, and never send after 9pm. Restock alerts, a genuine price drop on something the customer viewed, and the first two days of a festive sale are worth a broadcast. "Happy Diwali from our family to yours" is not.
Meta's shift toward per-message billing for marketing templates changed the maths too. Blasting your full list is now a line item you can see, which is a good discipline. Work out the cost before you send: a 40,000-contact list at ₹0.85 a message is ₹34,000 plus GST for one push. That needs to return roughly ₹1.7 lakh in revenue at 20% contribution margin just to break even.
Consent, without wrecking your checkout
Phone is already a required field on most Indian Shopify checkouts because couriers need it. That gets you the number; it doesn't get you permission to market. Add a checked-by-default consent line for transactional updates and an unchecked one for offers, or use a single clear opt-in on the thank-you page where there's no conversion cost to it. Pop-ups that trade a discount code for a WhatsApp opt-in work well on category pages and badly on product pages, where they interrupt someone who was already buying.
WhatsApp isn't governed by TRAI's DLT registration the way SMS is, but Meta's own enforcement is stricter in practice than the regulator. Honour opt-outs immediately, keep a record of when and where consent was given, and don't import a purchased list. You will lose the number.
The chat widget is probably slowing your storefront down
Most WhatsApp widgets load a third-party script on every page, sometimes with a web font and an icon sprite. On a mid-range Android over 4G that's real weight. We've seen a floating chat button push Largest Contentful Paint past 3 seconds on a theme that was otherwise fine, because the script was blocking and loaded in the head.
You don't need an app for this. A static anchor tag pointing at wa.me with a pre-filled message, styled with a few lines of CSS, does the same job at zero JavaScript cost. If you want the analytics the paid widget gives you, at least defer the script and measure the before and after — our notes on Shopify speed optimization cover how to check what a single app script is costing you.
Knowing whether it worked
Every WhatsApp tool will report attributed revenue, and every one of them over-claims, because a customer who was going to buy anyway will still click your message. The fix is a holdout: exclude 10% of eligible carts or COD orders from the flow for four weeks and compare. It costs you a little revenue and it's the only number you can take to a board meeting.
For the COD flow, the metric is RTO percentage on confirmed versus unconfirmed orders, not messages delivered. For abandoned checkout, it's incremental recovery over the holdout, not the vendor's dashboard figure. For broadcasts, it's contribution margin per send minus messaging cost, tracked per campaign, so you can kill the ones that lose money instead of averaging them into the ones that don't.
Where to start this week
Pick the COD confirmation flow. One template, one Shopify webhook, one tag your fulfilment respects. Run it on every COD order for four weeks with a 10% holdout and compare RTO on the two groups. If the gap is under two percentage points, your RTO problem is a product or pricing problem and no amount of messaging will fix it.
If you'd like a second opinion on your COD numbers, your checkout phone capture and what your current chat widget is doing to page load, our free store audit covers all three. And if you need the Shopify-side plumbing built rather than advised on, that's what our Shopify developers do.


