How to measure campaign ROI on the WhatsApp Business API
Sending a WhatsApp broadcast is easy. Proving it made money is where most teams get stuck. Because Meta now bills per delivered message by category, your ROI maths is only honest if you separate what you spent (delivery cost per marketing/utility/authentication message) from what you earned (attributed orders, bookings, or recovered carts). This tutorial walks through a repeatable way to measure WhatsApp campaign ROI end to end in InfiQ — from setting a baseline and tagging campaigns, to attributing revenue with click tracking, to reading the numbers correctly so you don't fool yourself. No data-science background required.
What you'll do
Measure WhatsApp ROI by dividing attributed revenue by true campaign cost. Track delivered messages per category (not per conversation), tag each campaign with a UTM or unique link, and compare revenue from clickers against your per-message delivery spend plus InfiQ platform pricing.Step 1 — Define the ROI question before you send
ROI is only meaningful against a goal, so decide what a single campaign is supposed to move before you build it. A cart-recovery utility message is judged on recovered order value; a marketing broadcast for a new collection is judged on incremental sales in the days after; an authentication flow isn't a revenue campaign at all and shouldn't be measured this way. Write down the numerator (the revenue event you'll credit) and the denominator (the cost you'll count) up front. This one habit prevents the most common mistake we see: teams comparing total store revenue during a campaign window and crediting all of it to WhatsApp.
- Pick one primary revenue event per campaign (order placed, booking confirmed, cart recovered).
- Decide your attribution window — 2 hours after delivery works for most retail sends.
- Note the message category you'll use, because it sets your per-message cost floor.
- Record a baseline: what does this revenue event normally do without a send?
Step 2 — Calculate the true cost of the campaign
Your denominator is not a flat 'per blast' number. Since Meta moved off per-conversation billing on 1 July 2025, WhatsApp bills per delivered message and the rate depends on category — marketing costs more than utility, and authentication sits lower still. So a 10,000-contact marketing broadcast where 9,200 messages are delivered costs 9,200 times the marketing rate, not 10,000. On top of Meta's delivery charge you pay InfiQ's transparent ₹ platform pricing (ex-GST). Add both to get real cost. Do not count the free 24-hour service window as a cost line — it's a window in which you can reply without a new template charge, not a billing unit.
- Cost = (delivered messages × Meta's per-message rate for that category) + InfiQ platform pricing, ex-GST.
- Use delivered count, not sent or targeted count — undelivered messages aren't billed.
- Keep marketing, utility and authentication spend in separate lines so blended ROI doesn't hide a weak segment.
- Add any one-off creative or offer-discount cost if the promo gave away margin.
Step 3 — Tag every campaign so revenue can find its way back
Attribution breaks when two campaigns share the same link. In InfiQ, give each send its own trackable destination: append UTM parameters (or use a unique short link) to any button or URL in the template, and use a distinct campaign name so analytics can group deliveries, reads, clicks and the resulting sessions. If you sell online, wire those UTMs through to your store or checkout so an order carries the campaign tag all the way to the thank-you page. For call-to-action buttons that open a chat rather than a browser, tag the conversation with the campaign name in your CRM or InfiQ labels so agent-closed sales are still creditable.
- Add utm_source=whatsapp, utm_medium=broadcast, and a unique utm_campaign per send.
- Use one link per campaign — reused links make revenue un-attributable.
- Pass the campaign tag into your ecommerce/CRM so orders inherit it.
- Label chat-button conversations so agent-assisted revenue isn't lost.
Step 4 — Read delivery and engagement as the funnel, not the goal
Delivered, read, and clicked rates are diagnostics, not the result — but they tell you where ROI leaks. A high delivery rate with low reads suggests bad timing or a weak opening line; healthy reads with few clicks points at a soft offer or a buried button; strong clicks with no orders usually means the landing page or checkout is the problem, not the message. In InfiQ's campaign analytics, walk the funnel left to right and fix the first big drop-off before touching the creative. This turns a vague 'the campaign didn't work' into a specific, fixable step.
- Delivered → Read: quality rating, send time, and audience freshness.
- Read → Clicked: offer strength, CTA clarity, single clear button.
- Clicked → Purchased: landing page load, checkout friction, offer honoured.
- Watch quality rating and failure reasons — a dropping rating quietly raises future cost per delivered message.
Step 5 — Compute ROI and ROAS, then judge it against baseline
With attributed revenue and true cost in hand, ROI (%) = ((attributed revenue − campaign cost) ÷ campaign cost) × 100, and ROAS = attributed revenue ÷ campaign cost. Report both: ROAS is the plain 'we spent ₹1 and made ₹X' number stakeholders grasp instantly, ROI shows the net gain. Then subtract your baseline — if the tagged audience would have bought some of that anyway, credit only the incremental lift. Comparing a sent segment against a held-out control group (a small slice you deliberately don't message) is the honest way to isolate WhatsApp's real contribution.
- ROAS = attributed revenue ÷ total campaign cost (Meta + InfiQ, ex-GST).
- ROI % = ((attributed revenue − cost) ÷ cost) × 100.
- Subtract baseline or use a hold-out control to measure incremental, not total, revenue.
- Break ROI down by category so utility reminders and marketing blasts are judged on their own economics.
Step 6 — Turn one measurement into a repeatable loop
A single ROI number is a snapshot; the value is in the trend. Save the campaign as a template you can re-run, log its ROI against the baseline, and change one variable at a time — send window, offer, segment, or opening line — so the next result is comparable. Over a few cycles you'll learn which category earns its cost for your business: many InfiQ users find utility reminders (order updates, appointment nudges) quietly deliver the best return per rupee because they ride the free service window and land at moments of genuine intent, while marketing blasts need sharper targeting to justify their higher per-message rate.
- Keep a simple running log: campaign, category, delivered, cost, attributed revenue, ROI.
- Change one variable per test so improvements are attributable.
- Re-check quality rating each cycle — it directly affects future cost.
- Retire underperforming segments rather than resending to unresponsive contacts.