How to Measure Marketing ROI in Just 10 Minutes a Month

Your ad account says the campaign produced 14 sales. Google Analytics gives the credit to search. Your CRM shows six new customers. Your bank shows four paid invoices.

Four tools. Four answers. And you still cannot answer the only question that matters: where should the next dollar go?

Another chart will not fix that. What fixes it is a short, boring trail that runs from what you spent, to a real customer, to money that actually landed in your account.

Here is the whole idea in one paragraph.

Add up everything marketing cost you. Find the profit from the customers it brought in. Compare the two. Your sales records decide who counts as a customer. Google Analytics and your ad accounts only explain how those customers found you. When you cannot tell where someone came from, write Unknown and leave it there.

That is how to measure marketing ROI without hiring an analyst. The rest of this guide is the setup that makes those numbers trustworthy, in the order we build it.

Marketing ROI flowchart showing how costs and confirmed revenue connect to real profit

Key Takeaways:

  • Your sales records decide who counts as a customer. Google Analytics and ad platforms only explain how they found you.
  • Use profit, not sales, and count every marketing cost including your own team’s hours.
  • Keep two views apart: what came in during one stretch of time, and what a single campaign’s customers eventually paid.
  • Give each campaign a label, a cut-off date, and a note on whether it is finished and whether the money is real or projected.
  • Unknown is a valid answer. Track how much profit sits there and fix the gap instead of guessing a channel.

You can also download our free Marketing ROI Scorecard. It is a spreadsheet with the math already built in, a version for each type of business, and a set of AI prompts you can paste into ChatGPT, Claude, or Perplexity.


What Marketing ROI Actually Means

Dark UI card comparing two $20,000 sales months at 70 percent and 20 percent margin.

Marketing ROI answers one question: for every dollar you put into marketing, how much came back after you paid to deliver the work?

The math is simple:

(Profit from the customers marketing brought in – what marketing cost) / what marketing cost

Spend $8,000, earn $20,000 in profit from those customers, and you get:

($20,000 – $8,000) / $8,000 = 1.5, or 150 percent

You got your $8,000 back plus $12,000. Another way to say it: every dollar returned an extra $1.50.

Careful with the victory lap. That $1.50 still has to cover rent, payroll, insurance, and taxes.

Use Profit, Not Sales

Sales tell you how much money moved. Profit tells you how much you kept.

The number you want is gross profit: what is left from a sale after the direct costs of that sale.

For a store, that is the product, the shipping, and the card fee.

For a plumber, that is the technician’s hours, the parts, and the truck. It is not your bottom line, because overhead comes out later, but it is close enough to make a budget decision with.

This matters more than it sounds.

Selling $20,000 of jewelry at a 70 percent margin and $20,000 of appliances at a 20 percent margin look identical in your ad account.

One paid for itself several times over. The other barely covered the ads.

Do not know your margin yet? Start anyway.

Use sales instead of profit, and label it “return on sales” so nobody in the room mistakes it for money kept. Then ask your bookkeeper for a direct-cost number and swap it in.

ROAS is Not ROI

Your ad platform shows you ROAS, which divides the sales it takes credit for by the ad spend alone.

It leaves out your agency fee, your software, your photographer, the discount you offered, and the eight hours a week your office manager spends on it.

A campaign can post a proud 4x in the ad account and still lose money once all of that is on the page.

Here’s one trap worth naming…

If you ran a 20 percent off promotion, that discount already came out of your sales number. Do not subtract it a second time as a marketing cost.

Every Report Should End in One of Four Decisions

If a number cannot move you toward one of these, it is decoration:

  • Grow it. The evidence is strong enough to put in more.
  • Fix it. Keep the channel, repair the offer, the page, the tracking, or the follow-up.
  • Stop it. You have seen enough.
  • Find out more. Something is missing before you touch the budget.

Impressions, clicks, and sessions can help explain a result. They cannot make the call.


The Mistake That Quietly Ruins ROI Numbers

Dark UI card timeline showing a lead in April paid in July with one still open in October.

Say you spend $6,000 on ads in July and collect $40,000 in July. Easy math, great month.

Except if you sell roofs, part of that $40,000 came from people who called in April. And several people who called in July will not sign until October.

You just compared two groups that have nothing to do with each other and got a very confident wrong answer.

