Skip to content
Salesforce Dictionary - Free Salesforce GlossarySalesforce Dictionary
DictionaryCCampaign ROI (Return On Investment)
SalesBeginner

Campaign ROI (Return On Investment)

Campaign ROI (Return on Investment) in Salesforce is a standard, read-only percentage on the Campaign object that compares the revenue a campaign produced against what it cost to run.

§ 01

Definition

Campaign ROI (Return on Investment) in Salesforce is a standard, read-only percentage on the Campaign object that compares the revenue a campaign produced against what it cost to run. Salesforce calculates it as the value of won opportunities tied to the campaign, minus the campaign's Actual Cost, divided by that Actual Cost, then expressed as a percentage. A result of 200 percent means the campaign returned twice its cost in closed revenue.

The "value of won opportunities" comes from opportunities where the campaign sits in the Primary Campaign Source field and the stage is closed and won. Actual Cost is typed in by hand on the campaign. Because both inputs are manual or attribution-driven, the ROI number is only as honest as the data behind it. Track cost loosely or skip the campaign link on opportunities, and the figure stops meaning anything.

§ 02

How Salesforce computes and reports Campaign ROI

The exact formula Salesforce uses

Salesforce defines Campaign ROI as a percentage: (Value Won Opportunities in Campaign minus Actual Cost) divided by Actual Cost, multiplied by 100. The numerator is the net gain, the revenue won above what the campaign cost. The denominator is the Actual Cost field. So a campaign that cost 10,000 and produced 30,000 in won revenue shows a 200 percent ROI, because the 20,000 net gain is twice the 10,000 spend. The calculation lives on the Campaign object and you do not write it yourself. It surfaces in the standard Campaign ROI Analysis report rather than as an editable field you drop on the page layout. Two things drive the output. The first is Value Won Opportunities in Campaign, which Salesforce rolls up from opportunities. The second is Actual Cost, which a person enters. If Actual Cost is blank or zero, the math has no valid denominator and the ROI reads as zero or empty, not as a true performance signal. Getting the formula right is mostly about feeding it clean inputs, because the arithmetic itself never changes.

What "value of won opportunities" actually counts

The revenue half of the formula is not pipeline and not every opportunity touched by the campaign. Salesforce counts the amount of opportunities that are closed and won AND have this campaign set as their Primary Campaign Source. Primary Campaign Source is a single lookup field on the Opportunity record. Each opportunity can name exactly one campaign there. That field, not the broader list of campaigns a contact responded to, decides which campaign gets ROI credit for the deal. This matters for two reasons. First, open and lost opportunities contribute nothing, so ROI reflects realised revenue, not forecast. Second, because credit is single-source by default, a deal influenced by three campaigns still hands its full won amount to just one of them. Teams that run multi-touch demand generation often feel this understates early-funnel work. The fix is Customizable Campaign Influence, covered below, which lets several campaigns share credit. Until that is set up, plan around the rule that one opportunity feeds ROI on exactly one campaign.

Actual Cost versus Budgeted Cost

The Campaign object carries two money fields that people confuse. Budgeted Cost is the amount you planned to spend. Actual Cost is what you really spent. ROI uses Actual Cost only. Budgeted Cost feeds planning and variance reports but never touches the ROI figure. The practical trap is timing. Marketing often sets Budgeted Cost when the campaign is created, then never circles back to fill in Actual Cost as invoices arrive. Months later the campaign shows strong won revenue against a blank Actual Cost, and the ROI column reads zero or empty because the denominator is missing. The discipline that keeps ROI trustworthy is updating Actual Cost as real costs land, venue invoices, ad spend, agency fees, list rentals, rather than waiting for quarter close. Some teams use a simple monthly checklist to reconcile Actual Cost against the finance ledger. Others automate part of it with a flow that flags any closed campaign whose Actual Cost is still zero. Either way, an accurate Actual Cost is the single biggest lever on whether the ROI number can be defended in a budget meeting.

Single-source credit through Primary Campaign Source

Out of the box, Salesforce attributes a won deal to one campaign through the opportunity Primary Campaign Source field. When a lead converts, Salesforce can set this field automatically to the lead's most recent or primary campaign, depending on configuration, or a rep sets it by hand. Whatever fills it, that one campaign collects the entire won amount for ROI purposes. This is the original Campaign Influence 1.0 behaviour, and it is the simplest model to run. The upside is clarity. There is no debate about who gets credit, and the ROI math stays clean. The downside is that it rewards whichever campaign happens to be primary, often a late-stage touch like a demo request, while the webinar or content offer that opened the relationship gets nothing in the ROI column. If your marketing mix is mostly single-channel or you care more about simplicity than nuance, Primary Campaign Source alone is fine. If a typical deal involves several campaigns over months, single-source credit will paint an incomplete picture and you should evaluate the customizable model.

Customizable Campaign Influence and shared credit

