WebhooksHow-to

Click-to-WhatsApp ads

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.

Does WhatsAble create the Click-to-WhatsApp ad?

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.

How do I map and persist the referral?

Here's the sequence, start to finish:

  1. 1Run the Click-to-WhatsApp ad in Meta Ads. WhatsAble does not create the ad.
  2. 2Open the WhatsAble dashboard.
  3. 3Go to Developer → add an endpoint URL, and turn on incoming. If you're creating a custom webhook instead, set incoming: true when you create it.
  4. 4When someone clicks the ad and messages you, the first inbound POSTs referral to that URL.
  5. 5Persist `ctwa_clid` and `source_id` yourself — write them to a Sheet or CRM. WhatsAble does not persist them for you.
  6. 6Do not wait for a later reply. Later messages in the same chat usually omit them.

That's the core loop for any destination. The specifics of where you point it differ slightly by tool:

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

n8n.

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

Agent Skill.

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

What's actually in the referral?

Top-level referral on the WhatsAble payload. messages[].referral is the Cloud API envelope. Do not map that unless that is the delivery.

FieldWhat it is
source_typead in the sample (post also documented).
source_idMeta ad or post ID.
source_urlAd or post URL (sample: Instagram permalink).
headlineHeadline shown on the ad or post.
bodyBody copy of the ad or post.
media_typeimage or video.
image_urlWhen the creative is an image.
video_urlDocumented for video creatives.
thumbnail_urlDocumented for video creatives.
ctwa_clidConversions API click id. Status ads can also send a referral; ctwa_clid may be omitted.
welcome_messageDocumented optional.

Who persists 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.

What would I actually use this for?

Write those fields to a Sheet or CRM, then report which creative and which platform produced the WhatsApp lead.

A CRM row that already knows the ad.

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.

A Sheet you can report from.

The same first inbound appends `ctwa_clid` and `source_id`. You persist those two yourself, then group the week by ad.

A downstream automation that joins the click to the chat.

Ads Manager saw the click. WhatsApp saw the chat. The first-inbound referral is the join — only if you persisted it.

Related

Related

Webhooks

Developer → add an endpoint URL → enable incoming. The first CTWA inbound POSTs referral to that URL.

n8n

Same first-inbound referral. Map top-level referral, persist ctwa_clid and source_id yourself.

Zapier

Same first-inbound referral on the Zapier trigger.

Make

Same first-inbound referral on the Make trigger.

Vibe Code

Agent Skill only if it sits on a webhook you created.

Start Free Trial