Why So Many of Your HubSpot Deals Have No Source

By Görkem Sarptunalı · Last updated · 5 min read

Key takeaways

  • No associated contact means no source. Make adding one part of creating a deal.
  • Imported and sales-created contacts get offline sources by design.
  • Every form and landing page needs the HubSpot tracking code or a form integration.
  • Consent banners can hide a large share of first visits; measure the share, don't guess.
  • A "How did you hear about us?" field catches what tracking can't.
Deals with and without a source A row of deal cards; most have a coloured source tag, and three are grey with a question mark. Where did this deal come from? Missing contacts, imports, untracked forms and consent all hide the source. DealPaid Deal? DealOrganic Deal? DealEvent Deal? View full size

You build a deal report grouped by source and the biggest bar is "Offline sources", closely followed by "Direct traffic". The channels you spent money on look small. Before you conclude that marketing doesn't work, check whether the source was recorded at all.

How HubSpot decides a source

Every contact has an original source, set when HubSpot first sees them. If the person visited your site with the tracking code before converting, the source is that first visit's channel: organic search, paid social, referral and so on. If the contact was created in another way, the source describes how: an import, a sales email, an integration or a manual entry.

Deals carry source information through their associated contacts and companies. A deal report grouped by source reads from those associations, so a deal is only as well sourced as the contacts on it.

Six reasons the source goes missing

1. No contact on the deal

Deals created by sales from a call or a meeting are often saved without an associated contact. The deal has nothing to inherit. Fix: make adding a contact part of creating a deal (many HubSpot accounts can require the association on the create form), and check older open deals for missing contacts.

2. The contact was imported

Badge scans, purchased lists and data from another CRM arrive as imports, and HubSpot marks them as offline. That's accurate, and useless. Fix: import with a campaign or event property, and put each import on a named list so you know where it came from.

3. Sales created the contact

A rep adds a contact from their inbox or LinkedIn, and the source becomes a sales or CRM-based offline source. If the person had visited your site before on another device, that history isn't connected. Fix: a "Lead source" property on the deal that sales sets when they create it, with a short fixed list of options.

4. The form or page isn't tracked

Forms built in another tool, landing pages on a subdomain without the tracking code, or a booking widget that creates contacts through an integration all skip the visit that carried the UTM. Fix: install the tracking code everywhere, use HubSpot forms or its non-HubSpot form capture, and pass UTMs into hidden fields where you can't.

Where visitors must opt in to tracking, everyone who declines arrives as a contact with no prior visits, which often shows up as direct traffic. Fix: check what share of new contacts arrive this way each month. If it's large, rely more on self-reported source and less on tracked source for those regions.

6. The first visit was really direct

Some people type your URL after hearing about you on a podcast, from a colleague or at an event. Tracking reports this correctly as direct and still can't tell you why. Why converters show up as direct traffic covers this in depth.

Add the sources tracking can't see

Even with perfect tracking, some sources are invisible. Two cheap additions catch most of them:

  • A "How did you hear about us?" field on demo and contact forms, free text or a short list. It's messy and it's the only way to see word of mouth, podcasts and communities.
  • A deal source set by sales, chosen when the deal is created. Compare it with the tracked source each quarter; where they disagree you'll learn something about both.

For events, sponsorships and partner work, use lists. Put the people you met on a list named after the event, and count the deals they appear on. That's the method in how to measure event ROI.

Check it every week, not every quarter

Source problems start silently. A form plugin update stops passing UTMs and a month later a quarter of new contacts have no channel. Look at the share of new contacts with no useful source every week; a sudden jump almost always means something broke, not that your audience changed. Sporely does this check for you and sends an alert, as described on the tracking alerts page.

Quick Q&A

Why does HubSpot show "Offline sources" for my deals?

Because the associated contacts were created by import, by sales, by an integration or manually, not by a tracked visit. HubSpot is describing how they were created.

How do I set the source on a HubSpot deal?

Create a deal property such as "Lead source" with a fixed list of options and make it required when sales create a deal. Keep the tracked original source alongside it.

Why are so many HubSpot contacts direct traffic?

Often because consent banners blocked the tracking cookie, the visitor switched devices, or links in emails and documents carried no UTM. Some are truly direct visits.

Can I fix the source of old deals?

You can set a manual deal source on old deals. You can't recover visits HubSpot never tracked, so focus on fixing tracking for new contacts.

Does HubSpot attribute deals to events?

Only if attendance is recorded as an interaction or a property. Putting attendees on a list and counting the deals they appear on is the simplest reliable method.

Keep reading

More from the blog