Blog

Fix Lead Source Gaps in HubSpot Forms

By
The Reform Team
Use AI to summarize text or ask questions

Missing HubSpot lead-source data? I start by checking 5 points: URL → hidden field → contact property → workflow → report. Fix the first place values go missing or change - not just the report.

Here’s what I check:

  • Form setup: Match UTM parameters to hidden fields and HubSpot properties, including Reform mappings. Test redirects, embeds, and saved values.
  • Overwrite rules: Keep incoming, first-conversion, and latest-conversion UTMs separate. Use workflow rules to protect first-conversion values and handle repeat submissions.
  • Blank values: Decide whether blanks stay blank or retain earlier values. A missing UTM does not prove a visit was direct.
  • Reporting: Test new and returning contacts, review property history, and confirm reports use the intended fields. Keep HubSpot’s built-in traffic sources separate from custom UTMs.

My rule: <u>first-conversion UTMs are not first-touch data</u>. Once the setup passes testing, I check it after changes and track blank-source and Unknown-source rates separately each month.

Fix HubSpot Lead Source Gaps: 5 Checkpoints

Fix HubSpot Lead Source Gaps: 5 Checkpoints

Fix Missing UTMs in Form Submissions

Map URL Parameters to Hidden Fields

If UTMs are missing before the contact record updates, the problem is in the form layer. Map each UTM property to a hidden field. The property’s internal name must match the query parameter exactly.

HubSpot uses property internal names, not labels, to map URL parameters. Avoid default values like direct, website, or unknown unless you intend the value to stay static.

Check Redirects, Embeds, and Saved Values

Test the published page - not the editor. Confirm that redirects keep every parameter in the final URL and that the embed loads the published form with its current fields. Then check property history to see whether the values reached HubSpot.

If a parameter appears in the URL but the live form drops it, check whether hidden fields pull from the current URL or previously saved values.

When visitors navigate before submitting, verify how UTMs carry over between pages and whether storage depends on consent. Test both new-browser sessions and returning-contact sessions. If the value reaches HubSpot and then disappears, check workflows.

Check UTM Mapping in Reform Forms

For Reform forms, set up the same parameter-to-property mapping inside the integration. Match hidden-field names to query parameters, map them to the intended HubSpot properties, and turn on Enable tracking. Save the integration and confirm that the connection is active.

Check that values carry through multi-step page changes and partial submissions. If a value appears in Reform but not in HubSpot, the problem is in mapping or sync - not the parameter.

If the form submits correctly but the value changes later, check workflow rules next.

UTM tracking in HubSpot with custom properties and forms

Fix Blank and Overwritten UTM Values

If UTMs reach HubSpot but later disappear or change, check your property logic and workflows. The form can work correctly while saved attribution is wrong.

Before building automation, decide what you’re tracking: first-touch, latest-touch, or individual submissions. Document which source takes priority when records disagree. For backfills, use submission logs, campaign records, analytics exports, or another documented source - not just the contact record.

Issue Likely cause Diagnostic check Fix
All UTMs are blank Untagged visit, unmapped fields, or lost parameters Test known UTMs; inspect the payload and contact properties Map fields, preserve parameters, and define an Unknown or Unattributed rule
Earlier values changed A workflow overwrites first-conversion fields Check property history and workflow logs Lock first-conversion fields; separate latest and staging fields
Only some fields are populated Incomplete URL or field mapping Compare the final URL, hidden fields, and submission Keep the partial snapshot and flag it for review
Systems show conflicting values Different field definitions or attribution windows Compare values, definitions, and timestamps Standardize naming and define the system of record

Separate First, Latest, and Staging UTMs

Create separate staging_utm_*, first_utm_*, and latest_utm_* properties. Send incoming values to staging fields rather than directly to first-conversion fields. This keeps new submissions from overwriting saved first-conversion attribution.

Lock the first-conversion snapshot with a single marker, such as first_conversion_recorded_at. Set that marker when your chosen first-conversion rule is met. HubSpot has no built-in write-once setting for these custom fields, so the lock depends on workflow logic.

Property group Purpose Overwrite policy Reporting use
First-conversion UTMs Preserve the defined first conversion Write once; lock through workflow logic First conversion, not necessarily first visit
Latest-conversion UTMs Store the latest qualifying conversion Apply qualification and omission rules Recent conversions
Staging UTMs Hold incoming values Update per submission; handle omissions Workflow logic and debugging, not submission history

Then route each submission through a workflow that applies the right overwrite rule.

Trigger Workflows on Form Submissions

Use the form submission trigger for the correct form, and enable re-enrollment for repeat submissions. Without re-enrollment, later submissions from the same contact skip the update logic.

On each run, check the lock marker before writing to first-conversion fields. Update latest-conversion fields separately.

Check whether workflow actions read submission-specific values or the contact’s current properties. Test two submissions in quick succession, plus two submissions with identical UTMs. Avoid unnecessary delays, and don’t clear staging fields while other actions still need their values.

If event-level isolation isn’t available, keep an immutable submission record in an integration log or another auditable store.

With the workflow logic in place, set rules for blanks so reports treat them consistently.

