What this does
Meta's Click-to-WhatsApp ads let people start a WhatsApp chat with your business straight from a Facebook or Instagram ad. When one of those leads lands in GHL, WAGHL can do three things with the ad's details — and each one is yours to turn on or off:
- Conversation — add the ad's details below the lead's first message, so your team sees where the lead came from without leaving the chat.
- Custom fields — save the ad's details onto the contact record, into fields you create (more on that below).
- Tag — tag the contact so you can tell ad leads apart from everyone else, and filter, automate, or report on them.
You can enable all three, any combination, just one, or none — set per number in the Ad Leads column of your device list. New numbers start with all three on. Whatever you choose, the lead's own message always arrives on WhatsApp and in the conversation.
Choose what happens per number
The three options live in the Ad Leads column of your number list, as three tick boxes — Conversation, Custom fields and Tag. Tick any mix you like; each saves on its own. Because it's per number, a sales number can show the full ad block while a broadcast number just quietly tags, for example.
| Tick box | What it does when ticked |
|---|---|
| Conversation | Shows the ad's details below the lead's first message in the GHL conversation. |
| Custom fields | Saves the ad's details onto the contact, into the custom fields you've created. |
| Tag | Adds the matching ad tag to the contact (e.g. fb-ad-lead-whatsapp). |
Where to set it
The Ad Leads boxes sit in the same per-number settings panel as Incoming, Contact and Calls.
Open the sub-account's devices
Sign in at waghl.com/login. In the left menu, click Sub-accounts — you'll see a list of sub-accounts with a Users Action column. Under that column, click the view icon (the eye) for the sub-account to open its list of numbers (devices).
Find the Ad Leads column
Each device row has an Ad Leads column with three tick boxes — Conversation, Custom fields and Tag. Hover any box for a one-line reminder of what it does.
Tick the ones you want
Tick or untick each box for that number. The change saves as soon as you click it — no separate save button — and applies to that number's next ad lead.
The tags
When the Tag box is ticked for a number, the contact is tagged based on where the ad ran. Existing tags on the contact are kept — the ad tag is simply added alongside them.
| Lead source | Tag added |
|---|---|
| Facebook ad | fb-ad-lead-whatsapp |
| Instagram ad | instagram-ad-lead-whatsapp |
| WhatsApp ad | wa-ad-lead-whatsapp |
| Facebook post button (boosted post) | fb-post-lead-whatsapp |
The ad details in the conversation
When the Conversation box is ticked for a number, the ad's details are appended below the lead's first message in the GHL conversation, so your team has full context right in the chat. The lead's own message comes first, then an ad block listing everything we captured — for example:
Hello! Can I get more info on this?
📢 Facebook Ad Lead
source_app: facebook
source_type: ad
source_id: 120200000000000000
title: Get a free quote
body: Spring sale now on — up to 30% off our full range for new customers. Fast delivery, easy returns, and friendly support whenever you need it. Message us your city and what you're looking for and we'll send yo…
source_url: https://fb.me/examplead
media_type: IMAGE
ctwa_clid: ArBxY2pQsAMPLEclid7nE3kZq0wVExmpl
greeting_message_body: Hi! Please let us know how we can help you.
lead_date: 2026-10-07
The header line (📢 Facebook Ad Lead) tells you the source at a glance — it reads Facebook Ad Lead, Instagram Ad Lead, WhatsApp Ad Lead or Facebook Post Lead depending on where the lead came from. The lines that follow carry each ad detail that was available.
ctwa_clid and source_id are always sent complete. The only line that can be shortened is a long body copy (shown trimmed with a trailing … in the conversation view only); the full copy is still saved to the body custom field if you've created it.
Capturing ad details in custom fields
With the Custom fields box ticked for a number, the ad's details are saved onto the contact record — but only into fields you've created. Create the fields below in GHL and choose which ones you care about; WAGHL fills in whichever of them exist.
How to create a field
Open custom fields in GHL
In your GHL sub-account, go to Settings → Custom Fields and click Add Field (for the Contact object).
Type the field name exactly
Use the exact Field name from the table below (for example, source_app) — all lowercase, with the underscores — and pick the Type shown. GHL turns the name into a key automatically, matching the one in the table.
Repeat for each field you want
Add as many or as few as you like. New fields are picked up within about an hour, after which new ad leads start filling them in.
The fields you can create
| Field name (type exactly) | Type | What it holds | Example |
|---|---|---|---|
source_app | Single line | Platform the ad ran on | facebook, instagram, whatsapp |
source_type | Single line | Paid ad or boosted post | ad, post |
source_id | Single line | Meta's ID for the ad | 120200000000000000 |
source_url | Single line | Link to the ad or post | https://fb.me/examplead |
title | Single line | The ad's headline | Get a free quote |
body | Multi line | Full ad copy | Spring sale now on — up to 30% off… |
media_type | Single line | Creative type | IMAGE, VIDEO |
media_url | Single line | Facebook post or video link (when present) | https://www.facebook.com/…/videos/… |
ctwa_clid | Single line | Meta click ID (sent in full), usable for conversion tracking | ArBxY2pQsAMPLEclid7nE3kZq0wVExmpl |
cta_type | Single line | The ad's button type | flow, url, call |
website_url | Single line | Website link on the ad (when present) | https://www.example.com/… |
greeting_message_body | Multi line | Auto-greeting shown to the lead | Hi! Please let us know how… |
lead_date | Date | When the ad message arrived | 2026-10-07 |
source_app, source_id, title and lead_date. That's enough to see which platform and which ad each lead came from, and when. Add more later whenever you want.
FAQ
Do I have to set anything up?
Not to get started. New numbers come with all three Ad Leads boxes ticked, so ad leads are shown in the conversation and tagged straight away. The only part that needs setup is the custom fields — you create those in GHL (see above) for the details to be saved onto the contact. You can untick any of the three boxes per number whenever you like.
Can I keep the tag but hide the ad block from the conversation?
Yes. The three boxes are independent. Untick Conversation and leave Tag (and/or Custom fields) ticked, and the ad block won't appear in the chat while the contact is still tagged and the fields are still filled. The lead's own message always arrives either way.
Will this create custom fields for me?
No — you create the fields in GHL. WAGHL only writes to fields that already exist, using the exact names in the table. Any field you didn't create is skipped, and your own unrelated fields are never touched.
I created a field but it's empty — why?
Two common reasons. First, new fields are picked up within about an hour, so a lead that arrived right after you added the field may predate it. Second, a field only fills if that detail was present in the ad — for example, website_url is blank for ads that don't link to a website. Also double-check the field name matches the table exactly.
Is the ctwa_clid cut off? It ends in "…" in the chat.
No — the ctwa_clid is always captured and saved in full. The trailing … you might see is only in the conversation view, where a very long body line can be shortened for readability. The actual click ID written to the ctwa_clid custom field (and sent on your webhook) is the complete value, exactly as Meta provided it, so it works for conversion tracking.
What about the campaign, ad set and ad names?
WhatsApp doesn't include those in the lead's message — only the ad's ID comes through (saved as source_id). Campaign, ad set and ad names live in Meta Ads Manager; you can look up the ad there using its ID.
If a lead clicks a different ad later, what happens?
The contact's ad fields update to the latest ad they clicked, so the fields always reflect their most recent ad. The tag for the earlier source stays on the contact.
Does this work with "Create Contact" turned off?
Tagging and field capture happen on a contact, so they apply when a contact exists. If a number has Create Contact set to No and the lead isn't already a contact, there's no record to tag — but the message still arrives on WhatsApp as usual.
Can I get the ad data on my own webhook?
Yes. If you receive messages on your own endpoint via Direct WA Inbound, ad leads include an extra ad_data block in the payload whenever any of the three boxes is ticked for that number. It's additive, so existing integrations keep working unchanged.
What's next?
- Webhooks for your number — send inbound messages (with ad data) to your own URL
- Stop incoming messages — control incoming messages and contact creation per number
- Premium actions & webhook — trigger sends from GHL workflows