Metrics and analysis
UTMs that survive to the sale: the seven places they get lost
The UTM reaches the landing page and vanishes before the CRM. The seven places it disappears, how to test each one, and what to do when it cannot be fixed.
Also available in: Português · Español
The UTM is written carefully in the ad, arrives intact on the landing page — and in the CRM the source field is empty on 40% of leads. That gap is the most common cause of "we cannot tell which creative sells".
The good news is that the set of places where it gets lost is small and well known. There are seven.
1. The redirect that does not pass it along
The ad link goes to site.com/promo, the server redirects to site.com/promotion, and the query string does not come along.
How to test: open the ad's link with ?utm_source=test and see whether the parameter is still in the final URL.
How to fix: configure the redirect to preserve the query string. On almost every server and platform this is an option, and it almost always ships off.
2. Internal navigation
The person lands with a UTM, clicks "see plans", and the next page has nothing. The form is there, on the second page.
How to fix: capture the UTM on first load and store it in sessionStorage or a first-party cookie. The form reads from there, not from the current URL.
This is the most common loss point on sites with more than one page.
3. The form with no hidden field
The UTM is in the URL, the form submits, and the CRM receives name, phone and email. Nothing else — because nobody created the field.
How to fix: five hidden fields on the form (utm_source, utm_medium, utm_campaign, utm_content, utm_term), filled by script on load, and the five matching fields in the CRM.
Without the field on the CRM side, the data arrives and is discarded silently.
4. The iframe
A third-party form inside an iframe cannot see the URL of the page containing it. It sees its own URL.
How to fix: pass the UTMs in the iframe's URL, or use the tool's API to fill the hidden fields from the parent page. Every serious form tool documents that route.
5. WhatsApp
The click goes to wa.me, the conversation starts, and no UTM exists in that world.
How to fix: there are two routes. The link's prefilled text can carry a short code identifying the campaign. And for click-to-WhatsApp ads, the platform itself sends a click identifier alongside the first message — it arrives via webhook and is the most reliable route, because it does not depend on the user not deleting the text.
That identifier only comes on the first message of the conversation and only via webhook. Whatever is not stored at that moment cannot be recovered later.
6. The phone call
The person sees the ad and calls. There is no URL, no recorded click, no UTM.
How to fix: a different phone number per channel is the simple solution and it works. Dynamic number insertion solves it better, at a higher cost.
If neither is viable, accept that this slice is invisible — and count it as invisible in the report, instead of letting the number look like zero.
7. Manual entry in the CRM
A rep creates the lead by hand from a conversation. The source field stays blank, or becomes "referral" because that is first in the list.
How to fix: make the field required, with a closed list, including an honest option called "not identified". Recording that you do not know is better than recording a wrong value — a wrong value contaminates the whole report and nobody notices.
The full test, in 20 minutes
Walk the whole path as if you were a lead:
- Click your own ad (or open the final URL with the UTMs).
- Navigate as a user would, passing through at least one intermediate page.
- Fill in the form with an identifiable name: "TEST 26 Oct 2pm".
- Open the CRM and check the five fields.
If everything arrived, you are done. If it arrived partially, the failure point sits between the last step that worked and the first that did not.
Repeat this after every change to the site. The break almost always arrives with a redesign or a form-tool swap, and goes unnoticed for months.
The measure that matters: coverage
More important than fixing everything is knowing the size of what is missing:
leads with a source filled ÷ total leads = coverage
At 90%, you can rank creatives with confidence. At 60%, any ranking is an opinion about the half you can see. At 40%, do not rank anything.
Report coverage next to any by-source number, always. That is what separates an honest analysis from one that looks precise and is not.
When it cannot be fixed
Some channels are structurally opaque: word of mouth, the person who saw the ad and then searched the brand on Google, someone who bookmarked the site and came back two weeks later.
For those, the intake question — "how did you hear about us?" — is imperfect and still useful, as long as it is treated for what it is: a declaration, not a measurement. Store it in a field separate from the technical source, never the same one.
Mixing the declared with the measured in one field destroys both.
For the next step, carrying that source through to revenue, see connecting Meta Ads to your CRM. For the naming standard that feeds the UTM, see campaign naming conventions.
Frequently asked questions
Why does the UTM disappear between the ad and the CRM?
It lives in the URL, and any redirect, internal navigation or iframe form that does not pass it along erases the information. It has to be copied into a hidden field to survive.
Do UTMs work with Facebook native lead forms?
Not in the same way. An instant form never passes through a URL of yours, so the source comes from the platform's own campaign fields, not from a UTM.
Should I store the UTM in a cookie or in the session?
In both, giving priority to the first touch recorded. A first-party cookie lasting 30 to 90 days covers most decision cycles.
What do I do when the UTM is lost in WhatsApp?
Use an identifier in the link text, such as a parameter that becomes the first message, or the click identifier the platform itself sends on a click-to-WhatsApp ad.