Why Is My Marketing Attribution Broken?

Marketing attribution usually breaks because source data is dropped at a handoff: between the ad click and the landing page, between the landing page and the form, or between the form and the CRM. Each break leaves the lead with a blank or Direct source. Tools like Trakt record each form submission with the UTMs stored in the browser.

  1. The click to the landing page. Redirects, URL rewrites, or page changes strip the UTMs from the URL.
  2. The landing page to the form. The form has no hidden field to capture the UTMs, so it submits without them.
  3. The form to the CRM. The data is captured but never mapped, or is dropped by an integration along the way.

The attribution chain, in four steps

An ad click carries UTMs to the landing page URL, hidden form fields capture them, and they are stored in mapped CRM properties.

Once you know which handoff is failing, the fix becomes obvious.

Why UTM Data Goes Missing: The 3 Places Attribution Dies

Attribution does not just disappear. It gets dropped at specific handoff points.

1. The click to the landing page

UTM parameters live in the URL. If someone clicks your Meta ad and lands on yoursite.com/demo?utm_source=facebook&utm_medium=paid&utm_campaign=q2-retarget, those parameters are in the address bar, for now.

They die here when:

  • Your landing page does a redirect that strips the query string.
  • Your site loads in a way that rewrites the URL (some page builders do this).
  • The visitor navigates to a second page before filling out a form, and the UTMs do not follow them.

This is less common than the next two failure points, but it happens, especially with redirects and subdomains.

2. The landing page to the form

This is where most attribution data dies, and it is invisible unless you know to look for it.

When someone fills out a form on your site, the form submits whatever fields it contains. If there is no hidden field configured to capture utm_source, that value never gets sent anywhere. It does not fail loudly. The form just submits without it.

Your CRM receives the lead. The lead source field is blank or defaults to "direct". Nothing breaks and nothing throws an error. The data just does not exist.

3. The form to the CRM

Even when hidden fields exist, the data can still drop between the form and the CRM. This happens when:

  • The form integration does not map the hidden field to the correct CRM property.
  • The CRM property is not set up to receive free text (a dropdown field will not accept "facebook").
  • A Zapier or Make workflow connects the form to the CRM but does not pass the UTM fields through.
  • The form tool and CRM use different field naming conventions (utm_source vs UTM Source vs Lead Source).

By the time a lead lands in Salesforce or HubSpot, it may have passed through several different systems. Each one is a place where UTM data can be dropped, reformatted, or silently ignored.

What Direct Traffic Actually Means in Your CRM

When your CRM shows a lead came from "direct", it does not mean they typed your URL directly. It means the source data was unavailable.

Every lead that comes through a broken attribution pipeline ends up in "direct". That bucket becomes a graveyard of misattributed paid traffic, email clicks, social referrals, and affiliate leads, all lumped together because the plumbing failed somewhere upstream. If your direct bucket is large, you are not seeing traffic that cannot be tracked. You are seeing tracking that broke before the data reached you. For the five causes behind it, see why leads show as direct.

The 5 Most Common Scenarios Where Attribution Breaks

Scenario 1: Facebook ads with no hidden fields

You are running Meta campaigns and traffic flows to a landing page with a contact form. The form has no hidden fields, so every lead that comes in shows as "direct" or has no source data.

The fix: add hidden fields for utm_source, utm_medium, utm_campaign, utm_content, and utm_term, and configure them to read from the URL parameters on page load.

Scenario 2: HubSpot forms not capturing UTMs

HubSpot has an "Original Source" property, but it uses its own attribution logic, not UTM parameters. If you want UTM data in your contact properties (so you can see it in deals, reports, and the CRM), you need to add hidden fields manually for each UTM value and map them to custom contact properties.

Most HubSpot users skip this step and wonder why their UTM reports are empty.

Scenario 3: Multi-step forms losing UTMs between steps

Single-page forms are relatively easy to configure. Multi-step forms, where step 1 collects name and email and step 2 asks about company size, often lose UTM data between steps because each step is a separate form submission or page load.

The fix: pass the UTM values as hidden fields on every step, or store them in a session cookie that persists across the steps.

Scenario 4: Page redirects stripping query strings

A common setup: your ad points to landing-page.com/offer, which redirects to yoursite.com/offer. If the redirect is not configured to preserve query strings, the UTMs die there. A 301 redirect passes them, but many URL builders and link shorteners do not.

The fix: test every redirect in your funnel by clicking through your actual ads and checking what URL you land on.

Scenario 5: Zapier workflows dropping UTM fields

Your form tool sends data to Zapier, and Zapier creates a contact in your CRM. But the Zap only passes the fields you explicitly mapped when you set it up, and at that point you had not added hidden UTM fields yet.

The fix: edit the Zap, add the UTM fields from your form tool, map them to the corresponding CRM properties, and run a test with a real submission.

