Skip to content
Meta Business PartnerStep-by-step guide

How to track conversions on the WhatsApp Business API

Sending template messages is only half the job — the half that matters to your finance team is knowing which sends actually turned into a signup, an order or a paid invoice. This tutorial walks through setting up end-to-end conversion tracking on the official WhatsApp Business API with InfiQ: tagging your outbound campaigns, capturing button and link clicks, wiring delivery and read webhooks, and attributing the final conversion back to the exact message that drove it. It takes a few minutes to configure and, once live, gives you a clean cost-per-conversion figure against WhatsApp's per-delivered-message rate card.

Per delivered message, by category
Billing model
Official Meta Business Partner
Partner status
Minutes (campaign-level); an afternoon (closed-loop)
Setup effort
Campaign ID, UTMs, message ID, per-recipient token
Attribution keys
Transparent ₹ per-message pricing (ex-GST)
Pricing

What you'll do

Set up conversion tracking on WhatsApp Business API by tagging campaigns with UTM parameters and a campaign ID, capturing button/link clicks and delivery-read webhooks in InfiQ, then attributing the downstream signup or purchase back to the originating message — giving you a true cost-per-conversion against Meta's per-message rates.

Step 1 — Define the conversion before you send anything

Conversion tracking falls apart when nobody has agreed what a conversion is. Do this first, on paper. A conversion is a business outcome recorded in your system of record — an order marked paid, a demo booked, a KYC completed, a cart recovered. It is explicitly not a read receipt: a read only tells you the message was opened inside WhatsApp's free 24-hour service window, not that anything of value happened. Pick one primary conversion per campaign so your cost-per-conversion has a single, unambiguous denominator, and write down where in your stack that event is recorded (CRM, order table, payments webhook).

  • Name the exact event and the system that owns it (e.g. 'invoice.paid' in your billing DB).
  • Decide the attribution window — how many hours or days after the send a conversion still counts.
  • Separate 'engagement' signals (delivered, read, clicked) from the 'conversion' signal so you never conflate a click with a sale.

Step 2 — Tag every outbound campaign with a stable identifier

Attribution is just joining three datasets — what you sent, what got clicked, and what converted — on a shared key. Give each campaign one identifier and reuse it everywhere. In InfiQ, set a campaign ID when you schedule the broadcast; on any URL button or in-body link, append UTM parameters that echo the same campaign. Keep the naming scheme boring and consistent so a human and a spreadsheet can both read it. Because WhatsApp now bills per delivered message by category, tagging by category (marketing, utility, authentication) also lets you split cost-per-conversion by message type later.

  • Use a single campaign ID across InfiQ, your tracked links and your CRM.
  • Standardise UTMs: utm_source=whatsapp, utm_medium=<marketing|utility|authentication>, utm_campaign=<your-id>.
  • For per-recipient attribution, add a unique token to the link and store the outbound message ID that InfiQ returns at send time.

Step 3 — Capture clicks and message status via webhooks

The middle of the funnel lives in two places. Link and button clicks land in your web analytics through the UTM-tagged URL, while delivery and read status arrive from the WhatsApp Business API as webhook events that InfiQ relays to your endpoint. Subscribe your receiver to the message-status webhook so every sent, delivered, read and failed event is logged against its message ID. This status stream is what powers your delivered-message denominator and surfaces failures early, before they quietly deflate your conversion rate.

  • Point the InfiQ webhook at an HTTPS endpoint that verifies the signature and returns 200 fast.
  • Persist message ID, status, timestamp and campaign ID for every event.
  • Watch the 'failed' and quality-signal events — undelivered messages can never convert and skew your rate.

Step 4 — Fire a server-side conversion event and close the loop

When the customer actually converts, record it from your backend, not the browser. Client-side pixels are lost to ad blockers, closed tabs and dropped sessions, which silently undercounts real conversions and makes campaigns look worse than they are. From your system of record, emit a conversion event carrying the campaign ID and, where you set one, the per-recipient token. That single field lets you join the conversion back through the click and the delivered message to the original send. Server-side events also survive a finance audit in a way a JavaScript pixel never will.

  • Trigger the event from the source of truth — payments webhook, order service or CRM automation.
  • Include the campaign ID (and per-recipient token) so it joins cleanly to the send.
  • De-duplicate on the conversion's own primary key so retries don't double-count.

Step 5 — Reconcile spend against conversions, then optimise

Now you can build the number that justifies the channel. Take delivered messages for a campaign as the cost base, apply InfiQ's transparent ₹ pricing (ex-GST) for that message category, and divide total spend by attributed conversions. Do this per category so you can see, for example, that authentication OTPs convert cheaply while a marketing broadcast needs a sharper offer. Once the loop is trustworthy, iterate on the levers that move it: template copy, the call-to-action button, send timing and audience segmentation. Test changes with your own number first, ship to a small segment, and only then scale the winner.

  • Cost-per-conversion = category spend on delivered messages ÷ attributed conversions.
  • Break it out by marketing / utility / authentication to compare like with like.
  • A/B one variable at a time — CTA wording, offer or send time — and let the attributed conversions pick the winner.

Do this in InfiQ now

Talk to InfiQ

Want us to set this up with you?

Tell us where you’re stuck — we’ll walk you through it and get you live.

Step 1 of 2
WhatsApp

Protected by invisible spam checks · replies within 1 working day

Frequently asked questions

Can I track conversions without a developer?+
For campaign-level tracking, yes. InfiQ is no-code: you can add campaign IDs and UTM-tagged links, and read delivery, read and click reports without writing anything. Message-level attribution and server-side conversion events do need a small amount of engineering — typically a webhook receiver and one call from your backend when the conversion happens.
What actually counts as a conversion on WhatsApp?+
Whatever business outcome you define — an order, a booking, a signup or a paid invoice. It is almost never the read receipt. A read simply means the message was opened inside the free 24-hour service window; a conversion is a downstream action recorded in your own system of record.
How does conversion tracking relate to what I'm billed?+
WhatsApp bills per delivered message by category — marketing, utility or authentication — since Meta moved off per-conversation billing on 1 July 2025. Your delivered-message count is the denominator for cost-per-conversion, and InfiQ shows this on transparent ₹ pricing (ex-GST), so you can see spend against conversions in one place.
Do UTM links inside a WhatsApp template work like normal web UTMs?+
Yes. A URL button or an in-body link with utm_source, utm_medium and utm_campaign is picked up by your web analytics exactly as any other referral link would be. The trick is consistency: use the same campaign identifier in the link, in InfiQ and in your CRM so the three data sources can be joined.
How do I attribute a conversion to a specific recipient, not just a campaign?+
Add a unique per-recipient token to the tracked link, persist the outbound message ID at send time, and carry that token into the conversion event your backend fires. Matching the token across the click, the message status and the conversion gives you clean message-level attribution.
Should I fire conversion events from the browser or from my server?+
Server-side, from your system of record, whenever you can. Client-side pixels are lost to ad blockers, closed tabs and dropped sessions, which quietly undercounts conversions. A server-side event tied to the campaign ID is far more reliable and survives an audit.
How long does the setup take?+
Campaign-level tagging and reading the delivery, read and click reports is a matter of minutes once your WhatsApp Business API account is active with InfiQ. Full closed-loop attribution — webhooks plus a server-side conversion event — usually takes a developer an afternoon.
Where do I get help if attribution numbers look wrong?+
InfiQ's India-based support can walk through your campaign IDs, UTM setup and webhook logs to find the broken link in the chain. Most 'missing conversion' problems trace back to an untagged link, a lost message ID or a webhook that was never subscribed.