Why WhatsApp leads lose their source
A customer clicks your Instagram ad, lands on the site, taps "WhatsApp us" and sends "Hi, price?". Your salesperson replies, sells, and the CRM records a deal with the source "WhatsApp". That is the channel the customer used to talk to you, not the ad that found them. After a month, Google Ads, Meta and TikTok each claim the same sales, and nobody can say which budget to cut.
The chain breaks in three places: when the person leaves your site for WhatsApp, when the chat starts with no context, and when the deal is created by hand. Each break has a fix.

The four links
| Link | What it records | Tool | Works with Business app? |
|---|---|---|---|
| 1. UTM tags on every ad and post link | Source, medium, campaign, creative | Link builder, GA4 | Yes |
| 2. WhatsApp click as a GA4 event | Which page and campaign produced the click | Google Tag Manager or site code | Yes |
| 3. Reference code in the prefilled message | Carries the campaign into the chat | wa.me link | Yes |
| 4. Source field on the CRM deal | Ties the sale to the campaign | Any CRM | Yes |
| + Click ID from click-to-WhatsApp ads | Ad-level attribution, sales sent back to Meta | WhatsApp Business Platform, Conversions API | No, API only |
1. UTM tags
Add utm_source, utm_medium and utm_campaign to every link you control: ads, bio links, QR codes, emails, influencer posts. Google's UTM reference also lists utm_content for telling creatives apart. Values are case sensitive, so Instagram and instagram become two sources. Write a naming sheet once and copy from it:
| Placement | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Meta ad, October offer | meta | paid_social | oct_offer |
| Google Search ad | cpc | brand_search | |
| Instagram bio link | social | bio | |
| QR code on the menu | qr | offline | table_menu |
2. The click as a key event
GA4 sees the visit but not the conversation. Record the moment someone taps the WhatsApp button as an event, whatsapp_click, and mark it as a key event (Google's current name for conversions). Now GA4 can tell you which campaign and which page produced WhatsApp clicks.
3. The reference code
WhatsApp's click to chat link takes a prefilled message: https://wa.me/9715XXXXXXXX?text= followed by URL-encoded text. Make the button add a short code built from the UTM tags:
- Visitor arrived with utm_campaign=oct_offer and utm_source=meta → prefilled text "Hi, I'd like to know more (ref M-OCT)".
- Visitor came from Google search → "(ref G-BRD)".
- No tags → "(ref WEB)".
A few lines of JavaScript read the UTM values from the page address, keep them for the session, and build the link. The salesperson, or a bot, reads the code from the first message.
4. The CRM field
Create one required field on the deal or contact: "Lead source code". The first reply in WhatsApp is the moment to fill it. If the code is missing, the salesperson asks where the customer found you and picks from a fixed dropdown. Free text like "insta", "IG" and "Instagram ad" can't be counted.
Click-to-WhatsApp ads: the click ID
Ads that open WhatsApp directly skip your website, so links 1–3 don't apply. On the WhatsApp Business Platform (the API), Meta attaches a click ID, ctwa_clid, and ad details to the first message from that person. Meta's Conversions API for Business Messaging then lets you send events back from the chat:
- action_source: business_messaging, messaging_channel: whatsapp;
- ctwa_clid, which Meta calls a required field for WhatsApp events;
- event names from Meta's list, including LeadSubmitted, QualifiedLead and Purchase, with value and currency.
The result: Meta's ad reports show which ads produced qualified leads and sales, not just "conversations started", and its delivery system can optimise towards buyers. On the WhatsApp Business app on a phone you don't get the click ID; use a different prefilled text per ad in the ad settings as your reference code.

A month of numbers, done right
Hypothetical example to show the arithmetic, not a client result:
| Channel | Spend, AED | WhatsApp clicks or chats | Sales | Cost per chat | Cost per sale |
|---|---|---|---|---|---|
| Meta ads (ref M-) | 6,000 | 300 | 12 | 20 | 500 |
| Google Search (ref G-) | 4,000 | 100 | 10 | 40 | 400 |
| Instagram bio (ref IG-) | 0 | 60 | 6 | 0 | 0 |
By cost per chat, Meta looks twice as good as Google. By cost per sale, Google wins. Without links 3 and 4 you only ever see the first number. For turning this into return on spend, see the cost benchmarks in our guide to Meta ads costs in the UAE.
What nobody tells you
Most sales are logged by people, and people skip fields. The tracking is only as good as the habit of filling the source field before replying. Make the field required and check it weekly.
The same customer comes twice. Someone clicks a Meta ad on Monday and messages you from a Google search on Thursday. Decide one rule, usually first source wins, and keep it, or your reports will change every time someone looks.
Consent still applies. Tracking scripts and pixels on a UAE site need a lawful basis under the PDPL. See our guide to cookies and consent for UAE websites.
Vladimir Chernyshev, GM: if you do only one thing from this guide, do the reference code. It costs nothing, works with the free app, and turns "WhatsApp" in your CRM into an answer to the question every owner asks: which ad paid for itself.