What a Complete Fix Needs in Place

Getting attribution right requires three things working together.

Every ad, email, and social post that drives traffic to your site needs UTMs. This sounds obvious, but most teams are inconsistent: different people build links differently, campaigns launch without UTMs, and the data is fragmented from the start. A shared UTM builder with team-level templates keeps links consistent.

2. Hidden fields on every form

Every form that generates leads needs hidden fields for utm_source, utm_medium, utm_campaign, and ideally utm_content and utm_term. These fields read the URL parameters on page load and submit with the form. Most form builders support hidden fields. The tedious part is setting them up on every form and keeping them updated as your forms change.

3. Clean CRM field mapping

The hidden field data needs to land somewhere useful. That means custom CRM properties for each UTM value, mapped correctly from your form tool, with a consistent naming convention across your stack.

Once all three are in place, every lead in your CRM has a source and every deal has an origin, so the question of which campaign is actually driving revenue has an answer.

If you want each submission recorded with its source, pre-register for Trakt.

How to Diagnose Your Current Setup

Before fixing anything, run this quick audit:

  1. Click one of your live paid ad links and land on the form page.
  2. Look at the URL in your browser. Do you see UTM parameters?
  3. Fill out the form with test data.
  4. Find that test lead in your CRM.
  5. Check the UTM and source fields. Are they populated?

Then read the result:

What you seeWhere it brokeLook at
UTMs missing from the URL in step 2Click to landing pageRedirects and link setup
UTMs in the URL, but empty source fields in step 5Landing page to form, or form to CRMMissing hidden fields or broken CRM mapping

Why Broken Attribution Costs More Than Reporting Accuracy

Lost attribution is not just a reporting inconvenience. It affects real decisions.

  • You cut channels that were working. When a channel shows $0 in attributed revenue, it looks like it is not working. But the leads were there, they just were not tagged.
  • You over-invest in the wrong source. When attribution is broken, "direct" often looks like your biggest source, so you over-invest in SEO or brand while paid campaigns go unmeasured and under-resourced.
  • Agencies lose proof of value. If you cannot show clients where their leads come from, every renewal conversation is harder. Attribution is a retention tool.
  • Founders fly blind. If you are running paid spend without form-level attribution, you know traffic costs money but not which traffic turns into revenue.

Why Manual Attribution Fixes Break in Practice (And How Trakt Closes the Gap)

Every fix above works. The problem is that the hidden fields have to be set up on every form and kept up to date as your forms change.

How Trakt closes the gap

Trakt scans your site and injects hidden UTM fields into every form automatically, so every form captures UTM data without anyone touching the form builder. It also gives you a free UTM builder with team-level templates for the link side of the chain.

Manual Fixes vs. Trakt, By Requirement

RequirementManual (DIY)Trakt
Hidden UTM fields on every formAdded by hand, form by formInjected automatically after scanning your site
Keeping fields current as forms changeSomeone has to keep them updatedHandled by the site scan, no form builder edits
Consistent UTMs on every linkDepends on each person building links the same wayUTM builder with team-level templates
CRM field mappingSame either way: custom CRM properties, mapped correctly, with consistent namingSame either way: custom CRM properties, mapped correctly, with consistent naming

Frequently Asked Questions

Why is UTM data missing from my CRM leads?

Most often because the form has no hidden fields to capture the UTMs, so the form submits without them. The UTMs sit in the URL, but a form only submits the fields it contains. Nothing errors out, and the lead arrives with a blank source or a default of "direct".

Where does attribution data usually die?

The landing page to the form handoff is where most attribution data dies, because it is invisible unless you know to look for it. The click to the landing page (redirects and page changes) and the form to the CRM (mapping and integrations) are the other two places, and both are less common than a missing hidden field.

What does direct traffic mean in my CRM?

It does not mean the lead typed your URL. It means the source data was unavailable by the time the lead reached the CRM. A large direct bucket is usually a pile of misattributed paid, email, social, and affiliate leads that lost their source somewhere upstream.

How do I audit whether my attribution is working?

Click a live paid ad link, land on the form page, and check that the URL still carries UTMs. Submit the form with test data, then find that test lead in your CRM and check whether the source fields are populated. If the UTMs were in the URL but the fields are empty, the break is at the form or the CRM mapping. If the UTMs were missing from the URL, the break is upstream at a redirect or the link itself.

Why do multi-step forms and Zapier workflows lose UTMs?

A multi-step form often treats each step as a separate submission or page load, so UTMs captured on step 1 are not carried to step 2 unless you pass them as hidden fields on every step or store them in a session cookie. A Zapier workflow only passes the fields you mapped when you built it, so if the UTM fields were added to the form afterwards, you need to add and map them in the Zap action and test with a real submission.