A webhook you built yourself.
In the WhatsAble dashboard, open Developer, add an endpoint URL, and enable incoming. The first Click-to-WhatsApp inbound POSTs the referral to that URL. See https://whatsable.app/integrations/webhook
Someone clicks your Click-to-WhatsApp ad in Meta and messages you. We don't create the ad. The first inbound carries the click and the ad so you can save them.
Someone clicks your Click-to-WhatsApp ad in Meta and messages you. WhatsAble does not create the ad. The first inbound carries the click and the ad — the referral — so you can save them. This page is the map: where that referral lands, what each field is, and why you persist ctwa_clid and source_id yourself before later messages in the same chat drop them.
No. A Click-to-WhatsApp ad runs in Meta Ads. WhatsAble does not create the ad.
WhatsAble forwards first-inbound referral — top-level on n8n, Zapier, Make, and a webhook you created. You persist ctwa_clid and source_id yourself because later messages in the same chat usually omit them. WhatsAble does not persist them for you.
Status ads can also send a referral; ctwa_clid may be omitted.
Here's the sequence, start to finish:
incoming: true when you create it.referral to that URL.That's the core loop for any destination. The specifics of where you point it differ slightly by tool:
In the WhatsAble dashboard, open Developer, add an endpoint URL, and enable incoming. The first Click-to-WhatsApp inbound POSTs the referral to that URL. See https://whatsable.app/integrations/webhook
n8n gets the same first-inbound referral. Map the top-level referral on that inbound, persist ctwa_clid and source_id, and write both to a Sheet or a CRM. Setup docs: https://whatsable.app/integrations/n8n
Zapier gets the same first-inbound referral. Map the top-level referral, persist ctwa_clid and source_id yourself. Docs: https://whatsable.app/integrations/zapier
Make gets the same first-inbound referral. Map the top-level referral, persist ctwa_clid and source_id yourself. Docs: https://whatsable.app/integrations/make
A WhatsAble Agent Skill is not a separate event. It sees the same webhook payload, including the referral, only if that Skill sits on a webhook you created. Installing a Skill by itself doesn't deliver the referral. See https://whatsable.app/vibe-code
Yes on the first inbound. Usually gone after that.
| When | Present / absent |
|---|---|
| First inbound after CTWA ad/post tap | Yes typically |
| Later messages, same chat | Usually absent. Persist immediately |
| Ordinary chat | Absent |
| WhatsApp Status ads | Referral may be present; ctwa_clid may be omitted |
Top-level referral on the WhatsAble payload (or Cloud API messages[].referral if that's the envelope you get). Do not map that unless that is the delivery. Use every row below.
| Field | Plain meaning | Present / absent |
|---|---|---|
referral | Container for CTWA/post attribution. | First CTWA/post inbound; omit ordinary chat and most follow-ups |
referral.source_type | ad or post. | With referral |
referral.source_id | Meta ad or post ID. | With referral. Persist |
referral.source_url | Ad or post URL. | With referral |
referral.headline | Ad or post headline. | With referral |
referral.body | Ad or post body copy. | With referral |
referral.media_type | image or video. | With referral |
referral.image_url | Image creative URL. | When media_type is image (URLs can expire) |
referral.video_url | Video creative URL. | When media_type is video |
referral.thumbnail_url | Video thumbnail URL. | Video creatives |
referral.ctwa_clid | Click ID for Meta CAPI. | Usually with ad referral; Status may omit. Persist |
referral.welcome_message | Optional object. Welcome message when Meta includes it. | Optional; nested keys unverified. Do not invent children. |
The Ad card you see in the WhatsAble inbox is chrome. It reads from the same referral fields above; it is not a new set of fields, and WhatsAble does not create the ad or persist these for you.
| What you see | Maps to |
|---|---|
| Ad preview | Creative (image_url / video_url / thumbnail) |
| See Ad | Inbox control |
| Source ID | source_id |
| Media type | media_type |
| Source type | source_type |
| Headline / body | headline / body |
| Customer's first line | last_message_of_user |
last_message_of_user is a same-event message field, not part of referral. It already exists on the payload; this row only maps it to the card you see.
ctwa_clid and source_id?You do. WhatsAble forwards first-inbound referral. You persist ctwa_clid and source_id yourself because later messages in the same chat usually omit them. WhatsAble does not persist them for the customer.
Status ads can also send a referral; ctwa_clid may be omitted. That is still a referral — do not treat Status ads as unrelated to this page.
Write those fields to a Sheet or CRM, then report which creative and which platform produced the WhatsApp lead.
The first inbound hits n8n, Zapier, Make, or a webhook you created. You persist `source_id` on the contact yourself, so the next person who opens the chat can see which Meta ad started it.
The same first inbound appends `ctwa_clid` and `source_id`. You persist those two yourself, then group the week by ad.
Ads Manager saw the click. WhatsApp saw the chat. The first-inbound referral is the join — only if you persisted it.
Sibling blog on the referral. This page owns the full field table and the inbox Ad card mapping.
Developer → add an endpoint URL → enable incoming. The first CTWA inbound POSTs referral to that URL.
Same first-inbound referral. Map top-level referral, persist ctwa_clid and source_id yourself.
Same first-inbound referral on the Zapier trigger.
Same first-inbound referral on the Make trigger.
Agent Skill only if it sits on a webhook you created.