You run a Click-to-WhatsApp ad on Facebook or Instagram. Someone taps it, lands in WhatsApp, and sends you a message. It shows up in your inbox like any other chat, and nothing on the screen says which ad brought them in. By the time you scroll back, 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 Make. But WhatsAble does not store it for you, and most chats drop the referral by the second message. If your scenario does not read it on that first event, there is no second chance.
This guide builds the Make side end to end. You save the referral on first contact, mark the chat when the lead qualifies, 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 scenarios.
What you are building
Three moves, all in Make:
- Save the click ID and ad ID the moment the first message arrives, keyed to the contact's phone number.
- Mark the chat with a label you create once the lead qualifies, then update your record.
- 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 Make 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 Make listens in the background.
To connect the two, install the WhatsAble for WhatsApp Business app into your Make organization. Open your WhatsAble dashboard, select Connect to Make in the side menu, and follow the Install prompts. You can also find it directly in the Make app marketplace at make.com/en/integrations/whatsable-message - it is a public, Verified listing, no invite required. The WhatsAble Make integration page and the Make module docs cover the full connection and API key steps.
One decision up front. You can run all three moves as separate scenarios, and that is the cleaner approach. The first scenario saves the referral, the second watches for your label, and the third sends the conversion. Splitting them keeps each scenario short and easy to test.
Step 1: Catch and save the referral on first contact
Create a new scenario. Click the large + button to add your first module, search for WhatsAble or WhatsAble for WhatsApp Business, and under Triggers pick "Incoming Messages from console (Notifyer System)". This trigger fires only on inbound messages from contacts, which is exactly what you want for CTWA attribution.
The module configuration opens and asks for a webhook. Click Add next to the Webhook dropdown. Give the webhook a name, then create your connection: click Add next to the Connection dropdown, enter a name, paste your Notifyer API key, and click Save. Make validates the key and returns you to the webhook dialog. Click Save, confirm the webhook is selected in the trigger window, then Save again. Set the scenario schedule to Immediately as data arrives so instant triggers fire without delay.
Add a Filter module right after the trigger. The condition: referral exists. This drops ordinary chats that never came from an ad, so everything that passes carries the click data you need.
If you use the "Incoming & Outgoing Messages from console (Notifyer System)" trigger instead, add a second Filter condition: incoming_message is true. That check drops outgoing events from teammates typing in the phone app or the WhatsAble inbox. Both conditions are required with the dual trigger. With the inbound-only trigger, the referral filter alone is enough.
Map the fields you need. For attribution the short list is:
ctwa_clid, the click ID you send to Meta latersource_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 is in the attribution guide, so there is no reason to copy all of it into your scenario.
One shape detail before you write anything. The phone_number field can arrive as a number rather than a string. Coerce it to text wherever you use it as a key. That keeps one row per contact instead of two that look identical and sort apart.
Now write the row. Chain three Google Sheets modules:
- Search Rows, keyed on phone number, to check whether a row for this contact already exists.
- A Router that branches on whether a row was found.
- Update a Row if a row exists; Add a Row if it does not.
Each path writes phone (as text), ctwa_clid, source_id, and a timestamp. If your contacts live in a CRM, swap the Sheets modules for the CRM module in the same scenario 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 scenario with a real tap. Click your own ad, send a message, and confirm the row appears with a click ID. 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 is a second scenario: trigger again on "Incoming Messages from console (Notifyer System)", add a Filter 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. A Search Rows module finds the row, and an Update a Row module writes the new status.
One thing to avoid. Do not build the scenario 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-module scenario covers it:
- A trigger for the qualifying stage, such as a new row in a "won" sheet, a form submission, or a CRM stage change.
- A Search Rows module that retrieves the saved
ctwa_clidfor that phone number. - An HTTP module that posts the event to the Conversions API endpoint.
For a WhatsApp business messaging conversion, the event carries these values:
action_source: business_messagingmessaging_channel: whatsappctwa_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 Make straight to Meta's API. WhatsAble is not in that call, which is why the saved click ID from Step 1 matters. Without it there is nothing to tie the conversion back to the ad.
What you end up with
After these three scenarios 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 scenario 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 Zapier or n8n, the Zapier version and the n8n version follow the same three moves with different module names. To wire up the trigger itself, the Make module docs and the WhatsAble Make integration page cover the connection and webhook steps.