Marketing & lead ROI

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.

By Datacube content engineAutogenerated

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

DimensionROASROI
FormulaRevenue / ad spend(Net profit / total investment) x 100
What goes in the denominatorAd spend only (clicks, impressions, campaign budget)All costs: ad spend, labor, materials, overhead, callbacks
Question it answersIs my ad spend working?Is this campaign profitable?
How fast you can read itReal-time or near-real-time from the ad platformAfter jobs are invoiced and costs are booked; often lags 30-60 days
Who uses itMarketing manager, ad buyer, CSR team watching lead volumeOwner, GM, controller reviewing budget allocation
Main blind spotIgnores job margin; a big revenue number hides low-profit jobsSlow to calculate; hard to attribute precisely by channel
HVAC exampleGoogle campaign returns $4 for every $1 spent: 4x ROASAfter 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 alongside
    Good
    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 mix
    Watch
    Current
    28%
    Target
    Compare to company baseline
  • Facebook/Meta ROASAd spend is not covering attributed costs at current levels; audit targeting or pause
    Poor
    Current
    1.9x this month
    Target
    Target varies by campaign type
  • Organic / referral revenue shareStrong organic base lowers the pressure on paid ROAS targets
    Good
    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 increase
    Watch
    Current
    $142
    Target
    Should be well below avg ticket

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.