Preferenze sui cookie

Scegli cosa possiamo usare. I cookie strettamente necessari ti mantengono connesso e non si possono disattivare; tutto il resto lo decidi tu e non cambia nulla nel funzionamento del sito. Puoi cambiare idea in qualsiasi momento dal piè di pagina.

Hands working a pink calculator over a spread of orange and white receipts and printed invoices on a white desk, a phone and a mug at the edge.

How to calculate marketing ROI when your sales close by phone or in person

Photo by Kaboompics.com (opens in a new tab) on Pexels

The marketing ROI formula is one line of arithmetic. The hard part is the number at the top of it: the revenue your marketing actually brought in, when the sale closed on a phone call or at a kitchen table. Here is how to get that number from your own sales, which costs belong underneath it, why ROI on margin ranks channels differently from ROI on revenue, and what to do about time lag and the sales nobody can trace.

Contents
  1. The marketing ROI formula, and the hard part of it
  2. ROI vs ROAS: two different questions
  3. ROI on revenue vs ROI on gross margin
  4. Which costs belong in marketing ROI
  5. Per-channel ROI from matched sales
  6. A worked example: four channels, three rankings
  7. Time lag: spend this month, sales next month
  8. What to do with untraced revenue
  9. Where to start this quarter

Marketing ROI is (attributed revenue − cost) ÷ cost. The formula is easy; the attributed revenue is not. For phone and in-person sales, get it by matching closed sales to the leads that started them, count every cost a channel needs, compute ROI on gross margin, group by lead month, and keep untraced sales in their own line.

Every marketing ROI calculator has two boxes: revenue and cost. The cost box is easy, because you have the invoices. The revenue box decides the answer, and most businesses fill it with whatever the ad platforms reported. For a business that closes online, those reports are near the truth. For one that closes by phone, in a showroom or in the customer's home, they are a count of leads with a guessed value attached.

This post is for businesses like HVAC contractors, dentists, law firms and car dealerships, where a lead is a phone call and a sale is an invoice in another system. It covers the formula, ROI against ROAS, revenue against margin, which costs count, time lag and untraced revenue, and ends with four channels whose ranking changes twice.

The marketing ROI formula, and the hard part of it

Marketing ROI = (revenue attributed to marketing − marketing cost) ÷ marketing cost. A result of 200% means each dollar of marketing came back as three dollars of revenue. The arithmetic is trivial; the number at the top, revenue attributed, is the part that decides whether the answer means anything.

A channel costs $5,000 in a quarter and is credited with $20,000 of sales: ($20,000 − $5,000) ÷ $5,000 = 300%. Credit it with $12,000 and the same spend is 140%. Credit it with $4,000 and it is −20%, a loss. The cost never changed. The decision moved with one input, and it is the one nobody invoices you for.

What a typical lead earns is exactly what a phone business does not know unless it connects leads to sales. A platform that values every call at $300 has multiplied a count by a hope, which is why cost per lead misleads so often. Revenue attributed should mean invoiced sales, matched to the customer's earliest lead on phone number and email. Our post on marketing attribution for small business walks through that match; everything below assumes you have it.

ROI vs ROAS: two different questions

ROAS is revenue divided by ad spend. ROI is revenue minus every marketing cost, divided by that cost. ROAS asks how much revenue each ad dollar is linked to; ROI asks whether the whole effort earned more than it cost. A ROAS of 4 is a 300% ROI on revenue only when ad spend is the only cost.

ROI and ROAS compared
ROASMarketing ROI
FormulaRevenue ÷ ad spend(Revenue or gross profit − total cost) ÷ total cost
Costs countedMedia spend onlyMedia, agency fees, tools, creative, staff time
Break-even1 ÷ gross margin (4.0 at 25%)0% on margin
Good forSteering bids inside one platformDeciding budgets across channels

The two convert once you know your margin. With ad spend as the only cost, ROI on margin = ROAS × gross margin − 1. A ROAS of 4 at a 30% margin is 4 × 0.30 − 1 = 20%. The same ROAS at a 20% margin is 4 × 0.20 − 1 = −20%, a loss. A ROAS quoted without a margin says almost nothing, which is why our post on blended ROAS treats it as a guardrail rather than a verdict. Use ROAS to steer campaigns week to week; use ROI to decide next quarter's budget.

ROI on revenue vs ROI on gross margin

ROI on revenue treats every dollar of sales as profit. ROI on margin replaces revenue with gross profit, revenue minus the direct cost of delivering the work, and answers whether the marketing actually made money. Channels that sell different kinds of work can swap places when you switch.

An HVAC company's repairs and maintenance plans might keep half of every dollar; its discounted system replacements might keep a fifth, once equipment and two installers for a day are paid. A channel that mostly brings in replacements posts big revenue and modest profit. ROI on revenue ranks channels by size; ROI on margin ranks them by what they left in the bank.

Apply that spread to break-even. With ad spend as the only cost, a channel breaks even when revenue per ad dollar equals 1 ÷ gross margin: $2.65 at 37.76%, $4.41 at 22.70%, $9.61 at 10.41%. A dealership and a dental practice can post the same ROAS while one loses money and the other does well.

