How to Track a WhatsApp Marketing Campaign with UTM Links

You sent a WhatsApp broadcast to 4,000 contacts. People clicked. You felt good. Then you opened GA4 and the whole thing showed up as “Direct” traffic, sitting next to people who typed your URL by hand.
So which sales came from WhatsApp? No idea. The data shrugged at you.
I run linkutm, a UTM and link management tool, and this is the single most common question I get from marketers in India and Southeast Asia. WhatsApp drives real revenue here. But by default it tells your analytics almost nothing.
Here’s the good news. You can track every click from a WhatsApp marketing campaign with one small change: UTM links. No API. No code. Just a tagged URL. Let me show you exactly how.
Why Your WhatsApp Marketing Campaign Shows as “Direct”
WhatsApp traffic disappears because the app sends no referrer. When someone taps a link inside a chat, WhatsApp does not tell your website where that click came from. GA4 sees a visitor with no source, so it dumps them into direct traffic.
This is what marketers call dark social. Sharing that happens in private channels (WhatsApp, Telegram, DMs) where no referrer survives. The traffic is real. The attribution is invisible.
Real talk: this is not a WhatsApp bug you can complain your way out of. It is how messaging apps protect privacy. The only fix is to put the source information inside the link itself. That is exactly what UTMs do.

The Preview Gets Stripped. The Tracking Does Not.
Here is the part that trips people up. WhatsApp often strips or flattens your link preview, especially in template messages sent through the Business Platform. The fancy image and title vanish. The link looks plain.
Marketers see that and assume tracking broke too. It did not.
A link preview is just Open Graph metadata that WhatsApp fetches to show a thumbnail. Your UTM parameters live in the query string, the part after the question mark. That string travels with the URL no matter how the message renders. Stripped preview, broken preview, no preview: the tracking still fires the moment someone clicks.
So stop worrying about how the message looks. Worry about whether the link is tagged.
The 3 UTM Tags to Use for WhatsApp
For a WhatsApp marketing campaign, you only need three UTM parameters. Keep them simple and consistent.
| Parameter | What it answers | WhatsApp value |
|---|---|---|
| utm_source | Where did the click come from? | whatsapp |
| utm_medium | What type of channel is it? | broadcast |
| utm_campaign | Which specific campaign? | diwali-sale-2026 |
A finished link looks like this:
https://yourstore.com/sale?utm_source=whatsapp&utm_medium=broadcast&utm_campaign=diwali-sale-2026
Two rules I will not bend on. Use lowercase only, because GA4 reads WhatsApp and whatsapp as two different sources. And replace spaces with hyphens, because diwali sale breaks into a messy encoded mess in the URL.
One honest limitation: utm_medium=broadcast is my preference, not a law. Some teams use chat or referral. Pick one and use it everywhere. Consistency matters more than the exact word. This is the heart of clean campaign tracking.
How to Set Up WhatsApp UTM Tracking (Step by Step)
Setting this up takes about five minutes. Here is the full process.
- Start with your destination URL. The actual page you want people to land on. Your product, your sale, your signup form.
- Add the three UTM tags. Source
whatsapp, mediumbroadcast, campaign your campaign name. You can type them by hand, but the free WhatsApp UTM builder fills all three and spits out a clean link in seconds. - Shorten it into a branded link. A raw UTM URL is long and screams “spam” in a chat. A short branded link like
go.yourbrand.com/diwalilooks trustworthy and still carries the UTM data underneath. - Drop the link into your broadcast. WhatsApp Business app broadcast list, or a template in the Business Platform. Same link works for both.
- Send a test to yourself first. Tap your own link. Check the address bar in the in-app browser. You should see the utm parameters sitting there.
- Confirm it in GA4 Realtime. Within a minute your test click shows up under source
whatsapp. Now you know it works before you hit 4,000 people.