There are two honest ways to look at this, and the trouble starts when they get mixed:

  • The month view. What came in and what went out during the same stretch of time. This is your cash reality, and it belongs in an operating conversation. It does not claim that July’s ads created July’s revenue.
  • The campaign view. Pick one campaign, find the customers it actually brought in, and follow their money wherever it lands. This is the view that tells you what to fund next.

The scorecard keeps these on separate tabs on purpose.

Label Each Group of Customers

For the campaign view to work, both the spending and the results need the same label.

The scorecard calls that label a Cohort ID, which is a formal name for something you make up yourself, like google-ads-july or spring-mailer.

Put it on the row where you record the spend and on the row where you record the results, and the sheet can match them.

Each group also needs three notes:

  • A cut-off date. Revenue counted through when?
  • Finished or still open. Has this group had enough time to buy?
  • Real or estimated. Money collected, or money you expect?

Never rank a campaign that has had three weeks against one that has had nine months.

That is not a comparison, it is a head start.


Step 1: Find the Moment You Actually Get Paid

Dark UI card with four progress tracks ending at different finish points.

Before any of this works, answer one question…

What has to happen before the money is really yours?

Your answer puts you in one of four groups.

You sell products online. The paid order is the moment. Your store and finance reports are the truth. Analytics and ad platforms just explain how the buyer got there.

You sell services that start with a conversation. A law firm, HVAC company, roofer, consultant, or real estate team lives here. An inquiry is not money. A signed and completed job that your accounting system recognizes is money.

You sell booked time or seats. Restaurants, hotels, salons, and clinics. A booking is a promise. A completed, paid visit is the moment.

You sell a subscription, membership, or maintenance plan. A trial is not a customer. An activated paying customer is, and then retention decides whether the deal was any good.

Pick by when the money becomes real, not by your industry label.

A real estate team books plenty of appointments, but the commission does not exist until closing, so it belongs with the service businesses.

If you run two models, keep two scorecards.

A store with a subscription box should not blend one-time orders and monthly plans into one number.


Step 2: Write Down What Marketing Really Costs

Dark UI card showing marketing cost bars for ads, agency, software, creative, and team hours.

Ad spend is part of your marketing cost, not the whole thing. Add it all up:

  • what you paid the platforms
  • what you paid an agency, freelancer, or contractor
  • software and tools
  • photography, video, and design
  • your own team’s hours

That last one gets skipped, and it distorts everything.

If your office manager spends five hours a week on email and social, that time has a price. Pick a reasonable hourly figure and use it.

Being consistent beats being precise.

The rule that matters: whatever you decide to include, include it every time and for every channel.

Counting staff hours against your email program but not your ad program will make email look worse than it is.


When somebody clicks a link in your newsletter, Google Analytics has no idea it came from your newsletter. It only knows a person showed up. You have to tell it, and you do that by adding a short tag to the end of the link:

https://www.yoursite.com/estate-planning?utm_source=newsletter&utm_medium=email&utm_campaign=estate_planning_consultation

Everything after the question mark translates to: this click came from the newsletter, it arrived by email, and it belongs to the estate planning campaign.

You do not have to write these by hand.

Google’s free Campaign URL Builder gives you blanks to fill and hands back a finished link you can paste anywhere. Google’s campaign tagging guide covers what each field is for.

Three habits keep this from falling apart:

  1. Use lowercase and underscores. Analytics treats Facebook and facebook as two different things.
  2. Keep one approved list. When one person writes paid-social, another writes paidsocial, and a third writes facebook_ads, your reports split one channel into three.
  3. Never tag links between pages on your own site. It erases the original source and makes your own website look like your best marketing channel.

Dark UI card showing three misspelled campaign names merging into one approved name.

Step 4: Tell Analytics Which Few Actions Matter

Google Analytics records almost everything and cares about none of it until you tell it what counts.

Choose three to five actions that mean real progress. Skip video plays and scroll tracking unless a decision depends on them.

  • Online store: added to cart, started checkout, purchased, refunded
  • Service business: form submitted, phone call started, consultation booked, lead marked qualified
  • Booked time: appointment booked, appointment completed
  • Subscription: trial started, subscription started, subscription cancelled

Purchases and refunds need an order number attached so the two can cancel each other out, and the purchase needs a currency. Google’s eCommerce setup guide spells out what to send.

