Marketing operations

How to stop HubSpot overwriting your first-touch UTM data

By the MarqIQ operations team · Updated

The short answer

A HubSpot contact property holds one value, so a hidden utm_source field is overwritten every time the same person submits another form. To keep first touch you need two sets of properties, First Touch and Most Recent, plus a workflow that copies Most Recent into First Touch only while First Touch is empty. MarqIQ creates the properties, adds the hidden fields to the forms you pick, and builds that workflow through HubSpot’s own API.

Why the value keeps changing

Most teams set this up once: five UTM properties, five hidden form fields, a snippet that fills them from the URL. It works on the first submission. Then the contact comes back three weeks later through a branded search, fills in a demo form, and the LinkedIn campaign that found them is gone. Nothing broke. A single-value property did what single-value properties do.

HubSpot’s own Original Source does not rescue you here. It records a channel bucket such as Paid Social or Organic Search with two drill-down levels, which is useful, but it is not your campaign, content and term as separate reportable fields. For any contact created by an import or an integration it reads Offline Sources, which in a sales-led company is a large share of the database.

The setup that holds

Two property groups. Most Recent takes whatever the form sends and is allowed to change. First Touch is written once. The piece people skip is the guard: the workflow enrols a contact when Most Recent Source is known and First Touch Source is unknown, copies the values across, and never re-enrols. Without the "is unknown" condition you have built a second copy of the same problem.

Do the capture in the browser as well. If the first visit had UTMs and the form fill happens four pages and two days later, the parameters are long gone from the URL. The values have to be held in a first-party cookie from the landing visit and read back at submit time.

  • Create First Touch and Most Recent properties for source, medium, campaign, content and term, plus entry URL and referrer.
  • Add the Most Recent set as hidden fields on every form that creates contacts, including the ones embedded on landing pages nobody remembers.
  • Build the copy-if-empty workflow with re-enrolment off.
  • Backfill existing contacts from whatever history you have before you start reporting on the new fields.

Where Safari quietly breaks it

Safari caps cookies written by JavaScript at seven days. A buyer who first arrives from an analyst report on the 1st and returns on the 12th looks like a brand-new direct visitor to any script that trusts its own cookie. For B2B cycles that run in months, this is the norm and the reason "Direct" grows every year.

MarqIQ keeps the durable record on the server. Once a first touch is stored against a visitor or an email address, the earliest known value wins over whatever a fresh cookie jar claims. A first touch can be learned once. It cannot be replaced.

What MarqIQ does, and what it leaves to you

The guided setup runs three steps: it creates the missing properties, places the hidden fields on the forms you select and reports each form’s result back to you, then builds the first-touch workflow. It all happens inside your HubSpot portal through the public API, so everything it creates is visible, editable and yours if you leave.

It does not rewrite history it never saw. Contacts that arrived before tracking was live can be backfilled from existing data, but a lead from 2023 with no recorded source stays unknown. We would sooner show you an honest "unknown" than a confident guess.

Quick answers

Why does HubSpot overwrite my UTM parameters?

A contact property stores a single value. Each form submission with hidden UTM fields writes the newest value over the previous one, so the property always shows the most recent campaign, never the first.

Is HubSpot Original Source the same as first-touch UTM?

No. Original Source is a channel bucket with two drill-down levels. It does not keep campaign, content and term as separate fields, and it reads Offline Sources for contacts created by import or integration.

Can I lock first touch without a developer?

Yes. You need a second set of properties and a workflow that copies values only when the first-touch property is empty. MarqIQ creates the properties, hidden fields and workflow for you through the HubSpot API.

Read next

Check your own numbers first

Connect one tool and run the audit. It shows how much of your lead source data is missing, and the report is yours to keep either way.