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.
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.
5. Consent blocked the cookie
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
- Why converters show up as direct traffic: the six ways GA4 loses the source.
- HubSpot attribution reports explained: what the built-in reports need.
- Influenced vs sourced pipeline: two pipeline numbers and when to use each.
- Tracking alerts: catching broken tracking in days.