What is ROMI? Meaning, formula and how it differs from ROAS
ROMI tells you whether marketing actually made money once every cost is out of the number. ROAS counts a narrower slice, and the two can tell completely different stories about the same campaign - one showing a win, the other showing a campaign that barely broke even.

Quick answer: what is ROMI?
Return on marketing investment is net profit a campaign generated, divided by what it cost to run - above zero, the campaign made money; below zero, it lost money - and it works equally well stated as a ratio or a percentage.
ROMI = (Incremental Revenue Attributable to Marketing × Margin - Marketing Spend) / Marketing Spend, though some practitioners swap in gross profit instead of margin. The cost of goods sold and other variable costs come out of revenue before you divide.
The ROMI formula in plain words
ROMI = (Net Profit from Marketing - Marketing Cost) / Marketing Cost, where net profit means the campaign's revenue minus COGS - what it actually costs to deliver the product or service.
Take a campaign that generates $10,000 in revenue at a 50% margin - a contribution margin of $5,000 - against $2,000 spent on ads. ROMI = ($5,000 - $2,000) / $2,000 = 1.5, or 150%.
A ROMI of 1.5 means $1.50 in net profit for every $1 spent on marketing. Zero means you broke even; negative means you lost money.
The exact formula shifts by practitioner - some use incremental revenue adjusted against a baseline, others fold in overhead - though every version measures profit after marketing costs against those same costs.
Worked example with range numbers
Run a Facebook campaign for a $50 online course with a 70% margin (COGS = $15). Spend $500 on ads, land 20 sales at $50 each, and total revenue comes to $1,000 - gross profit at $1,000 × 70% = $700. Subtract the $500 ad spend and net profit is $200, so ROMI = $200 / $500 = 0.4, or 40%.
Scale it up - $2,000 spent, 60 sales, $3,000 in revenue, $2,100 in gross profit - and net profit is $2,100 - $2,000 = $100. ROMI = $100 / $2,000 = 0.05, or 5%, much lower because marginal efficiency dropped as spend grew. Typical e-commerce ROMI targets run 20% to 100%+, depending on vertical and scale.
SaaS margins run high, 80%+, and ROMI can look huge as a result: $1,000 in ad spend generating $5,000 in subscription revenue at 80% margin gives $4,000 gross profit, $3,000 net, a ROMI of 300%. That number still has to be checked against LTV, though - in trading or iGaming, ROMI often runs negative for months before users convert.
Keep the time window consistent when calculating it - 30-day profit for a single campaign, 90-day or LTV-based for a whole channel.
ROMI vs ROAS: what's the difference?
ROAS (revenue divided by ad cost) ignores the cost of goods sold entirely, so it answers how many dollars in sales an ad dollar generated. ROMI folds in margin or COGS instead, and answers how many dollars of profit that same ad dollar generated.
A ROAS of 4.0 can look great on its own, but at a 20% margin, gross profit per dollar of ad spend comes to only $0.80 - a ROMI of -0.2 - and the campaign is losing money regardless of what the ad platform reports.
In review meetings, the two numbers get read for different reasons - a media buyer checks ROAS against the day's bids, a CFO checks ROMI against the profit line, and neither substitutes for the other.
| Aspect | ROMI | ROAS |
|---|---|---|
| Formula | (Revenue × Margin - Ad Spend) / Ad Spend | Revenue / Ad Spend |
| Includes COGS? | Yes | No |
| Tells you | Profitability | Revenue efficiency |
| Target (typical) | >0 (positive profit) | >3 or 4 for break-even (depends on margin) |
| Best for | CFO, business owner, long-term planning | Media buyer, campaign optimization |
| Example | $1000 spend, $5000 rev, 40% margin gives ROMI = 100% | $1000 spend, $5000 rev gives ROAS = 5x |
Where you meet ROMI in practice
Bids and creatives get optimized against a ROAS target day to day in performance marketing, but a founder or CFO reading the report is asking about profit.
ROMI turns up in annual planning, budget allocation, and channel evaluation, where two channels running different margins can flip a ranking entirely. Channel A runs a ROAS of 3.0 at 30% margin, Channel B a ROAS of 2.5 at 50% margin: ROMI for A = (3.0×0.3-1)/1 = -0.1, a loss, while ROMI for B = (2.5×0.5-1)/1 = 0.25, a profit. Channel B wins despite the lower ROAS.
In affiliate marketing, ROMI decides which offers survive. An offer paying $40 CPA on a $100 product at 60% margin gives ROMI = (100×0.6-40)/40 = 0.5, or 50%; a second offer paying $30 CPA on a $50 product at 50% margin gives ROMI = (50×0.5-30)/30 = -0.17, and that offer gets killed.
Plenty of teams run on ROAS alone and unknowingly burn money because of it. The shift to ROMI usually happens once postbacks and cost data start flowing into the tracker - Keitaro, Binom - and unit economics become visible. With COGS known per product, ROMI per campaign is just a calculation away.
How ROI, CPA and LTV sit around ROMI
ROI is the broader term, and ROMI is really ROI narrowed down to marketing alone: ROI can pull in every cost - salaries, tools, overhead - while ROMI usually isolates marketing spend on its own.
Once cost per acquisition, CPA, exceeds gross profit per customer, ROMI turns negative - CPA is simply what it costs to land one customer, and ROMI leans on that number implicitly.
For long-horizon businesses like SaaS or iGaming, ROMI has to be based on lifetime value, LTV, rather than first-purchase revenue - the total profit a customer generates over the whole relationship. A campaign with a negative ROMI up front can still turn profitable once LTV runs high enough to cover it.
A dating app spends $50 to acquire a user who pays $10 a month for 6 months on average, at 90% margin. Revenue comes to $60, gross-profit LTV to $54, and ROMI = (54-50)/50 = 0.08, or 8% - just barely positive. Push retention to 8 months and revenue rises to $80, gross-profit LTV to $72, so ROMI = (72-50)/50 = 0.44, or 44%.
Whatever the business model, tie ROMI to the time horizon that actually matches it.
- ROI: the widest lens - every cost counts.
- CPA: cost per acquisition; plug it into ROMI as (LTV - CPA) / CPA once you're working from LTV.
- LTV: lifetime value - the number that makes ROMI meaningful in subscription or deferred-revenue models.
How attribution model changes ROMI: last-click, linear, and position-based
A single campaign running across Facebook, Google, and TikTok generates revenue one way, but assign it with different attribution models and that same revenue tells three completely different ROMI stories. Two marketers looking at the same data can see a winner and a loser in opposite places.
Last-click attribution gives all the credit to the touchpoint closest to the purchase - usually a search ad or a retargeting banner. Bottom-of-funnel channels look brilliant under it, because they get paid for the sale even when the buyer was already warm from an awareness campaign weeks earlier. Move the same spend and the same revenue to linear attribution and the awareness channel takes a share of that revenue back. Nothing about the campaign changed. The lens did.
Linear attribution splits credit equally across every touchpoint in the conversion path. It's more forgiving to top-of-funnel channels but can undervalue the final touch that actually closed the sale. First-click attribution flips the logic and overstates awareness spend.
Position-based (often called 40/40/20) gives 40% to first touch, 40% to last touch, and splits the remaining 20% evenly across the middle. It's a compromise, acknowledging that both discovery and conversion matter.
The practical result: a media buyer optimizing to last-click cuts TikTok spend while increasing Google spend, chasing the channel that looks best but may actually be piggybacking on TikTok's earlier awareness lift. The same channel mix under linear attribution would look different. Under data-driven attribution (which uses machine learning to weight each touchpoint), it looks different again.
There is no single true model. Attribution is a lens, and the honest way to use it is to run ROMI under two or three models and treat the spread as the answer. A channel that stays profitable across all of them earns its budget. A channel that goes negative under every model is done, and the argument about which model is right stops mattering.
Five ways a ROMI number goes wrong
Attribution gets ignored more than any other variable. A customer who converts after seeing three ads leaves an open question about which campaign should get credit for the revenue, and single-touch attribution answers it by inflating ROMI for whichever channel touched the sale last. Multi-touch or data-driven attribution gets closer to the truth, at the cost of being harder to set up.
Baseline sales get forgotten just as often - some customers would have bought without seeing an ad at all, and without incrementality testing, holdout groups that isolate the true lift, ROMI ends up overstated.
The classic mistake is using revenue instead of profit: a revenue-based version of ROMI, which is really just ROAS wearing a different name, looks rosy while hiding real losses underneath. Use gross profit or contribution margin as the input.
Time periods get mixed constantly: spend lands in January, revenue trickles in over the next 12 months, and the two need to be aligned rather than compared head to head. Cohort analysis - grouping spend and revenue by first-touch date - fixes it.
Fixed costs get ignored too. A ROMI that excludes salaries, tools, and agency fees works fine for campaign-level decisions, but the total marketing ROI used for budget decisions needs them folded back in.
FAQ
What is a good ROMI for e-commerce?
For e-commerce running 40-50% margins, a ROMI of 20-50% is typical, and anything above 100% is excellent. On low-margin products, 10-20%, even break-even at 0% can be acceptable if customer LTV is high enough.
Can ROMI be negative and still be okay?
Yes, if the spend is buying customer acquisition against a high LTV - SaaS often runs negative ROMI for months on that basis. What matters is tracking the payback period and confirming LTV exceeds CPA over time.
How do I calculate ROMI if I don't know my margin?
At minimum, you need an estimate of contribution margin - revenue minus variable costs. Without it, ROAS is the only number available; finance can usually supply a standard margin per product or category to close the gap.
Should I use ROMI or ROI for marketing?
ROMI is the sharper tool for campaign-level decisions; ROI, with every cost included, is better for judging overall marketing department efficiency. Both earn their keep - the only requirement is staying consistent in how costs get defined.
I can do this on your product
I consult on acquisition, funnels and retention - including hard verticals.
