All posts
IntegrationsSeptember 15, 2026· Axel Meta

Track Click-to-WhatsApp ads in Zapier

Build the Zapier side of Click-to-WhatsApp attribution: save the referral on first contact, label the lead, and send the conversion back to Meta.

You run a Click-to-WhatsApp ad on Facebook or Instagram. Someone taps it, opens WhatsApp, and sends you a message. It lands in your inbox like any other chat, and nothing on the screen says which ad brought them in. Scroll back an hour later and the trail is cold.

Meta does attach that trail, once. On the first inbound message from a Click-to-WhatsApp ad, the payload carries a referral object with the ad details and a click ID. WhatsAble passes that object straight through to Zapier. It does not store the object for you, and most chats drop the referral by the second message. If your Zap does not read it on that first event, there is no replay.

This guide builds the Zapier side end to end. You save the referral on first contact, mark the chat when the lead is worth chasing, and send the conversion back to Meta yourself. For the full list of every referral field, read the Click-to-WhatsApp ad attribution guide. Here the focus stays on the Zaps.

What you are building

Three moves, all in Zapier:

  1. Save the click ID and ad ID the moment the first message arrives, keyed to the contact's phone number.
  2. Mark the chat with a label you create once the lead qualifies, then update your record.
  3. Post a conversion event to Meta's Conversions API with the saved click ID when the lead reaches a stage you care about.

WhatsAble does not create the ad and does not run any of these for you. You build them once and they fire on every ad-sourced chat after that. The first message is the only reliable window, so the whole design points at catching that event before the contact replies again.

Before you start

You need a WhatsAble account with your WhatsApp number connected, a Zapier account, and a Click-to-WhatsApp ad already running in Meta. Coexistence is supported, so the number keeps working in the WhatsApp Business app while Zapier listens in the background. To connect the two, connect the public WhatsAble app in Zapier and paste your API key. The WhatsAble Zapier integration page covers that setup.

One decision up front. You can run all three moves as separate Zaps, and that is the cleaner way to do it. The first Zap saves the referral, the second watches for your label, and the third sends the conversion. Splitting them keeps each Zap short and easy to test on its own.

Step 1: Catch and save the referral on first contact

Create a new Zap and pick the WhatsAble trigger "New Incoming or Outgoing WhatsApp Message". Connect your account with the API key if you have not already, then let Zapier pull a sample message so you can see the fields it returns.

One behavior trips people up here. That trigger fires on incoming and outgoing messages, including replies your team types in the WhatsApp Business app on the phone. Ad attribution only lives on inbound, so you have to filter.

Add a Filter by Zapier step right after the trigger with two conditions:

  • incoming_message is true
  • referral exists

Both matter. The incoming_message check drops the outgoing events you do not want, such as a teammate answering from the phone app. The referral check drops ordinary chats that never came from an ad. Read referral from the top level of the trigger output rather than digging into a nested message array.

When both conditions pass, keep the few fields you actually need. The short list for attribution is:

  • ctwa_clid, the click ID you send to Meta later
  • source_id, the Meta ad or post ID
  • the contact's phone number

Grab headline and source_url too if you want the ad text sitting next to the row. The full field reference lives in the attribution guide, so there is no reason to copy all of it into your Zap.

One shape note before you write anything. The phone number can arrive as a number or as text, so treat it as text wherever you use it as a key. That keeps one row per contact instead of two that look identical but sort apart.

Now write the row. A Google Sheets "Create Spreadsheet Row" action is the simplest worked example: one column each for phone, ctwa_clid, source_id, and a timestamp. If you want to avoid duplicate rows for the same contact, add a "Lookup Spreadsheet Row" step keyed on the phone number first, then update the row it finds. If your contacts live in a CRM, swap the Sheets action for the CRM's own Zapier action, or a Webhooks by Zapier step that posts to your CRM, and store the same values against the contact. Either way, write on this first event. Do not wait for a reply, because the referral is usually gone by the second message.

Test the Zap with a real tap. Click your own ad, send a message, and confirm the row appears with a click ID in it. If the row is empty, the referral was not on the event you caught, which almost always means the filter let a later message through instead of the first one.

Step 2: Mark the chat when it qualifies

Saving the click ID tells you where the lead came from. A label tells you the lead is worth acting on, and it gives you a clean signal to update your record later.

Do not lean on a built-in label named qualified. Create your own label in WhatsAble, for example ctwa-lead, and use that. A team member can apply it from the inbox. On Pro and Agency, an AI chatbot can apply labels when you tell it to in Custom Instructions, and ProactiveBot can manage them as well.

Once the label is on the chat, later message events can include a labels field, comma separated. The safe pattern in Zapier is a second Zap: trigger on "New Incoming or Outgoing WhatsApp Message", add a Filter by Zapier step that passes when labels contains your custom label, then update the Sheet row or CRM record you keyed on the phone number in Step 1.

Avoid one assumption. Do not build the Zap on the idea that applying a label by itself, with no new message, fires the trigger. That path is unverified. Anchor the update to a real message event that carries the label, and you stay on solid ground.

Step 3: Send the conversion back to Meta

Capturing the referral shows you which ad started the chat. Sending a conversion event back to Meta shows Ads Manager whether that ad produced a result. These are two separate jobs, and this one is yours to build. WhatsAble does not ship a native Conversions API, and there is no "send qualified" button in the console.

When a contact reaches a stage you define, such as a booked call, a paid order, or a deal moved in your CRM, read the ctwa_clid you saved in Step 1 and post a server-side event to the Meta Conversions API.

A three-step Zap covers it:

  1. A trigger for the qualifying stage, such as a new row in a "won" sheet, a form submission, or a CRM stage change.
  2. A step that looks up the saved ctwa_clid for that phone number.
  3. A Webhooks by Zapier action that posts the event to the Conversions API.

For a WhatsApp business messaging conversion, the event carries these values:

action_source: business_messaging
messaging_channel: whatsapp
ctwa_clid: <the value you saved on first contact>

You also need a Meta dataset ID and a system user access token from Business Manager. The request goes from Zapier straight to Meta's API. WhatsAble is not in that call, which is why the saved click ID from Step 1 matters so much. Without it, there is nothing to tie the conversion back to the ad.

What you end up with

After these three moves are live:

  • Every ad-sourced contact lands in your Sheet or CRM with its click ID and ad ID, written the moment the first message arrives.
  • A label you created marks the chats worth chasing, and later messages that carry it keep your record current.
  • Ads Manager gets server-side conversions that tie the original ad click to a real outcome, not just a chat that opened and went quiet.

None of this needs code. One Zap saves the referral, a second watches for your label, and a third sends the conversion. For the field reference and the same flow on a webhook, read the Click-to-WhatsApp ad attribution guide. If you would rather run the build in a self-hosted tool, the n8n version follows the same three moves with different node names. To wire up the trigger itself, the WhatsAble Zapier integration page covers the connection and the API key.

Ready to automate your WhatsApp?

Connect WhatsApp to Zapier, Make, n8n, Pipedrive, or Monday.com in minutes. Start free, no credit card required.

Start Free Trial