You do not need a margin per invoice. Split the work into two or three bands, such as replacements, repairs and maintenance, get a typical gross margin for each from the bookkeeper, and apply it to each matched sale. Our post on aligning marketing and finance covers how to ask for those figures and agree on them once.

Which costs belong in marketing ROI

Count every cost a channel would not have without the decision to run it: media spend, agency and management fees, the tools it needs, creative and printing, and the staff hours it takes. Leave out costs that stay the same whether the channel runs or not, such as rent and the owner's salary.

  • Media spend: what the platform, printer or publisher billed. Use the invoice, not the budget.
  • Agency fees: a percentage of spend, or a retainer split across the channels it covers.
  • Tools: call tracking numbers, landing page builders, mailing lists.
  • Creative and production: design, video, printing and postage.
  • Staff time: hours spent running, answering or cleaning up after a channel, such as disputing bad leads, at the person's loaded cost, not their wage.
  • Discounts: a 15%-off offer is a cost of the campaign. Count it here or use revenue after the discount, but not neither.

Staff time is the cost most often left out and the one most likely to change a ranking. A free listing that takes ten hours a month is not free: at $46.89 an hour it costs $469 a month, $1,407 a quarter. Estimate the hours roughly and say in the report that they are estimates.

Per-channel ROI from matched sales

Per-channel ROI uses only the sales matched to that channel's leads: credit each closed sale to the source of the customer's earliest matched lead, add up revenue and gross profit by source, and divide by that channel's total cost. Untraced sales stay in their own line instead of being shared out.

Why the earliest lead? Because a channel budget answers which marketing brought this customer to you at all. A customer who first called from a postcard and later clicked a search ad to rebook is a postcard customer under that rule. Our post on attribution models compares the alternatives; for most offline businesses the customer has one or two recorded leads, and writing the rule down matters more than which rule it is. Keep uncertain matches out of the totals until someone has checked them.

For a business whose customers come back, the first sale undercounts what a channel brought in. Our post on customer lifetime value by channel extends the same match to 12- and 24-month revenue per customer, the right top line for maintenance plans, dental recalls and anything else that repeats.

A worked example: four channels, three rankings

An HVAC company, July to September 2026: $400,000 of revenue, four paid channels costing $35,138 in all, and $258,000 of sales matched to those channels' leads. The figures are illustrative. Ranked by ROAS, by ROI on revenue and by ROI on margin, the channels come out in three different orders.

Costs per channel, July to September 2026 (illustrative)
ChannelMedia spendAgency feeTools and creativeStaff timeTotal cost
Search ads$12,000$1,800$300$14,100
Facebook replacement promo$6,000$900$200$7,100
Direct mail$7,500$500$8,000
Local Services Ads$5,000$938 (20 h × $46.89)$5,938
Total$30,500$2,700$1,000$938$35,138
Matched sales, margin and ROI per channel, July to September 2026 (illustrative)
ChannelMatched revenueGross marginGross profitROASROI on revenueROI on margin
Search ads$98,00045%$44,1008.17595%213%
Facebook replacement promo$81,00022%$17,82013.501,041%151%
Direct mail$46,00050%$23,0006.13475%188%
Local Services Ads$33,00040%$13,2006.60456%122%
Direct / Unknown$142,000
Total$400,000$98,120 matched634% matched179% matched

The arithmetic. ROAS is matched revenue ÷ media spend: $98,000 ÷ $12,000 = 8.17, $81,000 ÷ $6,000 = 13.50, $46,000 ÷ $7,500 = 6.13, $33,000 ÷ $5,000 = 6.60. ROI on revenue is (matched revenue − total cost) ÷ total cost: $83,900 ÷ $14,100 = 5.95, $73,900 ÷ $7,100 = 10.41, $38,000 ÷ $8,000 = 4.75, $27,062 ÷ $5,938 = 4.56. Gross profit is revenue × margin, for example $81,000 × 0.22 = $17,820. ROI on margin is (gross profit − total cost) ÷ total cost: $30,000 ÷ $14,100 = 2.13, $10,720 ÷ $7,100 = 1.51, $15,000 ÷ $8,000 = 1.88, $7,262 ÷ $5,938 = 1.22.

By ROAS: Facebook, search, Local Services Ads, direct mail. By ROI on revenue, once fees and staff time are in: Facebook, search, direct mail, Local Services Ads; twenty hours a quarter spent disputing and answering Local Services leads moved it below the mailer. By ROI on margin: search, direct mail, Facebook, Local Services Ads. The promotion that led both revenue rankings falls to third, because it sells discounted replacements at a 22% margin.

Here is the arguable part. Most budget meetings would move money toward the promotion, because 1,041% is the largest number on the page. On margin, each dollar there returned $1.51 of gross profit above its cost, against $2.13 in search and $1.88 in the mailer. Keep it, cap it, and move the next dollar to search. But an ROI is an average over money already spent, not a promise about the next dollar, so move budget in steps, as our post on how to allocate a marketing budget sets out; our post on incrementality tests shows how to check whether a large channel caused its sales or only preceded them.

