Cookie preferences

Choose what we may use. Strictly necessary cookies keep you signed in and can't be turned off; everything else is your call and changes nothing about how the site works. You can change your mind any time from the footer.

For Salesforce

Which channels produced the opportunities you closed?

Export closed-won opportunities and reconcile them against your ad, call and partner exports — no campaign influence model required.

No API key Nothing to install in Salesforce No card required

The gap

Campaign influence needs every touch to be in Salesforce as a campaign member. The touches that matter most are the ones nobody ever loaded.

Salesforce 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.

  1. Needed

    Contact email or phone

    The primary contact on the opportunity, or the associated lead's contact detail. Email is usually cleanest in a Salesforce org.

  2. Needed

    Amount

    The closed-won amount, or the recognised revenue figure if your finance team uses a different one.

  3. Needed

    Close date

    The opportunity's close date, used consistently between uploads.

  4. Optional

    Record type or business unit

    Separates lines of business that have no business sharing a cost per deal.

Step by step

Getting the file out of Salesforce.

Written for somebody with Salesforce open in the next tab. Report names vary by edition, so each step says what to look for.

  1. Build a report of closed-won opportunities

    Include amount, close date and the contact's email or phone. A standard opportunity report with the contact fields added is enough.

  2. Cover at least two sales cycles

    If deals take six months, export eighteen months. Anything shorter and the opportunities closing now have no enquiry in the file to match to.

  3. Add the contact detail columns

    This is the step most orgs miss. An opportunity report with account names and no contact email cannot be matched to anything.

  4. Export to CSV and upload it

    Mapping is suggested, you confirm it, and manual mapping is always available for unusual headers.

  5. Upload every source you have

    Ad platform exports, call tracking, partner registrations, event lists, outbound sequences. Each is ranked on closed-won revenue.

What comes back

The page Salesforce 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 Salesforce account.

Traced to a channel$2,070,00069% of $3,000,000
Sales matched51 of 75high confidence only
Average sale$40,000per paid sale
ChannelShareSalesRevenue
Google Ads18$720,000
LinkedIn Ads21$930,000
Email marketing12$420,000
Direct / Unknown24$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.

Campaign influence is only as complete as your campaign members

Salesforce can attribute properly, and in a well-run org it does. The mechanism is campaign influence: every touch has to exist as a campaign member on the contact, and the model then distributes credit across them. When the data is complete the output is good.

The data is rarely complete, and the incompleteness is not random. Digital touches land automatically if the integration is configured. A conference conversation, a partner introduction, an inbound call to a regional office, a customer referral — these arrive as a person, not as a campaign member, and somebody has to remember to load them. The channels that get left out are systematically the offline ones.

So the report tells you about the channels that were easy to instrument, and is silent on the ones that were not. That silence reads as absence, and budget follows the report.

A reconciliation asks a narrower question and answers it honestly

Instead of modelling how much credit each touch deserves, this asks whether the person on a closed-won opportunity appears in a given source list. It is a coarser question, and that is the point: it has a definite answer and the answer can be checked by opening two files.

High-confidence matches — an exact phone or email after normalisation — count automatically. Weaker links are surfaced for a human to accept or reject rather than counted. And opportunities that appear in no source list at all are reported as unattributed, which on most orgs is a larger and more interesting number than anyone expects.

Because the whole thing runs on exports, it needs no admin project, no new object, no field on the opportunity and no change to how the sales team works.

Multi-line businesses need the split or the number is meaningless

Large Salesforce orgs usually run several businesses through one instance: new business and renewals, direct and channel, several product lines with wildly different deal sizes. A single cost per closed-won opportunity across all of them is an average nobody owns.

A record type or business unit column splits the report along the lines the company is actually managed on. It is the difference between a chart that gets shown once and a chart a business unit leader asks for monthly.

Partner and channel revenue can finally be priced

Channel-led revenue is notoriously hard to attribute, because the partner owns the relationship and the end customer may never touch your website. Deal registration gives you a record of the partner, not of the marketing that produced the end customer.

Uploading partner-sourced deals as a source file puts them on the same revenue axis as direct demand generation. The comparison — what the channel programme produced against what paid search produced — is one most organisations have never been able to make on a single scale.

Who reviews the matches, and why that matters in a large org

In an organisation where the marketing number is contested, the important property is not accuracy — it is auditability. A figure somebody can challenge and you can trace to two rows in two exports is worth more than a more sophisticated figure nobody can open.

Every match here is inspectable and reversible. High-confidence matches on a normalised phone or email count automatically; anything weaker is queued for a person to accept or reject, and that decision is recorded. Workspaces carry seats, so finance and marketing can look at the same queue.

That is a deliberately unglamorous design. It is also the reason the number survives the meeting where somebody asks where it came from.

Fair questions

“Salesforce already does that.” Not quite.

They say

“We have a full campaign influence model.”

We say

Then you have a good answer for the touches that are in it. This adds the ones that are not, and gives you a total that reconciles to the opportunity export rather than to the model.

They say

“Our admin will not add another integration.”

We say

There is nothing to add. This reads a CSV report your team can already run.

They say

“Our contact data is inconsistent.”

We say

Phones and emails are normalised before matching, which absorbs most of it. What cannot be matched confidently is flagged rather than guessed.

Questions

Salesforce, specifically.

Something else? Ask us and a person answers.

Closed-won opportunities with a contact email or phone, the amount, and the close date.

Salesforce 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.

Start today

Two exports, and you will know.

Nothing to install in Salesforce, no API key, and no need to have been tracking anything until now. Last year works as well as this month.