Field notes

Why HubSpot leads show as Direct traffic: a practical diagnosis

Find out why HubSpot contacts appear as Direct traffic and test tracking, cookies, redirects, forms, and source-property expectations in order.

HubSpotDirect trafficTroubleshooting
Acquisition signals being checked before a contact reaches a CRM record

The problem in plain English

A person arrives from an ad, email, or another website. They fill out your form, but HubSpot shows the contact as Direct traffic. You expected to see the real source, so your campaign reports now look wrong.

Direct traffic does not always mean the person typed your address. It can also mean HubSpot did not have enough information to identify the source.

The solution in plain English

Test the full journey with a new contact. Check whether HubSpot can track the landing page, whether the campaign details survive redirects, and whether the form connects the visit to the contact. Do these checks in order so you do not fix the wrong thing.

First, check which HubSpot property you are reading

HubSpot separates how a record was created from how a contact interacted with your web content. Its official documentation defines:

  • Original Traffic Source: the first known source through which a contact interacted with the business;
  • Latest Traffic Source: the most recent known source;
  • Record Source: the tool or process that created the CRM record.

These fields answer different questions. Traffic Source describes how someone reached your website. Record Source describes how the contact was added to HubSpot—for example, by a form, import, or integration. Read HubSpot’s current traffic source property definitions before comparing fields.

Diagnose Direct traffic in this order

Diagnostic stations for tracking code, consent, redirects, forms, and CRM properties

1. Verify the landing page is tracked

Open the campaign URL in a private browser window. Confirm that the final page belongs to a domain configured for tracking and that the HubSpot tracking code runs after the applicable consent state. Test the real production URL, not a preview.

If an ad blocker or privacy setting prevents HubSpot’s tracking cookie, traffic-source values can be affected. HubSpot explicitly notes this limitation in its source-property documentation.

2. Follow every redirect

Campaign parameters must reach a page where they can be observed. Check link shorteners, HTTP-to-HTTPS redirects, trailing-slash rules, locale redirects, and application routers. Record the URL at each hop.

A redirect that drops the query string can make a paid click indistinguishable from an untagged arrival to downstream page code.

3. Confirm the contact is identified

HubSpot first sees an unknown website visitor. When that person submits a form, HubSpot must connect the earlier visit to the new contact. Test the exact form used on your live website. HubSpot forms, forms from other providers, imported contacts, and contacts created through an API may behave differently.

If you use hidden fields, remember that they capture values available at submission. HubSpot documents that hidden fields can pass known values, including URL parameters, into contact properties. See HubSpot’s hidden form field guidance.

4. Check whether the form lives on another domain

If the landing page is on one domain and the form is on another, the tracking cookie may not follow the visitor. Using the same tracking ID on both websites is not always enough. You need a supported cross-domain setup that joins the two visits.

Google’s cross-domain guide shows one common approach: add a short identifier to the link between the two websites so the second website can recognize the visit. Your HubSpot and form setup needs a method that your tools support.

5. Keep HubSpot source fields and your own UTM fields separate

HubSpot calculates Original Traffic Source using its own rules. A custom field such as first_utm_source stores the UTM value your website captured. The two fields can differ because they do not mean exactly the same thing.

Do not overwrite HubSpot’s field to make it match your custom field. Keep both, label them clearly, and choose which one each report should use.

6. Inspect the source drill-downs

“Direct traffic” is only the top-level answer. HubSpot’s drill-down fields can show extra details, such as the page where the person entered. Check those fields and the property history before deciding the source is completely missing.

A clean HubSpot source test

  1. Create a URL with unique UTM values.
  2. Open it in a private window with the intended consent state.
  3. Browse to an untagged page if that journey is common.
  4. Submit the production form with a never-used email address.
  5. Inspect Original Traffic Source, Latest Traffic Source, Record Source, drill-downs, and any custom UTM fields.
  6. Compare the contact immediately after creation and again after workflows run.

Save screenshots of the test. If the source starts correctly and changes later, check HubSpot workflows and integrations. If HubSpot says Direct but your custom UTM fields are correct, your website is saving the UTMs; the two fields simply use different rules.

What to fix for each result

Test resultLikely fix
Tracking code absentInstall or correct tracking on the landing and conversion pages
UTMs disappear on redirectPreserve the query string or remove the destructive redirect
Current-page UTMs work; multi-page journey failsSave the UTMs on your website before the visitor changes pages
Form request has values; custom properties are emptyCorrect form-to-property mapping and field types
Values are correct, then changeCheck workflows, imports, integrations, and contact merging
HubSpot source and custom source differWrite down what each field means and report them separately

For the multi-page case, use the dedicated guide to preserve UTM parameters across pages. For a broader system-level diagnosis, see why CRM lead-source data goes missing.

What TraceSig changes—and what it does not

TraceSig remembers the original source details and adds them to supported form submissions. It does not replace HubSpot analytics or change how HubSpot calculates Original Traffic Source. It also cannot collect data when the visitor’s consent choice or browser settings prevent it.

HubSpot can remain your CRM. TraceSig adds separate fields for the campaign, landing page, and referring website that were available when the visitor first arrived. Check the supported integrations or book a workflow review for your form setup.

Frequently asked questions

Does Direct traffic always mean someone typed the URL?

No. It means a stronger attributable source was not available under the system’s rules. Bookmarks, untagged links, blocked cookies, redirects, and untracked journeys can all contribute.

Can I manually change Original Traffic Source?

HubSpot documents that the top-level Original and Latest Traffic Source values can be updated manually, while associated drill-down behavior has constraints. Treat manual changes as governance decisions, not a substitute for fixing capture.

Why does a custom UTM field disagree with HubSpot?

The custom field may preserve raw first-touch evidence while HubSpot applies its own source classification and scope. Both can be correct under their definitions.

Will hidden fields remember UTMs from a previous page?

Not by themselves. A hidden field can submit a value, but another mechanism must retain and populate a UTM that is no longer in the current URL.

Should I replace HubSpot attribution with custom fields?

Usually no. Keep native properties for HubSpot’s model and custom fields for the evidence and business definitions your team needs. Label both clearly.