You know how much revenue came in. You cannot confidently say which activity generated it.
That is the usual state. Ads report conversions they defined themselves. The CRM reports opportunities someone remembered to fill in. The payment system reports cash. None of them share an ID.
TL;DR
Revenue attribution is a join you can defend: this invoice, this company, these campaigns, this sales motion. Start from billed revenue, not from the ad pixel. Resolve the company and contacts across CRM and ads. Then apply a written model. Native HubSpot and Salesforce attribution reports are only as good as the campaign field. If it is blank on half the deals, the report will be confident and wrong. The work is upstream.
The honest summary
A usable setup has four parts:
- Revenue from billing, not from the platform conversion
- Contacts and companies resolved across CRM and ads
- A written model, even a simple one
- A report leadership will actually use when they set budget
How to calculate attributed revenue is not a formula in isolation. It is billed amount, allocated by the rule you chose, only after the IDs exist.
What actually breaks
The pixel is not the ledger
Google and Meta will show revenue. That number is for bidding. Putting it in a board pack as revenue is how you double-count and fund the loudest channel.
The CRM amount is a wish
Opportunity amount is what someone typed. Invoices are what the customer paid. Credit the invoice. Use the CRM to hold the path, not the cash.
No shared company
Ads know a click. The CRM knows a contact. Billing knows a legal entity. Without a join, every model is a guess with a chart.
Native reports look finished
HubSpot multi-touch and Salesforce attribution will draw the picture they can. They cannot invent campaign on deals that never received it. Cleaning the field after close does not reconstruct the journey.
How to calculate it without lying
- 01Take the period billed revenue
- 02Attach each invoice to a company and, where it exists, a deal
- 03Attach the people on that company to the campaigns and sessions you actually stored
- 04Apply the written model (first, last, linear, or data-driven)
- 05Show the unattributed remainder as unattributed, not as other
The remainder is the health metric. If it is large, you do not need a fancier model. You need better capture.
What done looks like
- You can name the invoice, the company, and the campaigns
- Unattributed revenue is visible, not hidden in a bucket
- Budget conversations use this report, not three screenshots
- Campaign capture is part of routing and form design, not a quarterly project
When this is the wrong project
If you have one offer and one channel, last-touch in the CRM is enough. If you cannot explain a good month without a war room, start from the invoice and work backwards.
Common questions
- How to calculate attributed revenue?
- Start from billed revenue, attach invoices to companies and deals, attach people to stored campaigns, then apply the written model.
- What is revenue attribution?
- A join you can defend: this invoice, this company, these campaigns, this sales motion.
- What is an example of revenue attribution?
- An invoice for company A, two contacts who came from a LinkedIn campaign and a later demo, credited by a linear or last-touch rule you wrote down.
- Revenue attribution
- Marketing attribution
- HubSpot
- Salesforce