CloseRev reads a HubSpot export of closed-won deals — the contact's email or phone, the amount and the close date — and reconciles it against the lead and call records HubSpot never saw. It exists because HubSpot attributes what entered its own funnel, and the deals that began as a phone call or a walk-in are the ones its reports are quietest about. Deals with no traceable origin are reported as Direct / Unknown.
Page updated September 24, 2026.
The gap
HubSpot's attribution reports what HubSpot observed. Anything that reached you by phone, by referral or through a partner is invisible to it — and that is usually the half that closes.
HubSpot sees
What was sold, to whom, and for how much.
no shared row
Your ad account sees
The click, the keyword, the call, and what each one cost.
The file
What the export needs in it.
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
01Needed
Contact email or phone
The primary contact on the deal, or the associated company's contact. Email is usually the stronger key in a HubSpot book.
02Needed
Deal amount
The closed-won amount. If you recognize revenue differently from bookings, export the figure your finance team uses.
03Needed
Close date
The deal's close date. Consistent beats correct here — pick one and keep it.
04Optional
Pipeline or deal type
New business and expansion have different economics and should not be blended into one cost per deal.
Step by step
Getting the file out of HubSpot.
Written for somebody with HubSpot open in the next tab. Report names vary by edition, so each step says what to look for.
1
Build a deals export filtered to closed-won
Include the deal amount, the close date and the associated contact's email or phone. HubSpot's export builder handles this directly.
2
Extend the date range past your sales cycle
If deals take four months, a three-month export matches nothing and will look like the tool does not work.
3
Include contact properties, not just deal properties
The contact's email or phone is the join key. A deal export with company names and no contact detail is not matchable.
4
Export CSV and upload
Confirm the suggested column mapping, or map by hand. Nothing is inferred without you seeing it.
5
Add the sources HubSpot cannot see
Your ad platform exports, your call tracking export, and any partner or referral list — combined into one lead file with the source named on each row, so each is ranked on the same axis.
What comes back
The page HubSpot cannot show you.
Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the B2B SaaS page — not from a HubSpot account.
app.closerev.com/reports · FY2026 · sample
Traced to a channel$2,070,00069% of $3,000,000
Sales matched51 of 75high confidence only
Average sale$40,000per paid sale
Channel
Share
Sales
Revenue
Google Ads
18
$720,000
LinkedIn Ads
21
$930,000
Email marketing
12
$420,000
Direct / Unknown
24
$930,000
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
What changes when the deal and the ad share a row.
01
HubSpot attribution is good at what it can observe, and blind to the rest
HubSpot's multi-touch attribution is genuinely useful and it works on the interactions HubSpot recorded: page views, form submissions, email engagement, tracked sessions. Where a deal's whole history sits inside HubSpot, it gives a reasonable answer.
The problem is the deals whose history does not. A prospect who heard you on a podcast and called the office; a referral from an existing customer; a lead your agency generated in an account HubSpot never sees; a conversation started at a trade show and continued by email. HubSpot can hold a source property somebody typed, but it cannot observe the interaction, so the attribution model has nothing to weight.
Reconciling a closed-won export directly against a lead file built from the sources is a different mechanism with a different failure mode. It does not try to weight touchpoints; it asks whether this specific person appears in this specific source list. Where they do, that is a match. Where they do not, the deal goes to an unattributed bucket that stays unattributed.
02
Offline and partner sources rank on the same axis as paid
Most B2B teams have a channel they cannot price. Referrals, partner introductions, an events program, an outbound list, a podcast sponsorship. They are usually excluded from the attribution report entirely, which makes the measurable channels look more important than they are.
Add any of them to the lead file — names and contact details, with the source named on each row, are enough — and they are ranked by closed-won revenue beside Google and LinkedIn. That puts what the events program produced in revenue next to what paid search produced, on one scale.
03
New business and expansion are not the same acquisition
A HubSpot pipeline usually carries both new logos and expansion, and blending them flatters whichever channel serves existing customers. Expansion revenue is real, but it did not come from an advertisement — it came from the account team.
A pipeline or deal-type column separates them so new business can be judged on acquisition cost while expansion is credited to the original acquiring channel rather than to whatever campaign happened to be running.
04
Long cycles are the normal case, not an edge case
Enterprise deals in HubSpot routinely run two to four quarters. Cookie-based attribution cannot survive that, and even HubSpot's own attribution depends on the contact being cookied and re-identified across the whole period.
Because the join here is on the person rather than on a session identifier, a four-quarter gap costs nothing. The contact who filled in a form in January and signed in October is one match, and the January spend is credited with the October revenue.
05
Where the model and the reconciliation disagree is the interesting part
Running both is more useful than picking one. HubSpot's attribution distributes credit across the touches it observed; this reconciliation asks whether a closed-won contact appears in a given source list. They answer different questions and they will not agree.
The disagreements are diagnostic. A channel that HubSpot credits heavily and the reconciliation barely sees is usually a channel doing late-stage assist work on deals that started elsewhere. A channel the reconciliation ranks first and HubSpot scores low is usually one whose early touch happened off-site, before the contact was ever cookied.
Neither is wrong. But a marketing team that can explain both numbers is in a much stronger position than one defending a single figure it cannot decompose.
Fair questions
“HubSpot already does that.” Not quite.
They say
“We already pay for HubSpot Marketing Hub attribution.”
We say
Keep it. It answers a different question, on the touchpoints HubSpot saw. This one adds the sources it never saw and produces a revenue figure that reconciles to your deal export rather than to a weighting model.
They say
“Our data in HubSpot is messy.”
We say
The match needs one clean-ish contact detail, an amount and a date. Messy company names and half-filled custom properties do not affect it.
They say
“We use Salesforce as the system of record.”
We say
Then export from Salesforce instead — there is a page for that, and the method is identical.
Closed-won deals with the associated contact's email or phone, the amount, and the close date.
No. It answers what HubSpot cannot observe — offline, referral and partner sources — and produces a figure reconciled against your deal export.
Yes. Any list of people with contact details can go into the lead file under its own source name, and it ranks on closed-won revenue.
Yes, with a pipeline or deal-type column.
At least twice your average sales cycle, so the deals closing now have their original inquiries in the file.
No. This is a CSV export, so there is nothing to connect and no permissions to grant.
Export one. Each row is one deal and carries one email and one phone, so pick the contact most likely to appear in your lead records — usually the primary.
Yes, if you give it one of the two cuts — an import takes one Product / service column and one Location column, and an owner column can stand in for either.
They are reported as Direct / Unknown. Nothing is redistributed to make the attributed share look larger.
The deal export is the whole of what moves: an email or phone, an amount and a close date. No email threads, no notes, no properties you have added, and nothing from any other object. It is encrypted in transit and at rest, isolated per workspace, and a DPA is available before you upload anything.
Yes, and we recommend it. Where the two disagree is usually the most informative output.
Yes. The only requirement is that you can export closed-won deals with a contact email or phone.
By trade
Trades that run HubSpot.
What the report looks like once the export is in, written for each one.
HubSpot and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.