That branded short link step is the one most people skip. Do not. I have watched broadcast click rates jump when the link looks like a brand instead of a 90-character tracking string. People in WhatsApp are cautious about spam. A clean link earns the tap.
WhatsApp Business App vs Business Platform: Does Tracking Change?
The UTM method works identically for both. The difference is scale, not tracking.
- WhatsApp Business app: You build broadcast lists of up to 256 saved contacts. You paste your tagged short link straight into the message. Great for small teams, local shops, and early-stage brands.
- WhatsApp Business Platform (API): You send approved template messages to large audiences through a provider. You insert the same tagged link as a URL button or in the body. Great for high volume.
Either way, the UTM lives in the link, and GA4 reads it the same. The Platform adds one bonus: many providers report button clicks on their side too. But that data stays inside the provider. Your UTM is what unifies WhatsApp with every other channel in GA4.
This is the same logic I covered for email campaigns with UTM. The channel changes. The tagging discipline does not.
Mistakes That Quietly Break WhatsApp Tracking
Most broken WhatsApp tracking comes down to four errors. I have made the first two myself.
- Mixing case.
utm_source=WhatsAppin one campaign andwhatsappin the next splits your data into two rows. Always lowercase. - Tagging only one link. If your message has two buttons and you tag one, the other click vanishes into direct traffic. Tag every clickable URL.
- Forgetting the campaign name. Source and medium without a campaign means you can see WhatsApp traffic but cannot tell Diwali from your weekend flash sale.
- Using wa.me links and calling it tracking. A
wa.melink sends people INTO WhatsApp to chat with you. It does not track people leaving WhatsApp for your site. Different job entirely.

How to Read WhatsApp Data in GA4
Once your links are tagged, the data shows up where you would expect. Here is the fastest path.
Go to Reports, then Acquisition, then Traffic acquisition. In the search box, type whatsapp. GA4 filters to sessions where your source is WhatsApp. Now you can see sessions, engagement rate, conversions, and revenue, all attributed to your broadcast.
Want to compare campaigns? Add Session campaign as a secondary dimension. Diwali sale versus flash sale, side by side. That is real campaign tracking, not guesswork.

