Skip to content

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

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

2 / 2
POSThttps://graph.facebook.com/v26.0/{DATASET_ID}/events

POST 200 in 600 ms

Request

3 headers · body
POST /v26.0/{DATASET_ID}/events HTTP/1.1
Host: graph.facebook.com
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json
{
"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
}
}
]
}

Response

200 OK
HTTP/1.1 200 OK
Content-Type: application/json
{
"events_received": 1,
"messages": [],
"fbtrace_id": "AbC1dEf2GhI3jKl4"
}
Try another response
A Purchase event from an ad-started chat, in the shape the Conversions API expects. Press Send to see the response, then switch to the error responses for a bad parameter or an expired token.

Response: 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}/events with action_source business_messaging, messaging_channel whatsapp and the chat's ctwa_clid.
  • The ctwa_clid comes 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_time in 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?

  1. 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_events permission.

  2. Store the click ID when the chat starts

    From the first inbound message of an ad chat, save referral.ctwa_clid and source_id against the contact, keyed by the message wamid. Some placements, such as ads shown in WhatsApp Status, can arrive without a ctwa_clid, so treat it as optional.

  3. 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.

  4. Send the event

    POST to /{DATASET_ID}/events with action_source business_messaging, messaging_channel whatsapp, the WABA ID and ctwa_clid in user_data, and currency and value in custom_data.

  5. Check it landed and do not repeat it

    A 200 response with events_received confirms 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
whatsapp
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_clid and the WABA ID, not by hashed emails or browser cookies. Copying a website CAPI payload with action_source: website reports 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_time must 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_clid optional in your schema — chats from some ad placements, such as WhatsApp Status ads, can arrive without one.
  • Log the fbtrace_id of 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_source business_messaging and 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 LeadSubmitted for qualified leads and Purchase for 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.