On this page
- How do you track WhatsApp leads from Meta ads?
- What does Meta require for the Conversions API for Business Messaging?
- How do you capture the ctwa_clid?
- Which event names should you send?
- What do most guides leave out?
- How do you build it without writing code?
- How do you know it works?
- When should you get help?
- Frequently asked questions
- Sources
How do you track WhatsApp leads from Meta ads?
You track them in four steps. A Click to WhatsApp ad sends the person into a chat, so there is no website form and no pixel page view to count. Instead, the click leaves an identifier on the conversation, and your job is to catch it and use it later.
- Capture the
ctwa_clidthat comes with the first message from an ad. - Save it on the lead's record in your CRM or sheet, with the time of the first message.
- Send an event to Meta's Conversions API for Business Messaging each time that lead reaches a stage you care about.
- Check that the events appear in Ads Manager, then judge campaigns on qualified leads and sales, not on conversations started.
Ads Manager already reports messaging conversations started. That number says people tapped and said hello. It does not say whether anyone was a real prospect, which is how a team that sells over WhatsApp ends up optimizing for the cheapest chat. If that is happening to you, the same measurement-first logic applies as in our guide to Facebook ads that get clicks but no sales. Our online ads management starts with exactly this wiring before it touches budgets.
What does Meta require for the Conversions API for Business Messaging?
Meta's onboarding guide is the primary source, and it is more specific than most vendor articles. For WhatsApp it asks for the following.
| Requirement | What Meta's page says (checked 7 Nov 2026) |
|---|---|
| Action source | action_source is business_messaging, and messaging_channel is whatsapp |
| Customer match, preferred | user_data carries the whatsapp_business_account_id and the ctwa_clid |
| Customer match, without the click ID | page_id, the WhatsApp Business Account ID and at least one customer parameter such as em, ph, fn, ln, ct, st, zp, country, ge or db; an event without page_id is rejected on this path |
| Permissions | whatsapp_business_management and whatsapp_business_manage_events (Advanced Access), plus the Marketing API access tier |
| Dataset | One POST to /{WABA_ID}/dataset returns the dataset_id; if one exists it returns that one |
| Hashing | Normalize and hash customer values with SHA-256 |
| Attribution | The hashed-information path attributes to an ad interaction from the past seven days; later events are accepted but not attributed |
One thing to know before you start: Meta's own page is not fully consistent. A banner says the Full Access threshold was reduced from 1,500 to 500 Marketing API calls in the past 15 days, while the per-channel sections still say 1,500. Treat access tiers as something to check in your own app dashboard, not to copy from any article, including this one.
How do you capture the ctwa_clid?
You capture it from the message webhook your WhatsApp provider gives you. Meta says the click ID is exposed when a person starts a conversation from a Click to WhatsApp ad, and the API payload expects it in user_data. Where it sits in the webhook depends on your provider, so read their documentation for the field path. One vendor guide, Whapi's, reads it from the ad context of the first inbound message and treats a message with no ad context as organic, which is a sensible rule: do not report organic chats as ad conversions.
Three habits make capture reliable:
- Save the lead before you call Meta. Write the CRM record first, so a failed API call never loses a lead.
- Store the raw click ID and the first-message time. You need both to check the seven-day window later.
- Tag the source. Mark each lead "ad" or "organic" so reports compare like with like.
If your WhatsApp setup does not expose the click ID, Meta's alternative is the hashed customer-information path, which needs the page ID and at least one hashed customer parameter, as in the table above. That is a heavier route, so ask your provider whether they pass the click ID before you build it.
Which event names should you send?
Send names from Meta's own list. The FAQ on the business messaging page gives the allowed events: Purchase, LeadSubmitted, InitiateCheckout, AddToCart, ViewContent, OrderCreated, OrderShipped, OrderDelivered, OrderCanceled, OrderReturned, CartAbandoned, QualifiedLead, RatingProvided and ReviewProvided.
Map them to your sales process like this:
| Your stage | Event to send | Notes |
|---|---|---|
| Person messaged from the ad | None needed | Ads Manager already counts the conversation |
| Gave contact details or asked for a quote | LeadSubmitted |
The closest match to a form fill |
| Your team judged them a fit | QualifiedLead |
The signal that teaches Meta what a good lead is |
| Paid, or deposit taken | Purchase |
SleekFlow's help page notes a currency is required with it |
| Delivered, returned, canceled | OrderDelivered, OrderReturned, OrderCanceled |
For stores that need to count real, not just placed, orders |
Do not send Lead. It is the pixel's standard name and the one the Whapi example uses, but it is absent from Meta's list for this API, so an event sent under that name is a problem you will only see when your numbers do not appear. It is the specific gap we found between a ranking vendor guide and Meta's own page, and it is why this page exists.
What do most guides leave out?
Three things, all of which change your numbers.
Meta does not remove duplicates. The page says Meta "does not assist with deduplicating events" for this API and encourages advertisers to deduplicate before sending. Webhooks are retried when your server is slow, so an unprotected handler can send the same lead twice. Fix it by storing the event name and lead ID once sent, and checking before every send. Whapi's example handler, for instance, has no such check.
Timing is part of the design. Because attribution runs on a seven-day window, a lead that your sales team qualifies on day nine cannot be credited to the ad that brought it. If your sales cycle is longer, send LeadSubmitted early and QualifiedLead only for leads you can judge within the window. Whapi's example also stamps events with the processing time; send the time the stage actually happened.
Consent is not optional. The WhatsApp Business Messaging Policy says you may only contact people who have given you their number and opt-in permission "confirming that they wish to receive subsequent messages", that you are solely responsible for the opt-in method, and that you must secure the notices, permissions and consents needed to collect and use people's information. It also limits use of data obtained from WhatsApp about a person to what is reasonably needed to support messaging them. Check with a lawyer in your market what that means for sending conversion data to an ad platform, and record how each lead agreed. For the wider follow-up process see our guide to automating lead follow-up.
How do you build it without writing code?
You have three routes, and which is right depends on the tool that holds your WhatsApp number.
- Your WhatsApp provider's built-in integration. SleekFlow's help page, for example, says its integration creates a dataset per WhatsApp Business Account, lets you log conversions in a flow, and supports Purchase and Lead submitted events. It also says enabling Meta's Automatic Events does not by itself trigger conversions; you must build a flow that acts on them. Check which events your own provider supports against Meta's list above.
- A CRM with workflows. Store the click ID as a custom field, then add a workflow step that calls the Conversions API when the lead's stage changes. Our GoHighLevel setup checklist covers the pipeline stages this relies on.
- Your own webhook handler. Respond to the webhook at once, save the lead, check for a prior send, then post the event. Keep the access token out of URLs and logs, and pin the Graph API version from Meta's current page rather than a vendor's older example (Whapi's uses v19.0; Meta's page uses v27.0).
How do you know it works?
Test with a real ad, because the click ID only exists on a real ad conversation.
- Click your own test ad from a phone and send the first message.
- Confirm your handler stored the click ID and marked the lead as "ad".
- Move the lead to a stage in the CRM and confirm one event was sent.
- Move it again to the same stage and confirm no second event was sent.
- Check Meta's Events Manager for the event on the dataset, then look for it in Ads Manager after Meta has processed it.
Then watch the ratio of conversations to qualified leads per ad. If one ad produces many chats and few qualified leads, it is a candidate to pause regardless of its cost per conversation. See how much to budget for Meta ads for how much data you need before judging an ad, and Meta Ads vs Google Ads if you are deciding where WhatsApp-led selling fits.
When should you get help?
Get help when the click ID is not reaching your CRM, when your provider does not support the events you need, or when Meta shows conversations but no stage events after a week of testing. The fix is usually in the webhook or the event names rather than in the ads. 1920 Agency is based in Islamabad and runs Meta ads for clients, including an e-commerce brand optimized for purchases; we quote after mapping your lead process, so a short call to describe how a chat becomes a sale is the right first step.
Frequently asked questions
How do I track WhatsApp leads from Meta ads?
Capture the ctwa_clid from the first message a Click to WhatsApp ad produces, store it on the lead's CRM record, and send events for that lead to Meta's Conversions API for Business Messaging as the lead progresses. Ads Manager alone only shows that a conversation started, not whether it became a qualified lead or a sale.
What is ctwa_clid?
It is the per-click identifier Meta exposes when someone starts a conversation from a Click to WhatsApp ad. Meta's documentation shows it in the user_data of a WhatsApp event next to the WhatsApp Business Account ID, and vendors that provide WhatsApp APIs pass it through in their message webhooks. Without it you can still match on hashed customer details, but the setup has more requirements.
Which event names can I send for WhatsApp conversions?
Meta's Conversions API for Business Messaging FAQ lists Purchase, LeadSubmitted, InitiateCheckout, AddToCart, ViewContent, OrderCreated, OrderShipped, OrderDelivered, OrderCanceled, OrderReturned, CartAbandoned, QualifiedLead, RatingProvided and ReviewProvided. The standard pixel name Lead is not on that list, although some vendor guides use it in their examples.
How long do I have to send a WhatsApp conversion to Meta?
Meta's documentation says the hashed-customer-information path attributes an event to an ad interaction from the past seven days, and that later events are accepted but not attributed. SleekFlow's help page gives the same seven-day rule for the click ID path. Plan your qualification process so the signal can be sent inside that window, or send the earlier stage.
Does Meta remove duplicate WhatsApp conversion events?
Not for this API. Meta's page says it does not assist with deduplicating events for Conversions API for Business Messaging and encourages advertisers to deduplicate before sending. Store the event you already sent against the lead and check it before every send, so a retried webhook cannot count a lead twice.
Do I need the customer's permission to track and message them on WhatsApp?
You need opt-in permission to message people on WhatsApp, and you must hold the notices and consents needed to collect and use their information. WhatsApp's Business Messaging Policy says you are solely responsible for the opt-in method and that you must honor requests to stop. A person messaging you first is a different question from sending them follow-up messages, so record how each lead agreed.
Can I optimize Meta ads for WhatsApp sales instead of conversations?
Meta says the Conversions API for Business Messaging gives access to purchase optimization for ads that click to Messenger and to WhatsApp. That only works if Purchase events reach Meta with enough volume, so confirm the events arrive before you change the campaign goal.
Sources
- Conversions API for Business Messaging: Onboarding Guide, Meta for Developers, checked 7 November 2026.
- WhatsApp Business Messaging Policy, WhatsApp, checked 7 November 2026.
- How to track Click to WhatsApp ctwa_clid, Whapi.Cloud, checked 7 November 2026 (vendor guide; used for its example and its gaps).
- Meta Ad Performance Tracking Tools integration, SleekFlow help centre, checked 7 November 2026 (vendor documentation).
- WhatsApp, Wikidata Q1049511, label checked 7 November 2026.