TL;DR
- Marketing ROI measures revenue generated against dollars spent. Cost per lead is not ROI.
- Vanity metrics (impressions, clicks, sessions) tell you what happened on a platform. Revenue metrics tell you what happened in your business.
- Attribution models decide which touchpoint gets credit for a sale. The model you pick changes what your data says, and where you send budget next.
- Offline conversion tracking sends your CRM's closed-won signals back to Google Ads or Meta so the algorithm bids toward buyers, not form fills.
- A weekly-plus-monthly reporting cadence separates tactical signals from strategic decisions.
- The full pipeline is: click, lead, worked opportunity, closed customer, and your measurement system needs to track all four.
The ROI Formula and What Most Teams Get Wrong
Marketing ROI is calculated as revenue generated minus marketing cost, divided by marketing cost, multiplied by 100.
Written out:
Marketing ROI = ((Revenue Generated - Marketing Cost) / Marketing Cost) × 100
If a campaign cost $10,000 and produced $40,000 in closed revenue, the ROI is 300 percent.
That math is not complicated. What is complicated is the word "revenue." Most teams substitute something easier to measure: leads, clicks, form fills, or sessions. Those numbers are real, but they are not revenue. They are inputs to revenue. Reporting on them as if they are the outcome is where measurement breaks down.
The gap between a form fill and a closed customer is where most marketing dollars quietly disappear. A campaign can generate hundreds of leads and zero revenue if the leads are unqualified, if the sales process is broken, or if the attribution system never connected the lead to the outcome. You need all three legs working before ROI tracking means anything.
The most common mistake: a business reports "cost per lead" and calls it ROI. Cost per lead is a cost metric. It tells you what you paid to fill the top of the funnel. It tells you nothing about what came out the bottom.
Track Revenue, Not Vanity Metrics
Every ad platform will show you numbers it can measure natively. Google Ads shows clicks, impressions, and search terms. Meta Ads shows reach, frequency, and link clicks. These numbers are real. They are also platform-internal, meaning they measure activity inside the platform, not outcomes inside your business.
The metrics that actually matter for ROI:
- Qualified leads generated, leads that meet your defined criteria, not every form fill
- Cost per qualified lead, what you paid per lead that entered your sales process
- Opportunity-to-close rate, what percentage of leads your team converts
- Cost per acquired customer, the full cost to close one paying account
- Revenue per channel, how much closed revenue each source actually drove
Getting here requires connecting your ad platform data to your CRM, not just your analytics tool. Google Analytics 4 (GA4) can tell you a lead came from a paid campaign. Your CRM tells you whether that lead signed a contract. The ROI lives in the CRM, not in GA4.
If your reporting stops at cost per lead, you are measuring the cost of your pipeline, not the return on your investment.
If your reporting stops at cost per lead, you are measuring the cost of your pipeline, not the return on your investment.
Attribution Models in Plain English
Attribution is the system that decides which touchpoint gets credit when a conversion happens. Your choice of attribution model changes the story your data tells, and therefore where you invest next month's budget.
The main models, explained plainly:
Last-click attribution gives 100 percent of the credit to the last touchpoint a user hit before converting. If someone clicked a Google Search ad after spending three weeks reading your blog and following you on LinkedIn, the search ad gets all the credit. The other touchpoints get none.
Last-click attribution gives all the credit to the final touchpoint, which means upper-funnel channels like paid social are routinely undercounted.
First-click attribution does the opposite. The first channel that ever touched the prospect gets all the credit. This tends to overstate brand awareness channels and understate the bottom-of-funnel work that actually closed the deal.
Linear attribution splits credit evenly across every touchpoint in the path. A user touched by five channels means each gets 20 percent of the credit. It is more honest than last-click but still treats a brand awareness impression the same as a bottom-of-funnel search click.
Data-driven attribution (available in Google Ads and GA4) uses machine learning to assign fractional credit based on which touchpoints actually correlated with conversions across your account's historical data. Google requires a minimum conversion volume before this model activates. When you have the data to use it, it is generally more accurate than any rule-based model.
What this means in practice: if you are running paid search and paid social simultaneously and using last-click attribution, your social campaigns will look like they produce almost nothing, because users who clicked a social ad often do not convert on that same session. They come back later through search or direct. Last-click credits the search click and ignores the social touchpoint that started the relationship. You cut the social budget. Leads drop. You never know why.
Picking the right attribution model is not an academic question. It directly determines which campaigns survive your next budget review.
For most growing businesses, the pragmatic path is: use data-driven attribution in Google Ads where volume allows, use UTM parameters religiously across every channel, and track the full path from first touch to closed customer in a CRM that stores source data on the contact record.
Connecting Ad Platforms to Actual Closed Revenue
The mechanics of connecting spend to revenue require three things working together: UTM parameters, a CRM that stores them, and a way to send closed-won signals back upstream.
UTM Parameters
A UTM (Urchin Tracking Module) parameter is a tag appended to a URL that tells your analytics tool where a visitor came from. A properly tagged URL looks like this:
yoursite.com/contact?utm_source=google&utm_medium=cpc&utm_campaign=brand-search
When that visitor fills out a form, your CRM should capture the UTM values and attach them to the contact record. Now you have a direct line from the lead back to the campaign that generated it. This is the foundation of revenue attribution. Without it, your CRM has leads with no source, and your ad platform has clicks with no outcomes.
Most CRMs (HubSpot, Salesforce, and others) can capture hidden form fields that pull UTM values automatically. This is a one-time setup that pays off every month in cleaner data.
CRM as the Revenue Record
Your ad platform measures clicks. Your analytics tool measures sessions. Your CRM measures customers. Revenue attribution lives in the CRM because that is where deals close.
The setup: every contact record stores the UTM source, medium, campaign, and term from the first click that brought them in. When a deal closes, you have the data to answer: which campaign did this customer originally come from? What did it cost us to acquire them? What did they pay us?
That is marketing ROI at the deal level. Aggregate it across a quarter and you have ROI at the channel level.
Importing Offline Conversions
Once your CRM tracks which leads became customers, you can send that signal back to Google Ads as an offline conversion import. Google matches the closed customer back to the click that generated the lead, using the GCLID (Google Click Identifier) that is automatically appended to every Google Ads click.
Offline conversion tracking closes the gap between a lead in your CRM and a paying customer in your ad platform, letting the algorithm optimize for buyers instead of form fills.
When this pipeline is working, Google's Smart Bidding is no longer optimizing for form fills. It is optimizing for customers. The algorithm learns which users, search terms, devices, and times of day actually produce revenue, not just leads, and adjusts bids accordingly. The quality of leads tends to improve without increasing spend.
This is the single highest-leverage technical implementation in most B2B and local service marketing setups. It is also the one most agencies never build.
The Offline-Conversion Gap and How to Close It
Most businesses run marketing that generates leads online. The actual sale happens offline: a phone call, a sales meeting, a signed contract. The tracking setup almost never captures that offline outcome and sends it back to the ad platform.
The result is a system that knows it spent money and generated leads but has no idea which leads became revenue. The algorithm optimizes for whatever it can see, which is form fills. It gets better at generating form fills. It does not get better at generating customers.
Closing this gap is a process, not a tool. The steps:
- Ensure every Google Ads click appends a GCLID and your form captures it as a hidden field.
- Store the GCLID on the CRM contact record alongside UTM values.
- When a deal closes in the CRM, export the GCLID and conversion date.
- Upload that file to Google Ads as an offline conversion, or automate the import via the Google Ads API.
- Set that offline conversion as the primary conversion action your campaigns optimize toward.
Meta Ads has an equivalent mechanism through the Conversions API (CAPI), which sends server-side events back to Meta when a lead converts downstream. The principle is the same: close the loop between a click and a customer.
This setup requires coordination between your marketing stack, CRM, and ad platforms. It is not complex, but it requires intention. Most businesses have never done it. The ones that do see their ad platforms start spending smarter almost immediately, because the algorithm finally has honest signal.
Our conversion tracking services exist specifically to build and maintain this pipeline across Google Ads, Meta, and GA4.
A Reporting Cadence That Drives Decisions
Good data only produces good decisions if it is reviewed at the right frequency and at the right level of detail. A common failure mode: looking at weekly revenue data and panicking, or looking at monthly click data and feeling fine. The time window has to match the metric.
A cadence that works for most businesses running paid media:
Weekly: platform performance signals
Review cost, impressions, clicks, conversions (form fills and calls), cost per conversion, and any anomalies. This is a diagnostic layer. You are looking for broken tracking, budget pacing issues, or a sudden drop in conversion rate that warrants investigation. You are not making budget allocation decisions here.
Monthly: revenue and ROI review
Pull CRM data: leads by source, opportunities created, deals closed, revenue generated, cost per acquisition by channel. This is where you compare spend to revenue and make structural decisions: scale this channel, cut that campaign, shift budget toward what is working.
Quarterly: attribution and model review
Revisit your attribution model assumptions. Did last-click data lead you to underinvest in a channel that was actually contributing? Are there conversion paths (first touch to close) that took longer than your attribution window captures? Adjust your model or window if the data suggests you should.
A reporting cadence that separates weekly performance signals from monthly revenue reviews prevents teams from making budget decisions on incomplete data.
The reason the cadence matters: paid media campaigns often have a conversion delay. A lead that clicked a Google ad today may not close for 30 to 90 days depending on your sales cycle. If you evaluate a campaign's ROI after two weeks, you are evaluating it before most of its revenue has arrived. You will undervalue campaigns that take time to produce customers and over-index on campaigns that generate fast but low-quality leads.
Your analytics setup should make this reporting pull fast. If it takes your team more than 30 minutes to produce a monthly ROI report, the infrastructure is not built right.
Putting It Together: The Full Tracking Pipeline
The complete system, from click to closed customer:
- A prospect searches, sees an ad, and clicks. Google Ads appends a GCLID. Your UTM tags identify source, medium, and campaign.
- The prospect lands on your site. Your form captures the GCLID and UTM values as hidden fields.
- The prospect submits the form. Your CRM creates a contact record with all source data attached.
- Your sales team works the lead. The opportunity is tracked in the CRM.
- The deal closes. Your CRM marks it closed-won with the revenue amount.
- Your system (manual export or automated API connection) sends the GCLID and close date to Google Ads as an offline conversion.
- Google Ads matches the closed customer to the original click. Smart Bidding updates its model.
- Your monthly report pulls CRM data: revenue by source, cost per acquired customer, ROI by channel.
At step eight, you are no longer guessing. You know exactly which campaigns produced revenue, what it cost to generate each customer, and where to invest next.
This is not a theoretical framework. It is the same pipeline we built for Nordanyan Law, where connecting offline conversion data to paid campaigns shifted bidding from form fills toward signed cases and meaningfully changed where the algorithm allocated spend.
Frequently Asked Questions
How do you calculate marketing ROI?
Marketing ROI is calculated as (revenue generated minus marketing cost) divided by marketing cost, multiplied by 100. For example, if a campaign cost $10,000 and produced $40,000 in closed revenue, the ROI is 300 percent. The key requirement is using actual closed revenue as the numerator, not leads or form fills, which are inputs to revenue rather than outputs.
What is a good marketing ROI?
There is no single benchmark that applies to every business. A good marketing ROI depends on your industry, your margins, your sales cycle length, and your customer lifetime value. A business with high margins and a long customer relationship can sustain a lower short-term ROI than a transactional business with thin margins. The more useful question is: are you generating more revenue than you are spending, and is that gap improving over time?
What is the difference between ROI and ROAS?
ROI (return on investment) compares revenue to total marketing cost, including agency fees, creative, tools, and ad spend. ROAS (return on ad spend) compares revenue only to the ad spend itself, excluding other costs. ROAS is a narrower measure. A campaign can show a strong ROAS while still producing a negative ROI once you account for management fees and overhead. Both metrics are useful, but ROI gives the more complete picture of profitability.
Why is last-click attribution a problem?
Last-click attribution assigns 100 percent of the credit for a conversion to the final touchpoint before the user converted. This means channels that introduce prospects to your business, like paid social, display, or organic content, receive zero credit even if they were the reason the prospect entered your funnel. Businesses using last-click attribution tend to over-invest in bottom-of-funnel search campaigns and under-invest in the channels that build demand upstream.
What is offline conversion tracking?
Offline conversion tracking is the process of sending a signal to your ad platform when a lead converts into a paying customer, even though that transaction happened outside the platform (in a phone call, a meeting, or a signed contract). In Google Ads, this works by matching a closed customer back to the original click using a GCLID. When this pipeline is working, the ad platform's bidding algorithm can optimize toward customers, not just form fills.
How do UTM parameters work?
UTM parameters are tags added to the end of a URL that tell your analytics tool where a visitor came from. The key parameters are source (which platform), medium (which channel type), and campaign (which specific campaign). When a visitor arrives via a tagged URL and submits a form, your CRM can capture those UTM values and store them on the contact record, creating a direct link between the lead and the campaign that generated it.
Do I need a CRM to track marketing ROI?
You do not need an enterprise CRM, but you do need some system that records leads, tracks them through your sales process, and captures the source of each lead. A spreadsheet can work at very small scale, but it breaks down quickly and has no way to send offline conversion signals to ad platforms. A CRM that captures UTM parameters on form submission and stores them on the contact record is the practical minimum for reliable revenue attribution.
How long should I wait before evaluating a campaign's ROI?
Wait at least as long as your average sales cycle. If your typical lead-to-close timeline is 60 days, evaluating a campaign at two weeks means most of its revenue has not arrived yet. Short evaluation windows cause teams to kill campaigns that are actually working and over-invest in campaigns that generate fast but low-quality leads. Your monthly ROI review should account for the typical delay between lead generation and closed revenue.
If you want to see what this pipeline looks like built for your specific channels and CRM, book a strategy call. We will review your current tracking setup and show you exactly where the gaps are.