Dark UI card listing four tracked events with one flagged as not firing.

Then test every one of them. Fill out your own form. Call your own number. Run a test purchase or booking. Watch it appear. This single step catches more broken tracking than everything else on this list combined, and it is the reason so many reports quietly under-count for months.

Your web person or agency does the wiring. Your job is deciding which actions matter and confirming they show up.


Step 5: Ask Every Customer Where They Came From

Dark UI card comparing a tracked paid search source with a customer-reported referral.

Add one question to your form, checkout, intake, or booking flow: how did you hear about us?

Give a short list of choices plus an “other” box, and keep the answer.

Now you have two kinds of evidence, and both are worth having:

  • What the computer saw. The last measurable click before they arrived.
  • What the customer remembers. The thing that actually put you in their head.

Someone hears your name at a barbecue, searches for you a week later, and clicks your ad. The ad account takes the credit. The customer says referral. Neither is lying, and the barbecue is the part you would never learn from a dashboard.

Keep both answers. Do not overwrite one with the other.


Step 6: Put One Matching Number on Both Records

Dark UI card showing a website record and a sales record joined by a shared reference number.

This is the step almost everyone skips, and it is the one that makes the whole thing work.

Analytics knows a form was submitted. Your CRM knows Maria signed a contract. Nothing connects those two facts unless the same reference number is sitting in both places.

You do not need names or emails for this. You need a plain number: an order number, a lead number, a booking number, a call ID.

Here is the handoff:

  1. When a visitor lands on your site, save where they came from in a hidden field on the form, booking page, or checkout.
  2. When they submit, your system creates a reference number.
  3. Send that same reference number to Analytics and store it on the record in your CRM, booking tool, or store.
  4. When that record turns into paid work, you can finally follow the money back to the source.

Send reference numbers only. Names, emails, phone numbers, card details, and any legal or medical details stay in the systems built to protect them.

This is the piece we build most often for clients, and the piece that changes reporting the most. Without it, you are guessing politely. With it, you can point at a customer and say where they came from.


Step 7: Let “I do not know” Be an Answer

Somebody paid you $4,000 and nobody can say why.

Do not file it under Direct. Do not hand it to whichever channel you like best. Put it in a column called Unknown and write down what share of your profit lives there.

Dark UI card showing an unknown-share bar trend with a flagged spike and a recovery.

Then watch the direction over time. There is no benchmark worth chasing, only your own trend. If Unknown jumps right after you launch a new booking tool, that tool is dropping the source. If it drops after your front desk starts asking the question, your setup is getting better.

An honest 30 percent Unknown is more useful than a tidy report where every dollar has been assigned to a channel that may not have earned it.


What This Looks Like in Four Real Businesses

Dark UI card with four tiles showing marketing returns of 147, 532, 189, and a projected 82 percent.

Same trail every time. Different finish line.

🛒 An Online Store

One campaign, labeled google-ads-july:

  • $18,000 in sales
  • minus $1,200 in discounts
  • minus $900 in refunds
  • $15,900 actually collected
  • minus $6,500 for product, shipping, and card fees
  • $9,400 in gross profit
  • minus $3,800 in marketing cost

($9,400 – $3,800) / $3,800 = 147 percent

Every dollar of marketing returned about $1.47 on top of itself, before overhead.

The ad account may insist it drove $20,000. Your store report is the one that matches your bank, so it wins.

⚖️ A Law Firm

  • 30 inquiries
  • 18 that were actually worth pursuing
  • 10 consultations
  • 4 signed matters
  • $36,000 in collected fees
  • $12,000 to do the work
  • $3,800 in marketing cost

Gross profit is $24,000.

($24,000 – $3,800) / $3,800 = 532 percent

One rule keeps that number honest: only money the firm has actually earned under its own accounting policy counts. A promising case that has not paid is a hope, not revenue. Track your pipeline separately and enjoy it separately.

The same rule applies to a contractor with open estimates and a real estate team with pending closings.

🍝 A Restaurant or Salon

  • 40 inquiries
  • 24 bookings
  • 4 cancellations and no-shows
  • 20 completed visits
  • 12 new customers
  • $8,000 in revenue
  • $2,800 in direct costs
  • $1,800 in marketing cost

Gross profit is $5,200.

