You're spending money on Facebook ads, Google ads, Instagram, and print flyers, all pointing to WhatsApp. But when a chat comes in, you can't tell which one worked. UTM parameters fix that.
The trick: UTMs live inside the message text
WhatsApp doesn't process URL query strings like a website does. You can't just tack ?utm_source=facebook onto wa.me/... and expect analytics.
The workaround: put the UTM in the pre-filled message. When the customer opens the chat, the message body includes your tracking info. You see it in your inbox, they see it (they usually don't care), and you know the source.
Building the link
Instead of:
https://wa.me/972541234567?text=Hi
Build:
https://wa.me/972541234567?text=Hi!%20I%27d%20like%20info.%0A%0Autm_source=facebook%26utm_campaign=summer_sale
Decoded, the customer sees:
Hi! I'd like info.
utm_source=facebook&utm_campaign=summer_sale
The UTM sits on a separate line below the human message. Most customers ignore it. You see it and know the source.
The five standard UTMs
- utm_source: where they came from (
facebook,instagram,google,email,flyer_july). - utm_medium: type of channel (
social,cpc,email,print). - utm_campaign: campaign name (
summer_sale,new_menu_launch). - utm_content: specific creative / placement (
carousel_ad_v3,bio_link). - utm_term: keyword or audience (
vegan_menu,local_retargeting).
You don't need all five. Most businesses do fine with just source and campaign.
Example: real UTM strategy
A restaurant running 4 channels:
| Channel | Pre-filled UTM |
|---|---|
| Facebook ad — summer promo | utm_source=facebook&utm_campaign=summer_promo |
| Instagram bio link | utm_source=instagram&utm_campaign=bio |
| Google Business Profile | utm_source=google&utm_campaign=gbp |
| Printed flyer (July batch) | utm_source=flyer&utm_campaign=july2026 |
At the end of each month, they count chats per UTM. Facebook = 40 chats → 12 orders. Google = 15 chats → 10 orders. Instagram = 25 chats → 8 orders. Flyer = 5 chats → 3 orders.
Cost per chat:
- Facebook: $180 / 40 = $4.50 (12 orders → $15 per order)
- Google: $0 (organic) → free customers
- Instagram: $60 / 25 = $2.40 → $7.50 per order
- Flyer: $200 print + $50 distribution = $250 / 5 = $50 per chat → $83 per order
Result: kill the flyer, double Facebook budget, keep Instagram, celebrate Google.
Without UTMs, none of this is knowable.
Weekly workflow
- Monday: open WhatsApp Business, scroll new chats from the week.
- Note the UTM in the first message of each new chat.
- Tag the chat with a label matching the source (or note in a spreadsheet).
- Track outcomes — did the chat become a customer? What's the value?
- Compare channels monthly. Kill losers, double winners.
Automation for teams handling >20 chats/day
At scale, manual UTM tracking breaks:
- WhatsApp Business API + CRM (HubSpot, Pipedrive, monday) — automatic UTM parsing from the first message into the lead record.
- Zapier / Make.com — trigger on new WhatsApp message, extract UTMs, log to a Google Sheet or CRM.
- Chatbot — if a chat starts with a UTM string, save the source and reply with the human message.
For under 20 chats/day, do it manually. It only takes 15 minutes a week.
Generate UTM-tracked links easily
Our free generator has a built-in UTM builder. Fill in source, medium, campaign — it constructs the link with UTMs embedded in the message. Copy, paste, ship the ad, track the results.