How to calculate B2B marketing ROI
Library > Calculate Marketing ROI
Written by Maimouna Corr Fonsbøl
Published on 14 October 2026
TL;DR: Calculate revenue-based marketing ROI as ((attributed revenue − marketing cost) ÷ marketing cost) × 100. Define the revenue, costs, attribution model, and campaign period before using the result.
For a profitability view, apply the relevant margin first. Keep pipeline-to-cost and ROAS separate so your budget decision rests on the measure you actually calculated.
The math is simple. The hard part is matching revenue and costs to the same campaign group, deciding which costs belong in the calculation, and allowing enough time for deals to close.
This guide uses a worked example and a repeatable checklist to help you make that comparison.
Step 1: Define the return and campaign group
Agree on the calculation with Finance and write the definitions beside the report.
Use a clear label such as “revenue-based marketing ROI” or “gross-profit-based marketing ROI” so readers understand what the percentage represents.
Suppose a webinar series costs $60,000 and receives $180,000 in attributed booked revenue from its campaign cohort. Those are illustrative figures. They give you a starting point for the calculation, but the result changes if you include different costs, use a different attribution model, or assess the campaigns before their deals mature.
Define these inputs
Unit of analysis: channel, campaign, program, or total marketing (pick one for the table).
Return: use attributed closed-won revenue for a revenue-based calculation, or the associated gross profit for a margin-adjusted view. Specify whether the value is contract value, ARR, or another measure.
Reporting basis: decide whether you are following a campaign cohort or reporting outcomes in a calendar period. Do not assume this month's closed deals came from this month's spending.
Time: record the campaign period and the date through which outcomes are measured.
Business filters: region, segment, product line, company size, industry.
Inclusion/exclusion rules: paid only vs all marketing, exclude internal traffic, exclude test campaigns, handle self-referrals.
Use pipeline for an earlier signal
Pipeline-to-cost: divide attributed qualified pipeline by the relevant campaign costs. It helps assess developing campaigns, but open opportunities are not realized returns.
Revenue-based ROI: compare attributed won-deal value with campaign costs once the cohort has had a reasonable time to develop.
In Dreamdata's reporting, keep the selected stage, dates, and filters visible. Compare the underlying deal values with the CRM before using them in a calculation.
Step 2: Connect the accounts and deals behind the return
Connect the recorded marketing activity to the companies and opportunities you’re evaluating. Inspect a familiar account to check that relevant touches, deal values, and dates appear as expected.
For the webinar series, for example, one person might attend while a colleague later requests a demo. An account-based journey helps you see both interactions in the context of the same purchase, rather than treating them as unrelated leads.
Check the relevant sources
CRM: opportunities linked to accounts; stage history is consistent; closed-won revenue fields are populated.
Marketing automation and events: campaign activity connects to the correct contacts and companies.
Web tracking: first-party tracking on your site so sessions can be tied back to accounts where possible.
Ads: platform data for spend and campaign structure at the same grain you’ll report (channel or campaign).
UTMs: a standard for source/medium/campaign and a process to enforce it for paid and partner links.
Review a sample before calculating
Choose familiar won deals and check the account association, value definition, currency, and outcome date.
For those accounts, check whether you can see identifiable marketing touches (ads, emails, web sessions, form fills) tied to the same account.
Investigate missing or unexpected source labels. Direct traffic can be legitimate; avoid automatically reallocating it to another channel.
Confirm campaign naming is consistent across CRM/MAP/ad platforms so you can group and join later.
Dreamdata's account-based data model connects contacts, companies, and touchpoints with pipeline and revenue. It’s the foundation for automated collection and attribution. Use Customer Journeys to inspect the records behind the return you plan to report.
Step 3: Match the costs to the campaign
Include the costs required by your agreed definition.
For the webinar series example, the $60,000 might comprise $30,000 in promotion, $20,000 in production, and $10,000 in allocated staff time. Avoid counting an expense twice when combining platform spend with your own cost records.
Agree on cost scope
Cost types: decide whether the calculation includes production, sponsorships, tools, agencies, and allocated staff time in addition to media spend.
Level: match campaign revenue to campaign costs, or channel revenue to channel costs. Document how shared costs are allocated.
Currency and timing: use a consistent currency and match costs to the selected campaign cohort. Confirm treatment of annual contracts and one-off costs with Finance.
Keep a supporting cost record
date range
channel
campaign name
platform
cost type
amount
currency
notes
owner
Two checks before you calculate ROI
Spend with no recorded activity: check whether tracking, campaign labels, or source coverage is missing before concluding there was no contribution.
Attributed value with no cost: check production, sponsorship, shared, and staff costs. Missing cost data does not mean the activity was free.
Dreamdata supports importing ROI cost data, including through Google Sheets. Follow the import template and verify how the imported costs map to the relevant channels and sources. Keep your supporting cost record detailed enough for Finance to check the allocation.
Step 4: Choose and label the attribution model
Use a model that fits the question and compare another perspective when it could change the investment decision. Keep accounts, outcomes, dates, and filters consistent during the comparison.
The same $180,000 in won-deal value can be distributed differently under first-touch, last-touch, or multi-touch attribution. Your ROI should use the revenue share assigned to the campaign under the stated model, rather than the full value of every deal that encountered it.
Use the model for the right question
First-touch: inspect where the recorded journeys begin.
Multi-touch: compare contribution across eligible interactions; linear provides an equal-credit baseline.
Last-touch: inspect the final eligible activity before the chosen outcome. Check early journey coverage before interpreting the result.
Keep the calculation reproducible
Primary model: show the model used for the reported ROI.
Comparison model: explain any difference large enough to change your budget recommendation.
Exclusions: internal traffic, self-referrals, test campaigns.
Owners: RevOps checks the configuration, marketing makes the campaign recommendation, and Finance confirms cost and return definitions.
Dreamdata's attribution models let you compare allocations on the same account-based foundation. Record material changes and save the report used for each budget decision, since new data or revised definitions can change historical results.
Step 5: Calculate ROI and distinguish the related metrics
Using the $180,000 example of attributed revenue and $60,000 marketing cost, revenue-based ROI is (($180,000 − $60,000) ÷ $60,000) × 100 = 200%. You have $3 in attributed revenue for each $1 of marketing cost. The 200% figure does not account for the cost of delivering the product or service.
If the applicable gross margin is 60%, that revenue represents $108,000 in gross profit. Gross-profit-based marketing ROI is (($108,000 − $60,000) ÷ $60,000) × 100 = 80%. This is still not company net profit: other overhead may sit outside the calculation.
Keep these formulas separate
Revenue-based marketing ROI = ((attributed revenue − marketing cost) ÷ marketing cost) × 100. For a gross-profit-based version, replace attributed revenue with its associated gross profit.
ROAS = revenue attributed to advertising ÷ ad spend. Pipeline-to-cost = attributed qualified pipeline ÷ relevant campaign cost. If cost is zero, the ratio is undefined; investigate missing costs instead of reporting infinite ROI.
Repeat the calculation consistently
Apply the agreed campaign group, outcome, dates, model, and business filters in the report.
Export attributed revenue at the level you are evaluating. Keep qualified pipeline in a separate column with its own label.
Match the revenue to the cost records using stable channel or campaign identifiers.
Calculate the selected ROI measure and label its cost scope. Calculate ROAS only where the revenue and ad spend refer to the same advertising scope.
Add a recommendation and the evidence behind it, including campaign maturity, deal volume, and account quality.
Include these fields in the report
channel
campaign (optional if you report at channel level)
Attributed closed-won revenue, with the value definition
Marketing cost, with included cost types
Revenue-based or gross-profit-based ROI, clearly labeled
ROAS (ads only)
Deal count and campaign cohort maturity
notes
Turn the result into a budget decision
Increase investment when mature results, suitable account quality, and delivery capacity support a test of additional spend. A positive historical ROI alone does not guarantee the next dollar performs equally well.
Hold or investigate when results depend on very few deals, missing costs, or incomplete tracking.
Change or reduce a campaign when a mature cohort consistently falls short of the agreed economics. Check its role across the journey before cutting it.
For example, $300,000 in qualified pipeline against the webinar's $60,000 cost gives a 5:1 pipeline-to-cost ratio. It can support continued evaluation while deals develop, but it is not a 400% realized ROI.
Dreamdata's performance reporting helps you inspect cost and outcome data before making that distinction in your report.
Step 6: Validate the numbers and test the next action
Review the calculation with marketing, RevOps, and Finance. Agree what the result supports: a larger test, a targeting change, or more time for the cohort to mature. Attribution estimates contribution within the recorded journey; use experiments when you need to assess additional impact.
Validation checklist
RevOps: model, exclusions, stage filter, and date field match the ROI spec.
Marketing Ops: UTMs and naming conventions are being followed; “direct/unknown” is monitored.
Finance: cost coverage and allocations match the agreed definition; large one-off costs are visible.
Anomalies: investigate revenue with no mapped costs, unexpected source gaps, or changes caused by revised definitions.
Test the audience or campaign change
If a segment shows useful returns, inspect the accounts behind it before expanding. Define the next campaign's audience, offer, budget, and success measure so you can assess whether the result holds as you invest more.
Dreamdata's Audience Hub lets you define audiences using account properties and engagement, then sync them to supported ad platforms.
Start with the segment you have evaluated, check its exclusions and destination, and monitor downstream pipeline quality.
Make the calculation useful
Keep the formula, cost scope, campaign group, attribution model, and maturity visible. Validate the inputs with your own go-to-market data, then use the result to make one clear investment recommendation.
A useful ROI report explains both the number and the decision it supports.