($5,200 – $1,800) / $1,800 = 189 percent

Bookings are not money. Completed, paid visits are. A campaign that fills the calendar and produces a wall of no-shows is a problem wearing a success costume.

And if $390 of that profit came from walk-ins nobody asked about, it goes in Unknown. The money is real. The credit is not.

🛠️ A Subscription or Maintenance plan

A $8,000 campaign signs up 10 paying customers who add $2,000 in monthly revenue at a 75 percent margin.

  • Cost per customer: $8,000 / 10 = $800
  • Each customer pays $200 a month, of which $150 is profit
  • Payback: $800 / $150 = 5.3 months before that customer is worth anything
  • If they stay 24 months: $150 × 24 = $3,600 in lifetime profit, or 4.5 times what you paid to get them

You can also project the first year, assuming 4 percent of customers leave each month:

About $14,523 in projected profit, or an 82 percent return on the $8,000

Label that a projection and keep it in its own column. A projection is a plan, not a receipt. Real churn, failed cards, and downgrades all get a vote, so track what actually arrives beside what you expected.

One more caution: the $800 above is what this campaign cost per customer. It is not your company-wide cost per customer, which includes every sales and marketing dollar you spend. Keep those two numbers apart or you will talk yourself into a bad decision.


How Sure Are You About This Number?

Dark UI card showing four confidence tiers and the action each one supports.

Not every number deserves the same confidence. Grade them:

  • Solid. Your sales system confirms the customer, and a reference number ties that customer to a source. Act on it.
  • Likely. Several pieces line up without a complete chain. The customer says referral, Analytics shows a search for your name, the CRM has the sale. Believable. Fine for small moves.
  • Platform’s word only. The ad account or Analytics claims a conversion your sales system cannot confirm. Useful for optimizing inside that platform. Not enough to move real budget.
  • Unknown. The money is real, the source is missing. Go find the leak instead of assigning blame.

Even a solid grade only proves you can trace the path. It does not prove the channel caused the sale. Somebody who was going to hire you anyway might click your ad on the way in.

If a decision is big enough to matter, test it. Turn the channel off in one market. Hold it flat while you change something else. Run a real before-and-after with nothing else moving. That is the difference between knowing who got credit and knowing what worked.

Give Slow Channels Time to Finish

Google Analytics looks back a set number of days when assigning credit. By default that is 30 days for a visitor’s first visit and 90 days for other important actions, which you can adjust in the lookback window settings.

Your own review needs the same patience. A store can judge orders quickly and revisit after the return window. A contractor waits for estimates to become jobs. A law firm looks at leads now and collected fees much later. A subscription needs long enough to see who stays.

Comparing a 90-day search result against a 7-day retargeting result and crowning the bigger short-term number is how good channels get killed.


Let AI Do the Tedious Parts

AI is genuinely good at the boring work here: reading exports, matching columns, catching duplicates, and drafting the summary. It is also entirely willing to invent an answer when a field is missing, and it will sound confident doing it.

Dark UI card showing order and channel columns passing to an AI tool while name and email are blocked.

So set the rules first:

  • Use a business account and check its privacy and data-retention settings.
  • Start with only your column headers and a few made-up rows. Share real data once the mapping works.
  • Strip names, emails, phone numbers, addresses, card details, passwords, and any legal or medical notes.
  • Never connect it with permission to change your ad accounts or systems.
  • Nothing changes in your budget until a person approves it.

Three prompts do the heavy lifting. All five, including one for matching messy exports, come with the scorecard.

Prompt 1: Help Me Set This Up

Help me set up a marketing ROI tracking system. Do not recommend any software until you understand how my business makes money.

Ask me a few questions at a time until you know:
1. What has to happen before money is really mine: an online order, a signed and completed job, a completed paid visit, or an activated subscription.
2. How long my sales cycle usually takes.
3. Which marketing channels I pay for or work on.
4. Which tools I already use for my website, analytics, ads, phone calls, forms, customers, orders, bookings, billing, and accounting.
5. Whether I know my profit margin or my direct costs.
6. What decisions I need this to help me make.

Then give me:
- the one event that should count as revenue
- which system is allowed to confirm that revenue
- three to five actions to track in Google Analytics
- a simple naming plan for campaign link tags
- which reference number should connect my website records to my sales records
- what to put on the spending sheet and the results sheet
- a setup checklist in the order I should do it
- the first decision I should be able to make when it is done