Time lag: spend this month, sales next month

Marketing costs arrive when the ads run; the sales close weeks or months later. Dividing one calendar month's revenue by the same month's spend punishes any channel that is new or growing. Group revenue by the month the lead arrived, compare it with that month's spend, and read the figure once those leads have had time to close.

Say a new campaign starts in September with $6,000 of total cost. A September report shows $4,000 of sales from it: ($4,000 − $6,000) ÷ $6,000 = −33%. By the end of November, the leads that arrived in September have closed $27,000 of work: ($27,000 − $6,000) ÷ $6,000 = 350%. Same campaign; only the report's patience changed.

So label each matched sale with its lead's month and build ROI on lead months. Measure the median days from first lead to closed sale from the matched pairs you already have, and wait at least that long, preferably twice, before reading a month. Our post on long sales cycles covers reporting months that have not matured. The lag also sets how far back the lead export must reach: a September sale from a customer who first called in March cannot match a lead file that starts in June, as our post on attribution windows explains.

What to do with untraced revenue

Untraced revenue, often labeled Direct / Unknown, is the sales whose customer matches no recorded lead: referrals, repeat customers, walk-ins, and leads recorded badly or not at all. Report it as its own line, report channel ROI on traced revenue only, and never divide the untraced share among channels to make the totals tidy.

In the example, $142,000 of $400,000, 35.5%, matched no lead. Spreading it across the four channels in proportion to their matched revenue would make the table add up and lift search's revenue ROI from 595% to about 978%, without a single new fact about search. Our post on unattributed revenue makes the full case for leaving it visible.

Instead, report the two figures that bracket the truth. ROI on matched revenue counts only what you could trace: ($258,000 − $35,138) ÷ $35,138 = 634% for the four channels together. Blended ROI on all revenue assumes marketing produced every sale: ($400,000 − $35,138) ÷ $35,138 = 1,038%. The real figure lies between, nearer the first if the unknown share is mostly referrals and repeat customers, nearer the second if it is mostly leads nobody logged. Our post on match rates shows how to tell which, and how to shrink the gap with evidence rather than allocation.

CloseRev handles the revenue half of the formula. It reads two CSV files you export, closed sales and leads, matches each sale to leads on normalized phone and email, and credits it to the source of the earliest matched lead. Only high-confidence matches count automatically; medium- and low-confidence ones stay reviewable, and unmatched sales stay in Direct / Unknown. If you enter monthly spend per channel, the report shows ROAS for those channels. It does not know your margins or other costs, so ROI on margin stays a spreadsheet step.

Where to start this quarter

Match last quarter's closed sales to a year of leads, add up every cost per channel, apply two or three margin bands, and build one table with ROI on revenue and on margin side by side. It takes an afternoon, and the first version usually changes at least one budget decision.

  1. Export last quarter's closed sales with date, amount, phone, email and type of work, and a year of leads with a source column.
  2. Match on normalized phone and email, credit the earliest lead, and keep the unmatched in Direct / Unknown.
  3. Collect every cost per channel, including estimated staff hours at loaded cost.
  4. Apply a gross margin per type of work, then compute ROI on revenue and on margin by lead month, with coverage at the top.

A marketing ROI is only as good as the revenue at the top of it. Use sales you invoiced, matched to the leads that started them, not values a platform estimated. Count every cost, switch to margin, wait for the sales to close, and keep the untraced share visible. Then the biggest number on the page stops winning by default.

Questions people actually ask

What is the formula for marketing ROI?
Marketing ROI is (revenue attributed to marketing − marketing cost) ÷ marketing cost. If a channel cost $5,000 and brought in $20,000 of sales, its ROI on revenue is ($20,000 − $5,000) ÷ $5,000 = 300%. Use gross profit in place of revenue to get ROI on margin, the version that says whether the marketing made money.
What is the difference between ROI and ROAS?
ROAS is revenue divided by ad spend: $20,000 of sales on $5,000 of ads is a ROAS of 4. ROI subtracts the cost first and usually counts more than ad spend, such as agency fees, tools and staff time. ROAS says how much revenue each ad dollar is linked to; ROI says whether the whole effort earned more than it cost.
What is a good marketing ROI?
Any ROI on margin above zero means the marketing paid for itself before overhead. There is no universal target, because the same revenue ROI means very different profit at a 15% margin and at a 50% margin. Set your own floor on margin, compare channels with each other, and judge each on at least a quarter of sales that have had time to close.
How do I calculate marketing ROI when sales close weeks after the lead?
Group revenue by the month the lead arrived rather than the month the sale closed, compare it with that month's spend, and wait until most of those leads have had time to close before reading it. A channel launched this month will always look like a loss in a calendar-month report, because its costs land now and its sales land later.
What do I do with revenue I cannot trace to any channel?
Keep it as its own line, usually called Direct / Unknown, and do not divide it among the channels. Report channel ROI on the revenue you could trace and the share of total revenue that traced, side by side. Spreading the untraced share in proportion makes every channel look better and tells you nothing new about any of them.

See it on your own numbers.

Two exports and a few minutes. 14 days free, no card, nothing to install.