One limitation to set expectations: cross-device journeys are still imperfect. Someone taps on mobile, then buys on a laptop later. GA4 may not stitch that perfectly. UTMs give you channel-level truth, not flawless person-level truth. That is fine. Channel-level is what you need to decide where to spend next month.
Which Channel Sends You the Most Qualified WhatsApp Leads?
Everything above tracks people leaving WhatsApp for your site. Plenty of teams run the opposite flow. They drive traffic from Instagram, Facebook, and email into WhatsApp, then ask the harder question: which of those channels brings the most qualified leads, not just the most chats?
This is exactly where a plain wa.me link fails you. It opens a chat, but it carries no source, so every conversation lands in the same inbox looking identical. You cannot tell the Instagram lead from the email lead. The fix is to stamp the channel before or during the click.
Two methods work:
- Tag the link before WhatsApp opens. Point each channel at its own tagged short link that then launches the chat. Your Instagram bio link carries
utm_source=instagram, your Facebook ad carriesutm_source=facebook, your email link carriesutm_source=email. GA4 records the source on the way in, so you know which channel started the conversation. - Carry a channel code into the chat. Use a pre-filled message with a tag, like
wa.me/15551234567?text=Hi,%20I%20saw%20your%20IG%20post. When the lead sends it, your agent or CRM reads the code and logs the source on the first reply.
Now the qualified part, because a click is not a lead and a lead is not a sale. Rank channels by what happens after the chat: a demo booked, a form filled, an order placed. Pass the channel value into your CRM or the final form so a closed deal is credited to the source that started it. Do that and the ranking often flips. The channel with the most chats is rarely the one with the most qualified leads. In my experience email sends fewer conversations but warmer ones.
One shortcut on the Business Platform: Meta’s click-to-WhatsApp ads pass a referral object that names the exact ad, so your Facebook and Instagram lead-source can arrive with the very first message.
Tracking WhatsApp Outreach and Enrollment Campaigns
Outreach is the hardest WhatsApp campaign to track, and enrollment teams feel it the most. A broadcast is one link sent to many people. Outreach is one-to-one: a counselor messages a prospective student, the chat is personal, and the enrollment lands days later on an application form or a phone call. The click and the conversion drift far apart. That gap is the real WhatsApp outreach tracking challenge.
Three moves close it for enrollment campaigns:
- Give each segment its own tag. Use a campaign name per intake and utm_content per cohort or counselor, like
utm_campaign=fall-enrollment-2026andutm_content=counselor-priya. Now you see which batch and which rep actually drive applications. - Send a clean branded link. A personal message with a 90-character tracking URL reads as spam. A short branded link keeps the outreach human and still carries every tag.
- Persist the UTM into the enrollment form. Store the parameters in a hidden field so a submitted application is stamped with its source. That is the only reliable bridge from a WhatsApp message to a completed enrollment.
Tag each intake window separately, fall versus spring, so you compare seasons cleanly and see which channel enrolls students, not just which one gets replies. It is the same campaign tracking discipline from the broadcast section, applied to a longer and messier funnel.
Frequently Asked Questions
How do I track a WhatsApp marketing campaign?
Add UTM parameters to the link you share in your broadcast. Use utm_source=whatsapp, utm_medium=broadcast, and a utm_campaign name. When people click, GA4 attributes the visit to WhatsApp instead of dumping it into direct traffic. No app or API is required, just a tagged URL.
Why does my WhatsApp traffic show as direct in GA4?
WhatsApp sends no referrer when someone taps a link inside a chat, so GA4 has no source to assign and files the visit as direct. This is dark social. Tagging the link with UTM parameters puts the source inside the URL, which fixes the attribution.
Does WhatsApp stripping link previews break UTM tracking?
No. The link preview is just Open Graph metadata that WhatsApp shows as a thumbnail. UTM parameters live in the query string of the URL, which travels with every click regardless of the preview. A stripped or missing preview has zero effect on tracking.
What UTM source and medium should I use for WhatsApp?
Use utm_source=whatsapp and utm_medium=broadcast for broadcast campaigns. Some teams prefer chat or referral for the medium. The exact word matters less than using the same value across every WhatsApp link so your data stays consistent.
Can I track clicks from a WhatsApp broadcast without the API?
Yes. The WhatsApp Business app and the Business Platform both work the same way for tracking. You paste a UTM-tagged link into the message, and GA4 reads the parameters on click. The API only changes your sending scale, not how the link is tracked.
Should I shorten my WhatsApp UTM links?
Yes. Raw UTM URLs are long and look like spam in a chat, which lowers taps. A branded short link looks trustworthy and still carries the full UTM data underneath, so you keep tracking and gain clicks at the same time.
How do I track which channel drives the most qualified WhatsApp leads?
Tag the link that sends people into WhatsApp, not just the one leaving it. Give Instagram, Facebook, and email each a distinct utm_source on the click-to-chat link, so GA4 records which channel started the conversation. Then pass that source into your CRM or booking form so you can rank channels by closed leads, not raw chats. The busiest channel is often not the one with the most qualified leads.
How do I track WhatsApp outreach for enrollment campaigns?
Give each outreach segment its own tag, using a utm_campaign per intake and utm_content per counselor or cohort. Send it as a branded short link so the personal message stays clean. Then persist the UTM into your enrollment form, so a completed application is credited to the exact outreach that drove it. That closes the loop between a chat and an enrollment.
Start Tracking Your Next Broadcast
Your WhatsApp marketing campaign is already driving clicks. You just cannot see them yet. Tag the link, shorten it, send a test, and confirm in GA4. Five minutes, and your next broadcast stops hiding in direct traffic.
Build your first tagged link now with the free WhatsApp UTM builder at linkutm, then watch the clicks land where they belong.