Rules:
- If a source is unknown, keep it Unknown. Never guess.
- Treat ad platforms and Analytics as clues about how someone found me, not as proof of a sale.
- Keep same-period reporting separate from following one campaign's customers over time.
- For an online store, use sales after discounts and refunds, then subtract product and fulfillment costs.
- For services, never count a possible case, estimate, or pending deal as revenue.
- For bookings, count completed and paid visits, not reservations.
- For subscriptions, keep money collected separate from money projected.
- Tell me plainly what I cannot measure yet and what would fix it.

Prompt 2: Check My Data Before I Trust It

Check this marketing spreadsheet for problems before we analyze anything.

Look for:
- duplicate customers, orders, bookings, or leads
- spending with no matching results, and results with no matching spending
- same-period numbers mixed with campaign-over-time numbers
- missing dates or missing cut-off dates
- channel names spelled differently in different rows
- revenue with no source, and sources with no revenue
- blank cost fields being treated as zero
- refunds, cancellations, no-shows, or cancelled subscriptions counted in the wrong period
- collected money mixed with projected money
- ad platform conversions higher than my confirmed sales
- any personal or sensitive information that should be removed

For each problem, tell me: how serious it is, where it is, how many rows it affects, what it does to my numbers, and exactly how to fix it.

Finish by telling me whether my data is high, medium, or low confidence, which decisions are safe to make right now, which ones I should wait on, and the three fixes that would help the most.

Never fill in a missing source with a guess. Unknown is a valid answer.

Prompt 3: Run My Monthly Review

Review this completed marketing scorecard and help me decide what to do next. My sales records are the source of truth. Treat Google Analytics, ad platforms, and what customers told us as supporting evidence.

Start by telling me back: what I am looking at, which period or campaign, through what date, whether the numbers are collected or projected, how confident the data looks, and how much profit is sitting in Unknown.

Then walk me through:
1. What marketing cost, how many real customers it produced, the profit, the cost per customer, and the return.
2. How each channel did, using a fair window for how long my sales actually take.
3. Where the ad platforms, Analytics, what customers said, and my sales records disagree.
4. Whether lead quality, no-shows, refunds, or cancellations changed the picture.
5. Whether each result is solid enough to act on or needs more evidence.

Give me four short lists: what to grow, what to fix, what to stop or pause, and what to investigate. For each one include the evidence, what could go wrong, and how confident you are.

Do not treat a coincidence as a cause. Do not judge a slow channel on a short window. Do not invent a source. Do not recommend a spending change without telling me what would prove you wrong.

What is Inside the Scorecard

The Marketing ROI Scorecard is a spreadsheet, not software. Open it in Google Sheets or Excel and it walks you through the whole thing:

  • Start Here asks which kind of business you are and sets up the rest.
  • Channel Spend is where you enter what marketing cost, one time, in one place.
  • Period Contribution handles the month view.
  • Four business tabs handle the campaign view, one for each type of business.
  • Examples holds filled-in samples so you can see what finished rows look like without messing up your own totals.
  • Source Map records which system owns each number and who updates it.
  • Owner Review puts the whole decision on one page.
  • Setup Checklist and Metric Dictionary keep the definitions from drifting.
  • AI Prompt Pack has all five prompts ready to copy.
Dark UI card showing yellow input cells, locked blue formula cells, and ready and waiting row statuses.

Yellow cells are yours to fill in. Blue cells do the math and are locked so a stray keystroke cannot break a formula.

Two things it does deliberately. A required field left blank keeps the answer blank instead of quietly treating it as zero, because a missing cost is not the same as no cost. And each row tells you whether it is READY, meaning nothing important is missing and the number can be trusted.


Your First 30 days

Dark UI card showing a four-step setup rail from define to decide.

Do not wire everything at once. One week at a time.

Week 1: Decide what counts. Pick which of the four business types you are. Write down the one event that means money. Name the system allowed to confirm it. List every channel and its full cost.

Week 2: Fix what gets captured. Agree on campaign tag names. Set up three to five actions in Analytics and test every one. Add the hidden source fields and the “how did you hear about us” question.

