Ledger entryNo. 070501
Conversions API for Business Messaging(CAPI)
Also called: Conversions API for WhatsApp · WhatsApp Conversions API · CAPI for business messaging · Business messaging CAPI
- Growth & marketing
- Expert
- Developers
- Marketers
- Definition
- Meta's Conversions API for Business Messaging, which reports purchases and leads tied to a Click-to-WhatsApp ad click back to Meta to optimise ads.
Growth & marketing
Mode · http exchange
Work it out
Report a WhatsApp sale back to Meta
https://graph.facebook.com/v26.0/{DATASET_ID}/eventsPOST 200 in 600 ms(simulated)
Request
3 headers · bodyResponse
200 OKResponse: 200 OK after 600 ms.
What is the Conversions API for Business Messaging?
The Conversions API for Business Messaging (CAPI) is Meta's server-to-server API for reporting what happened after a conversation that started from a Click-to-WhatsApp ad: a lead submitted, a purchase made, a checkout started. Instead of a website pixel firing in a browser, your backend sends the event to Meta with the click ID of the ad that opened the chat, and Meta attributes it to that ad in Ads Manager.
Events go to a dataset — Meta's container for conversion events — that is connected to the WhatsApp Business Account, through POST https://graph.facebook.com/v26.0/{DATASET_ID}/events. Each event in the data array carries event_name (for example Purchase or LeadSubmitted), event_time in Unix seconds, action_source: "business_messaging", messaging_channel: "whatsapp", and user_data with the whatsapp_business_account_id and the ctwa_clid. Purchase events add custom_data with currency and value. The token needs the whatsapp_business_manage_events permission.
The click ID is the link that makes it work. It arrives once, in the webhook referral object on the customer's first message from the ad, and must be stored with the contact so it can be sent when the conversion happens hours or days later. The Conversions API for Business Messaging is one input to attribution, not a model in itself: it tells Meta which ad clicks led to outcomes, while your own attribution decides how revenue is credited across all channels.
Key takeaways
- The Conversions API for Business Messaging (CAPI) sends server events such as Purchase or LeadSubmitted from WhatsApp chats back to Meta.
- Each event is a POST to
/{DATASET_ID}/eventswithaction_sourcebusiness_messaging,messaging_channelwhatsappand the chat'sctwa_clid. - The
ctwa_clidcomes from the referral object on the first message of a Click-to-WhatsApp ad chat; without it Meta cannot credit an ad. - Reported outcomes let Ads Manager show cost per lead or purchase and optimise delivery towards people likely to convert.
- Send each conversion once, promptly, with
event_timein Unix seconds and the value in the order's currency.
In code
The Conversions API for Business Messaging in code
curl -X POST "https://graph.facebook.com/v26.0/{DATASET_ID}/events" \-H "Authorization: Bearer {ACCESS_TOKEN}" \-H "Content-Type: application/json" \-d '{"data": [{"event_name": "Purchase","event_time": 1792391400,"action_source": "business_messaging","messaging_channel": "whatsapp","user_data": {"whatsapp_business_account_id": "{WABA_ID}","ctwa_clid": "{CTWA_CLID}"},"custom_data": { "currency": "INR", "value": 2499 }}]}'
event_time is Unix seconds (here 19 October 2026, 12:00 IST). Placeholders come from your dataset, WABA and stored referral.
How does the Conversions API for Business Messaging work?
Connect a dataset to the WhatsApp Business Account
In Events Manager (or through your provider), create or find the dataset linked to the WABA and note its ID. Use a system user access token with the
whatsapp_business_manage_eventspermission.Store the click ID when the chat starts
From the first inbound message of an ad chat, save
referral.ctwa_clidandsource_idagainst the contact, keyed by the messagewamid. Some placements, such as ads shown in WhatsApp Status, can arrive without actwa_clid, so treat it as optional.Map business outcomes to events
Decide which moments count: a qualified lead (
LeadSubmitted), a paid order (Purchase) and so on. Fire on the confirmed outcome — the payment, not the cart.Send the event
POST to
/{DATASET_ID}/eventswithaction_sourcebusiness_messaging,messaging_channelwhatsapp, the WABA ID andctwa_clidinuser_data, and currency and value incustom_data.Check it landed and do not repeat it
A 200 response with
events_receivedconfirms receipt. Record which outcomes were sent so retries and duplicate webhooks never report the same order twice, then watch the results in Events Manager and Ads Manager.
The figures
The Conversions API for Business Messaging: key facts and limits
- Endpoint
- POST /{DATASET_ID}/events
- action_source
- business_messaging
- messaging_channel
- user_data
- whatsapp_business_account_id + ctwa_clid
- Common events
- Purchase, LeadSubmitted
- event_time
- Unix seconds, not milliseconds
- Permission
- whatsapp_business_manage_events
- Success response
- 200 with events_received
Why does the Conversions API for Business Messaging matter?
Without conversion events, Click-to-WhatsApp campaigns can only be judged and optimised on conversations started — a cheap chat counts the same as one that became a 50,000-rupee order. Reporting leads and purchases with the click ID lets marketers running WhatsApp lead generation campaigns see cost per lead, conversion rate and return on ad spend in Ads Manager, and lets Meta's delivery system find more people like the ones who bought rather than the ones who only tapped. For developers it is a small integration — store one ID, send one POST — with an outsized effect on ad performance.
Costly mistakes
Common mistakes with the Conversions API for Business Messaging
Not storing ctwa_clid on the first message
The click ID appears only in the referral object of the message the customer sends from the ad. If it is not saved then, the later purchase cannot be tied to the ad.
Sending web-pixel style user data
Business messaging events are matched by
ctwa_clidand the WABA ID, not by hashed emails or browser cookies. Copying a website CAPI payload withaction_source: websitereports the wrong kind of event.Reporting the same order twice
Payment webhooks and job retries repeat. Without a record of which orders were sent, one sale becomes two purchases and inflates return on ad spend. Claim each order before sending.
Sending events late or with the wrong clock
event_timemust be Unix seconds; milliseconds put the event far in the future. The Conversions API rejects events that are too old (seven days for most action sources), so send as soon as the outcome is confirmed.
Example: A Jaipur jewellery brand reports purchases
A Jaipur jewellery brand runs Click-to-WhatsApp ads for festive earrings. Its webhook handler saves each new chat's ctwa_clid; when an agent closes a sale with a payment link and the payment gateway confirms 2,499 rupees, the order service sends a Purchase event with that click ID, currency INR and value 2499. Within a month Ads Manager shows purchases and return on ad spend per ad set instead of only conversations started, and the brand moves budget from the ad that started the most chats to the one that sold the most earrings.
Best practices for the Conversions API for Business Messaging
- Send the confirmed outcome (payment received, lead qualified), not intermediate clicks.
- Keep
ctwa_clidoptional in your schema — chats from some ad placements, such as WhatsApp Status ads, can arrive without one. - Log the
fbtrace_idof every failed call for Meta support. - Compare purchases in Ads Manager with your own orders weekly to catch dropped or duplicated events.
CAPI FAQs
- What is the Conversions API for Business Messaging?
- It is Meta's server API for reporting outcomes such as purchases and leads from chats that started with a Click-to-WhatsApp ad. Events carry the ad's click ID,
ctwa_clid, so Meta can credit the right ad. - Where do I get the ctwa_clid?
- From the webhook referral object on the customer's first message from the ad. It sits at
messages[].referral.ctwa_clid; store it with the contact, because it is not repeated later in the conversation. - Is the Conversions API for Business Messaging the same as the Meta pixel?
- No. The pixel runs in a website visitor's browser. The Conversions API for Business Messaging is called from your server with
action_sourcebusiness_messagingand the chat's click ID, so it works for sales closed inside WhatsApp. - Which events should I send from WhatsApp chats?
- Send the outcomes you want ads optimised for, typically
LeadSubmittedfor qualified leads andPurchasefor paid orders. Send each once, when it is confirmed, with the value and currency for purchases.
Put CAPI to work
InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.