Customizable Campaign Influence lets more than one campaign share the success of a single opportunity. Instead of one campaign taking all the revenue, you attach Campaign Influence records to the opportunity, each naming a campaign and an attribution percentage. The default model that ships with the feature is the Primary Campaign Source model, which auto-assigns 100 percent to the campaign in the opportunity's Primary Campaign Source field. You cannot add records to that default model by hand. To split credit, you build a custom model and set it as default, then create influence records (manually, through automation, or through tools like Marketing Cloud Account Engagement) that distribute percentages across the campaigns that touched the deal. This changes how ROI reads. The same won revenue can now credit several campaigns at weighted shares, so an early webinar and a later demo each show partial return rather than all-or-nothing. Marketing operations teams adopt it to reflect the multi-touch reality of modern pipeline. The trade is added setup and the ongoing work of generating accurate influence records, which is why many orgs start with single-source and graduate to customizable once attribution maturity justifies it.

Reporting ROI: the analysis report and dashboards

You read Campaign ROI through reports, not by staring at a single record field. Salesforce provides a standard Campaign ROI Analysis report that lists campaigns with their cost, won revenue, and calculated ROI side by side. From there, teams build dashboards that slice ROI by campaign, by campaign type such as email, webinar, or trade show, and by quarter to show a trend. Because ROI depends on rolled-up opportunity revenue and a manually entered cost, the report is also a data-quality mirror. A campaign showing an absurd ROI, infinite or wildly negative, almost always points to a blank cost field or mis-attributed opportunities rather than genuine performance. Reviewing the analysis report on a regular cadence catches those issues early. Mature teams treat the monthly ROI review as both a performance check and a hygiene check. They confirm that closed deals carry the right Primary Campaign Source, that Actual Cost reflects real invoices, and only then read the ROI numbers as signal. Used this way, the report becomes the evidence base for where the next marketing dollar should go.

Common reasons ROI numbers lie

A handful of failure modes recur across orgs. The most common is a missing Primary Campaign Source: a deal closes from a marketing-sourced lead, but nobody set the campaign on the opportunity, so the campaign that earned the revenue shows zero return. The second is the blank Actual Cost that turns ROI into zero or an empty cell even though the campaign clearly produced revenue. The third is single-source credit masking multi-touch reality, where a late email blast collects revenue that several earlier campaigns actually generated. A fourth is double counting or stale influence records once Customizable Campaign Influence is enabled but not maintained, so percentages no longer add up to a sensible whole. Each of these is a data problem, not a Salesforce limitation. The cure is process: attribute opportunities to campaigns at the moment of capture or conversion, keep Actual Cost current, choose an influence model that matches how your funnel really works, and audit the ROI report before anyone uses it to make a budget call. ROI is trustworthy exactly to the degree that these habits hold.

§ 03

Make Campaign ROI accurate in your org

You do not create the Campaign ROI field; it ships with the Campaign object and is read-only. What you configure is everything that makes its inputs accurate, namely cost tracking, opportunity attribution, and optionally a multi-touch influence model. Do this once per org and reinforce it as ongoing process.

  1. Capture cost on every campaign

    On each campaign record, fill Budgeted Cost when you plan it and update Actual Cost as real invoices arrive. ROI uses Actual Cost, so a blank value here produces a zero or empty ROI no matter how much revenue the campaign drove.

  2. Wire up opportunity attribution

    Make sure won opportunities carry the right campaign in Primary Campaign Source. Set it automatically on lead conversion or have reps populate it, so the revenue half of the ROI formula has something to roll up.

  3. Decide your influence model

    Keep the default Primary Campaign Source model for simple single-touch credit, or enable Customizable Campaign Influence and build a custom default model when several campaigns should share credit for one deal.

  4. Report and review on a cadence

    Run the standard Campaign ROI Analysis report, build a dashboard that breaks ROI down by campaign type and quarter, and review it monthly to catch blank costs and mis-attributed deals before anyone acts on the numbers.

Actual Costremember

The real spend on the campaign; the denominator of ROI. Keep it current as costs land, not at quarter end.

Primary Campaign Sourceremember

The single lookup on Opportunity that decides which campaign gets credit for the won amount under the default model.

Customizable Campaign Influenceremember

The setting that lets multiple campaigns share weighted credit for one opportunity through Campaign Influence records.

Campaign ROI Analysis reportremember

The standard report that lists cost, won revenue, and calculated ROI per campaign for review and dashboards.

Gotchas
  • A blank or zero Actual Cost makes ROI read as zero or empty because the formula loses its denominator.
  • Only closed and won opportunities with this campaign as Primary Campaign Source count toward ROI; open and lost deals contribute nothing.
  • Under the default single-source model, a deal touched by several campaigns still gives its entire won amount to just one of them.
  • The default Primary Campaign Source model in Customizable Campaign Influence auto-assigns 100 percent and cannot take manually added influence records; you need a custom model to split credit.

Prefer this walkthrough as its own page? How to Campaign ROI (Return On Investment) in Salesforce, step by step

§

Trust & references

Sources

Cross-checked against the following references.

Official documentation

Straight from the source - Salesforce's reference material on Campaign ROI (Return On Investment).

Keep learning

Hands-on resources to go deeper on Campaign ROI (Return On Investment).

Was this entry helpful?
Help us write better definitions. Quick reactions or detailed edit suggestions.

About the Author

Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.

§

Test your knowledge

Q1. What formula does Salesforce use for Campaign ROI?

Q2. What must be populated for Campaign ROI to compute correctly?

Q3. What is a known limitation of Campaign ROI as a sole metric?

§

Discussion

Loading…

Loading discussion…