Set Rules for Partial and Missing UTMs

Choose snapshot reporting or latest-known reporting. Don’t mix them. Blank UTMs don’t prove that traffic was direct or organic.

Apply the same rule across reports so blanks always mean the same thing. Keep self-reported and offline sources separate. Use Unknown or Unattributed only when a defined business rule calls for it.

Model Omitted or blank parameters Reporting effect and risk Implementation rule
Submission snapshot Record the blank field. Accurate submission data; incomplete reports Use submission-specific values; preserve blanks
Latest known non-empty Keep the previous value. More populated reports; potentially stale attribution Copy only non-empty values; label fields latest-known
Separate snapshot and retained values Store both values separately. Auditable current and retained data Use separate fields or records; flag partial data without combining campaigns

Test Lead Source Data from Form to Report

Once the form and workflow logic are in place, test the full path from URL to report. A form submission alone doesn’t prove attribution works. These checks help pinpoint whether missing UTMs, blank fields, or overwritten values start in the form, workflow, or report.

Trace each test contact from the tagged URL through hidden fields, submission records, contact properties, workflow history, and report fields. Before each test, record the exact URL, form name, email, browser and session, submission timestamp, and expected values.

Test New and Returning Contacts

Use separate test contacts for three cases: complete UTMs, source-and-medium-only UTMs, and no UTMs. Start each new-contact test in a clean browser session. Then reuse an existing test contact through a different campaign and two different forms. Check that partial submissions follow your blank-value rule.

After the workflow finishes, submit the same values again. Then submit twice in quick succession to check for staging conflicts. Compare each submission timestamp with the workflow actions. If the second run never fires, check workflow timing before blaming re-enrollment.

Once you’ve checked the submission path, confirm that the contact record and workflow actions kept the same values.

Verify Property History and Report Fields

Compare the hidden-field values with the submission record. Review the contact’s property history for changes, timestamps, and update sources. Check workflow history for the enrollment reason and branch.

Confirm that first-conversion fields stay unchanged and latest-conversion fields follow your chosen blank-value policy. Fix the first point where values differ, rather than just correcting the final report.

Build a lead-source validation report for those test contacts using the exact custom UTM properties. Check the report’s date range, object type, filters, and whether it counts contacts or submissions. Verify that its lead-source values match the saved properties. Compare HubSpot’s Original Traffic Source and Latest Traffic Source separately.

Save report rows and supporting records as pass/fail evidence. Rerun these checks after changes to embeds, redirects, mappings, workflows, or report definitions.

Conclusion: Maintain Consistent Lead Source Data

HubSpot lead-source data relies on standardized UTMs and matching hidden-field mappings. After any change, check that source data stays aligned from form submission to report.

Keep raw, first-conversion, and latest-conversion UTMs separate. Lock first-conversion fields once populated, and follow your blank-value policy so blank submissions don’t overwrite valid data.

Use these checks to keep source data consistent:

  • After embedding a form or making embed changes: Rerun the full URL → hidden field → contact property → workflow → report test.
  • Before campaign launches: Check UTM values against your approved lowercase values, including spelling and formatting.
  • After property changes: Rerun a full submission test.
  • Monthly: Calculate blank-source and Unknown-source rates separately: affected contacts ÷ contacts from forms that month × 100. Review results by form and landing page. Investigate sustained increases before they distort attribution.

FAQs

Can I recover missing UTMs for existing leads?

Once first-touch data is overwritten, you generally can’t recover it. Hidden form fields collect values only when someone submits a form. They can’t fill in missing UTMs for existing leads after the fact.

To prevent future gaps, keep first-touch and last-touch properties separate. Set up a HubSpot workflow to fill first-touch fields only when their values are unknown. This keeps later interactions from overwriting the original acquisition data.

How can I prevent stale UTMs across campaigns?

Create separate custom HubSpot properties for first-touch and last-touch UTMs. Map your form’s hidden UTM fields to those custom properties - not HubSpot’s native Original Source properties. Set first-touch values only once, and let last-touch values update with every submission.

Using Reform? Add a hidden field for each UTM parameter. Match each field’s name to its parameter name, then map it to the corresponding custom HubSpot property.

Why do my custom UTMs differ from HubSpot’s traffic sources?

HubSpot uses its tracking cookie to fill in traffic source properties. Custom UTM fields need explicit mapping and setup. Differences between the two can come from missing submission data, a missing hutk cookie value, or overwritten fields.

Check that hidden fields have values at submission, include hutk in the submission context, and confirm that property mappings are correct. Store initial source data in a permanent property, such as a custom First Conversion field, to keep it from being overwritten.

Related Blog Posts

Use AI to summarize text or ask questions

Discover proven form optimizations that drive real results for B2B, Lead/Demand Generation, and SaaS companies.

Lead Conversion Playbook

Get new content delivered straight to your inbox

By clicking Sign Up you're confirming that you agree with our Terms and Conditions.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
The Playbook

Drive real results with form optimizations

Tested across hundreds of experiments, our strategies deliver a 215% lift in qualified leads for B2B and SaaS companies.