Week 3: Connect the money. Choose your reference number and get it onto both records. Pull one complete period or one campaign into the scorecard. Mark everything you cannot trace as Unknown. Run the data-check prompt and clear the warnings.

Week 4: Make one decision. Compare what the platforms claim against what your sales records confirm. Grade your confidence. Then pick one thing to grow, fix, stop, or investigate, and write down who owns it and when you will look again.

One real decision in 30 days beats a beautiful report nobody acts on.


Your 10-minute Monthly Review

Dark UI card showing a one-page review with six questions and grow, fix, stop, and look outcomes.

It should fit on one page and answer six questions:

  1. What did marketing cost, all in?
  2. How many real customers did it produce?
  3. What profit can our sales records actually confirm?
  4. What is the return after marketing cost?
  5. How much profit is still Unknown, and is that share getting better or worse?
  6. Which of these numbers is solid enough to act on?

Then write down one thing to grow, one to fix, one to stop or hold, and one thing to repair in the data.

If the meeting turns into a tour of charts, go back to the four decisions.


When a Spreadsheet is Enough, and When to Get Help

A spreadsheet is genuinely enough when one person owns the reporting, your channel list is manageable, pulling the numbers takes under an hour, and the sheet is readable in about a minute.

Move to something more automatic when the manual work starts causing delays or mistakes. Looker Studio connects straight to Google Sheets, so you can put a visual dashboard on top of the same scorecard instead of rebuilding it.

Dark UI card comparing time spent preparing a report against time spent making the decision.

It is worth getting help when:

  • your calls, forms, orders, and revenue cannot be connected to each other
  • Analytics events fire twice, or not at all
  • campaign names have drifted apart across tools
  • customer, legal, or medical data needs tighter handling
  • nobody actually owns the monthly review
  • you spend more time preparing the report than deciding anything

You do not have to hand over your marketing to fix your reporting. Someone can define your direct costs, repair the duplicate events, connect the reference number, and set up the scorecard, and then either hand you the keys or keep an eye on it.

Our AI services cover that whole range. Fix one broken connection, set up the tools you already pay for, maintain the reporting, or run the marketing system.


Marketing ROI FAQs

What is a good marketing ROI?

A good return covers what marketing cost, fits your margin and your cash flow, and brings in customers you want to keep. Chasing a universal benchmark hides the fact that a 70 percent margin business and a 20 percent margin business need completely different results. Compare each channel to the return you need and to its own history.

Can Google Analytics calculate marketing ROI by itself?

No. Analytics can track campaign clicks, key actions, and online purchases, but it cannot confirm an offline sale, a collected legal fee, a completed job, or a monthly invoice. Pair what Analytics saw with the system that records money.

Should I use first-touch or last-touch attribution?

Keep both. First touch shows where the relationship started, which is usually the channel that gets under-credited. Last touch shows the final measurable click. What the customer tells you adds a third view. Disagreement between them is information, not a bug.

How do I track marketing ROI when customers call instead of filling out a form?

Use call tracking that records a unique call ID, the campaign the caller came from, and how the call went, then push that into your CRM. Mark which calls were real prospects. The call is a lead, not revenue. Revenue still comes from your job system, POS, or accounting record.

How do I measure SEO ROI when sales take months?

Track non-branded search inquiries, which of those became real prospects, which signed, and what they eventually paid, over your full sales cycle. Keep the original source stored on the lead so it survives the wait. Judging search by a last click or a short ad-style window will make your most patient channel look like your worst one.

Can AI automate marketing ROI reporting?

Partly. AI can map exports, check formulas, catch missing fields, and draft your monthly summary. It cannot fix a tracking event that never fired or recover a source nobody captured, and it should never be the system of record. Give it clean data and rules that forbid guessing.

What if I do not know my gross margin?

Start with revenue and call the result “return on sales” so nobody confuses it with profit. Then ask your accountant or bookkeeper for a consistent way to figure direct costs. Add that in before you use these numbers to compare channels that cost very different amounts to deliver.

Make Your Next Budget Decision with Evidence

Download the Marketing ROI Scorecard, pick the tab that matches how your business gets paid, and fill in one complete period or one campaign.

You are not trying to build perfect attribution. Nobody has that. You are building something better: a written system that tells you what you can prove, what you cannot, and which decision the evidence actually supports.


Thanks in advance for sharing this post with anyone you think would find it helpful.