When the attribution report comes in well below closed-won revenue, the gap tends to get explained away. Different models, different date ranges, a sales team that “doesn’t log things.” Some of that is true. Some of the gap has a much more boring cause: deals sitting in HubSpot with no contact attached to them.

That part you can measure in an afternoon.

This paper is the hands-on recipe: find the deals, trace where they came from, repair the backlog and stop new ones. For the wider story of why HubSpot reports disagree with each other, read why your HubSpot reports don’t match.

Why do deals without contacts matter in HubSpot?

According to HubSpot’s attribution reporting documentation (last updated October 20, 2026), a deal counts in revenue attribution only when it sits in a closed-won stage, has at least one associated contact, and has known values for Amount, Create date and Close date. In HubSpot’s words, “Without an associated contact, the revenue will not be attributed to any interactions.”

The report is built on the contact’s tracked interactions. No contact, no interactions, no credit. Switching attribution models changes nothing for these deals, because they do not enter the report at all.

The same page leaves out sales activities (calls, meetings, conversations and one-to-one emails) that are not associated with both a contact and a deal. So a rep can run a full sales cycle in HubSpot, close the deal, and leave marketing and sales both uncredited for it.

How to find HubSpot deals without contacts

HubSpot gives you two routes. HubSpot’s default deal properties page (last updated September 29, 2026) lists Number of associated contacts as a default property that HubSpot updates automatically. Its custom report builder documentation (last updated May 30, 2026) says a report with Deals as the primary source shows deals with no contact in a (No value) row.

Route one: a filtered deals view.

  1. Open your deals and create a new view.
  2. Filter on Number of associated contacts is unknown or 0.
  3. Add a second filter for your closed-won stages, because that is the revenue attribution drops.
  4. Save the view. You will reuse it in the last step.

Route two: a custom report.

  1. Build a custom report with Deals as the primary source and Contacts as the secondary source.
  2. Read the (No value) row. HubSpot’s documentation says it “includes all of the deals not associated with contacts.”
  3. If you build the same report with Contacts as the primary source instead, those deals disappear from it entirely, which is one reason two reports on the same pipeline show different totals.

Start with closed-won. Open deals without contacts are a problem for later. Closed-won deals without contacts are revenue your attribution report is already missing.

Where are these deals coming from?

HubSpot records how each deal was created. HubSpot’s default deal properties page (last updated September 29, 2026) lists Record Source, with three Record Source Detail levels, as default deal properties that HubSpot sets automatically. Group your saved view by Record Source and Record Source Detail 1, and you can see which creation routes produce contactless deals in your portal.

  1. Add Record Source and Record Source Detail 1 as columns in the saved view, or as breakdowns in the report.
  2. Group or sort by them and count the deals in each group.
  3. Compare the groups against the ways deals get created in your portal.

Possibilities worth checking against your own breakdown: an integration that creates deals on its own, deals created from quotes, renewal deals, and reps creating a deal and skipping the association. Your Record Source breakdown is the evidence here. Treat any cause, including these, as a hypothesis until your own data confirms it.

A long tail of small groups points to a habit. One large group points to a single route you can go and look at.

Repair the backlog without guessing

HubSpot’s own advice is direct. The attribution reporting page (last updated October 20, 2026) says that if a deal has no associated contact, “you may want to identify the most appropriate contact for the deal and associate the contact with the deal.” Work closed-won deals first, newest first, and associate the person who bought.

  1. Sort the saved view by Close date, newest first.
  2. For each deal, ask the owning rep who the buying contact was.
  3. Before associating, search for that person and confirm you are not picking a duplicate record. Duplicate contacts in HubSpot covers how to check.
  4. Associate the contact with the deal, and associate the sales activities with both the contact and the deal, since HubSpot leaves out activities that are missing either association.

Where the rep can’t say who the contact was, leave the deal alone. Attaching a random contact from the account looks tidy and credits the wrong campaigns, which is worse than an honest gap. An unassociated deal is a known blind spot. A wrong association is a confident lie in the board deck.

How do you stop new deals being created without a contact?

Make the contact association required where deals get created. HubSpot’s documentation on fields seen when manually creating records (last updated September 9, 2026) says admins can customize the panel users see when they manually create deals, and a Starter, Professional or Enterprise subscription is required to make properties and associations required there.

  1. In settings, open the setup for the panel shown when users manually create deals.
  2. Make the contact association required.
  3. Write down the rule for when a deal gets created and who it must include. When to create a deal in HubSpot lays out how to write that rule.

Be precise about what this setting covers. HubSpot’s page describes the panel users see when they manually create records. It does not say the requirement applies to imports, the API or integrations.

So keep the saved view from the find step and check it weekly. The habit worth building: treat any new closed-won deal that lands in it as a prompt to look at the route that created it, not only to repair the one record.

What the gap says about the rest of your CRM

A deal with no contact is one visible symptom of a data model without an owner. In Clari Labs research published January 14, 2026, a Censuswide survey of 400 North American enterprise CROs, CIOs, VPs of Sales and IT, and RevOps leaders, 55% reported conflicting pipeline signals from disconnected data sources and 42% still lacked formal governance frameworks to ensure data consistency and accountability.

A second survey points the same way. Validity’s State of CRM Data Management in 2025, a survey of 602 CRM users and stakeholders, found 76% said less than half of their organization’s CRM data is accurate and complete. For what that looks like record by record, read the reality of dirty CRM data.

Missing associations are the easy part to see. The same drag can show up in places that are harder to filter for.

You can treat this as a one-off cleanup: run the view, associate what you can, turn on the required association and move on. Or you can treat it as the first symptom you happened to find, and check the rest of the record model before the next board report puts a number on it.

If you want that wider read, the free CRM Diagnostic runs read-only against your CRM, with 40+ automated checks across data quality, pipeline hygiene, freshness, reachability and ICP fit, and shows where the data underneath your pipeline is weak.