ROAS vs ROI for contractors: which number should you actually track?
Both metrics live on your marketing dashboard, but they answer different questions. Here is how to tell them apart, when each one matters, and how home-service companies use them together to make better ad-spend decisions.
The short answer: ROAS tells you how many dollars came back for every dollar you spent on ads. ROI tells you whether the campaign made you money after all costs are counted. Both numbers matter for a home-service company, but they live at different points in the decision chain.
If you are running Google Ads for a plumbing company, a 4x ROAS sounds healthy. But if your cost per job runs high because of dispatch distance, callbacks, and rework, the true ROI on that campaign could be thin or even negative. On the flip side, a campaign with a modest 2.5x ROAS that targets high-margin membership renewals can deliver excellent ROI because the fulfillment cost is low.
The confusion usually comes from treating these as competing metrics. They are not. ROAS is an ad-platform metric. ROI is a business metric. Contractors who track both, and connect them to the same live view, catch problems the platforms never show.
Key takeaways
- ROAS (return on ad spend) measures revenue generated per dollar of ad spend and lives inside your ad platforms. The formula is revenue divided by ad cost.
- ROI (return on investment) measures profit after all campaign costs, including fulfillment, labor, and overhead. The formula is (net profit / total investment) times 100.
- A high ROAS does not guarantee strong ROI. A campaign with a 5x ROAS on low-margin jobs can destroy profit while looking great in Google Ads.
- Contractors should use ROAS to manage daily ad-spend decisions and ROI to evaluate whether a channel or campaign deserves to stay in the budget.
- Connecting your CRM, accounting, and ad platforms into one view is what makes it possible to move from ROAS to ROI without a weekly spreadsheet exercise.
ROAS vs ROI: the side-by-side comparison
| Dimension | ROAS | ROI |
|---|---|---|
| Formula | Revenue / ad spend | (Net profit / total investment) x 100 |
| What goes in the denominator | Ad spend only (clicks, impressions, campaign budget) | All costs: ad spend, labor, materials, overhead, callbacks |
| Question it answers | Is my ad spend working? | Is this campaign profitable? |
| How fast you can read it | Real-time or near-real-time from the ad platform | After jobs are invoiced and costs are booked; often lags 30-60 days |
| Who uses it | Marketing manager, ad buyer, CSR team watching lead volume | Owner, GM, controller reviewing budget allocation |
| Main blind spot | Ignores job margin; a big revenue number hides low-profit jobs | Slow to calculate; hard to attribute precisely by channel |
| HVAC example | Google campaign returns $4 for every $1 spent: 4x ROAS | After parts, labor, dispatch, and callbacks, net margin on those jobs is 8%. ROI is modest. |
Warning
Common mistake: optimizing for ROAS while margin erodes
A roofing company running storm-damage ads in spring can see a 6x ROAS as emergency call volume spikes. The platform reports success. But if those jobs are being dispatched far out of territory, require material markups, and come with high callback rates, the true profit per job falls fast. The fix is not to stop tracking ROAS; it is to track gross margin per lead source alongside it. A live view that connects your ad platform data to your CRM invoices and QuickBooks cost-of-goods is what closes that gap.
Why contractors need both metrics, not just one
Ad platforms optimize for ROAS because that is what they can measure. They see the click, the lead, and sometimes the conversion, but they do not see the invoice amount, the cost of the job, or whether the customer called back for a warranty fix. That is why ROAS alone is insufficient for a trades operator.
Consider an HVAC company running two campaigns: one for tune-ups at a $199 ticket and one for system replacements averaging $6,500. The tune-up campaign might show a lower ROAS because the ticket is small, but the margin on each unit sold could be higher, and memberships sold at the tune-up convert at a strong rate later. ROI on that campaign, measured over a longer window, often outperforms the replacement campaign.
Use ROAS for day-to-day pacing decisions
ROAS is the right metric for weekly or even daily decisions: is this campaign producing enough lead revenue per dollar to keep running? Should I raise the budget on this Google Ads group and cut it on Facebook? Marketing managers and ad buyers at plumbing and electrical companies use ROAS as the throttle because it is fast. The platform produces it automatically.
Use ROI for budget allocation and channel decisions
ROI belongs in the owner's monthly review. Which channels produced the most profitable jobs last quarter? If Google Ads produced $500,000 in revenue at a 4x ROAS but the jobs were mostly low-margin dispatch calls, and a local home show generated $120,000 in revenue with higher-margin installs and zero callbacks, the ROI calculation may flip the ranking entirely. That is a budget-allocation decision, not a campaign-pacing decision, and it requires cost data from your CRM and accounting system, not just the ad platform.
How to connect ROAS and ROI in your reporting
The practical challenge is that ROAS lives in your ad platform, revenue lives in your CRM, and cost lives in QuickBooks. Connecting all three without manual exports is what separates operators who make fast marketing decisions from those who find out the results at month-end.
Teams using ServiceTitan or Housecall Pro alongside Google Ads and CallRail can be configured to consolidate campaign spend, attributed revenue, and job cost into a single view. When that connection exists, you can see your ROAS per channel alongside gross margin per channel, which is the combination that actually drives decisions.
A garage-door company running both paid search and organic review campaigns, for example, might see paid search produce a 5x ROAS but thin margin because the jobs skew small. Reviews might show low direct ROAS but the jobs they generate average twice the ticket size. Without a view that combines both data streams, the owner only sees the ad-platform number and draws the wrong conclusion.
Reading your marketing channel health: a quick scorecard
This shows how to interpret ROAS and gross margin signals together by channel. Individual targets vary by trade, season, and market; these are relative health signals, not universal benchmarks.
- Google Ads ROASAd spend is producing meaningful attributed revenue; monitor job margin alongsideGood
- Current
- 4.8x this month
- Target
- Target varies by trade and margin
- Gross margin on Google Ads jobsRevenue is strong but margin is below the company average; review job mixWatch
- Current
- 28%
- Target
- Compare to company baseline
- Facebook/Meta ROASAd spend is not covering attributed costs at current levels; audit targeting or pausePoor
- Current
- 1.9x this month
- Target
- Target varies by campaign type
- Organic / referral revenue shareStrong organic base lowers the pressure on paid ROAS targetsGood
- Current
- 34% of total revenue
- Target
- Higher share reduces blended CPA
- Cost per booked job (all paid channels)Rising trend; review if conversion rate or ad cost is driving the increaseWatch
- Current
- $142
- Target
- Should be well below avg ticket
| Metric | Current | Target | Status |
|---|---|---|---|
| Google Ads ROASAd spend is producing meaningful attributed revenue; monitor job margin alongside | 4.8x this month | Target varies by trade and margin | Good |
| Gross margin on Google Ads jobsRevenue is strong but margin is below the company average; review job mix | 28% | Compare to company baseline | Watch |
| Facebook/Meta ROASAd spend is not covering attributed costs at current levels; audit targeting or pause | 1.9x this month | Target varies by campaign type | Poor |
| Organic / referral revenue shareStrong organic base lowers the pressure on paid ROAS targets | 34% of total revenue | Higher share reduces blended CPA | Good |
| Cost per booked job (all paid channels)Rising trend; review if conversion rate or ad cost is driving the increase | $142 | Should be well below avg ticket | Watch |
Info
Dashboard idea: a single marketing row that shows ROAS and margin together
Contractors who use datacube can configure a marketing board that shows ad spend, attributed revenue, ROAS, gross margin by lead source, cost per booked job, and membership conversions driven by each channel, all updated from connected ad platforms, their CRM, and QuickBooks. Instead of logging into Google Ads for ROAS and QuickBooks for cost separately, the owner sees both on one screen during the weekly review. The marketing manager sees the same view in real time to pace spend through the week.
A practical approach for contractors: three steps to track both
Step 1: Agree on what counts as attributed revenue
ROAS requires a definition of revenue that matches the ad platform's attribution window. Does a job count when the call is booked, when the invoice is created, or when payment clears? This definition should be consistent across your CRM and your ad-platform reporting, or the ROAS numbers will not match your actual financials.
Step 2: Add job cost to the attribution chain
ROI requires knowing the cost of the job, not just its invoice value. Pull labor cost, material cost, and overhead allocation from QuickBooks or your job-costing system and link it back to the lead source. Even a rough allocation (using average cost per job type by department) is better than leaving cost out entirely.
Step 3: Review ROAS weekly, ROI monthly
Set a weekly rhythm where your marketing manager checks ROAS by channel and adjusts spend accordingly. Once a month, the owner or controller reviews ROI by channel to decide which ones deserve more budget, which should be cut, and whether the blended cost per acquired job is moving in the right direction. Connecting both into a shared marketing dashboard removes the need to export and reconcile at month-end.
Which number should you show the owner?
If the owner is asking 'is our ad spend working?', show ROAS by channel. If the owner is asking 'should we increase the marketing budget next quarter?', show ROI by channel with cost of goods and labor included. Most owners and GMs want to see both on one screen so they can answer both questions in the same conversation. The goal is not to choose between the two metrics but to stop treating them as the same thing.
ROAS vs ROI for contractors: common questions
See ROAS, margin, and lead-source revenue in one view
Datacube connects your ad platforms, CRM, and QuickBooks so your marketing board shows ROAS and job margin side by side, without a spreadsheet. See what a contractor marketing dashboard can look like for your trade.
