Knowledge Base & Insights

Revenue vs Profit Bidding: Why Chasing Top-Line Sales Destroys Contractor Margins in Google Ads

💡 30-Second Executive Summary
  • Google's Target ROAS is blind to Cost of Goods Sold (COGS).
  • When you optimize for gross transaction value, the algorithm favors big-ticket low-margin installations over high-margin service calls.
  • Here is the mathematical proof of why chasing revenue in ad reports erodes your bank balance, and how to shift to profit-driven bidding.

Every month, thousands of home service contractors celebrate high Return on Ad Spend (ROAS) numbers in their marketing meetings:

“Look at that campaign! We spent $5,000 and generated $45,000 in tracked revenue. That’s a 900% ROAS!”

Then the owner opens their bank statement at the end of the quarter and wonders where the cash went. Payroll was tight, equipment supplier invoices were massive, and retained earnings barely budged.

This is the Target ROAS Trap.

When you configure Google Ads to optimize for gross revenue (Maximize Conversion Value with a Target ROAS), you hand the bidding algorithm a single directive: maximize top-line dollars.

Google’s AI does not know—and does not care—what you had to pay for the heat pump, how many overtime hours your technicians logged, or what permit fees you owed the city. It treats a dollar of gross equipment sales exactly the same as a dollar of high-margin labor.


The Mathematical Proof: The ROAS Illusion

Let us compare two typical residential service campaigns side by side with identical monthly ad spend:

MetricCampaign A: Big-Ticket System InstallsCampaign B: Diagnostic & Targeted Repairs
Monthly Ad Spend$10,000$10,000
Tracked Gross Revenue$80,000$40,000
Reported Google Ads ROAS800% 🏆400%
Direct Job Costs (Labor & Materials)$64,000 (80% COGS)$16,000 (40% COGS)
Gross Margin %20%60%
Gross Profit ($)$16,000$24,000
Minus Ad Spend-$10,000-$10,000
Actual Retained Profit$6,000$14,000 🚀
Real Marketing ROI on Profit60%140%

Look closely at the bottom line:

  • Campaign A looks like an agency superstar in the dashboard: 800% ROAS, $80,000 in gross sales. But after paying for expensive HVAC units, ductwork materials, and crane rentals, the business pocketed only $6,000.
  • Campaign B looked mediocre in the ad account: 400% ROAS, only $40,000 in revenue. Yet because the work was labor-intensive repairs with minimal parts cost, the contractor banked $14,000—more than double the actual cash.

Under standard Target ROAS, Google’s machine learning algorithm will look at this account and say: “Campaign A produces twice as much revenue per dollar! Let’s divert budget away from Campaign B into Campaign A.”

The business owner literally starved their most profitable work because their advertising system was optimizing for the wrong objective.


The Three Pitfalls of Top-Line Revenue Bidding

┌────────────────────────────────────────────────────────┐
│                   THE ROAS TRAP                        │
├────────────────────────────────────────────────────────┤
│ 1. Equipment Inflation: AI chases big-ticket gear with │
│    thin margins (HVAC systems, whole-home repiping).   │
│                                                        │
│ 2. Financing & Merchant Fees: High-ticket jobs incur   │
│    5-10% dealer fee cuts not tracked in Google Ads.    │
│                                                        │
│ 3. Working Capital Strain: High revenue low-margin     │
│    jobs require floating massive supply house credit.  │
└────────────────────────────────────────────────────────┘

1. The Equipment Cost Blindspot

In HVAC, roofing, and plumbing, material and equipment costs have increased 35–50% over the last four years. When an equipment manufacturer increases dealer unit prices by 8%, your gross margin on an install compresses significantly. If Google Ads continues bidding based on the retail ticket price, your acquisition cost eats the entire remaining spread.

2. Financing Fees and Discounts

Homeowners rarely pay $15,000 for a new roof or HVAC system in cash. Contractors frequently absorb 5% to 12% in dealer financing fees (Synchrony, GoodLeap, Greensky) or offer seasonal discounts. These deductions never make it back into the Google Ads dashboard, widening the delta between “reported revenue” and “banked cash.”

3. Fleet and Crew Capacity Drag

Installing a full system requires two experienced installers, a dedicated vehicle, and an entire working day. Repair jobs allow a senior technician to clear 3 to 4 stops per day. If the ad engine floods your dispatch with low-margin replacement leads, your highest-paid technicians are tied up on low-yield jobs while lucrative emergency repair calls go to competitors.


How to Switch to Profit-Driven Bidding (Step-by-Step)

Shifting from revenue bidding to profit bidding does not require rebuilding your ad account from scratch. It requires altering the values you pass to Google’s conversion engine.

Old Workflow (Revenue Bidding):
Lead Form / Call ──► Google Ads counts $0 or $Gross Invoice ──► AI optimizes for Revenue

New Workflow (Profit Bidding):
Lead Form / Call ──► CRM calculates Gross Profit ($Rev - $COGS) ──► Passes $Profit to Google Ads ──► AI optimizes for Cash

Strategy 1: The Categorical Margin Weight (Fastest)

If you cannot pass dynamic real-time profit from your CRM immediately, calculate your blended gross margin percentage for each core trade category:

$$\text{Assigned Conversion Value} = \text{Average Ticket} \times \text{Gross Margin %}$$

Assign static conversion values in Google Ads:

  • Diagnostic / Repair Call: $350 ticket × 65% margin = $227 value
  • Maintenance / Tune-Up: $150 ticket × 70% margin = $105 value
  • System Replacement: $8,500 ticket × 22% margin = $1,870 value

Now, the system evaluates the true profit spread: the replacement is worth roughly 8 times a repair call—not 25 times. Google will bid appropriately rather than overpaying for equipment buyers.

Strategy 2: Offline Conversion Import via CRM (Most Accurate)

The gold standard for service contractors is passing actual gross profit back into Google Ads 14 to 45 days after the click.

  1. Capture Click ID (gclid) or User Data: Store the Google Click ID and hashed customer email/phone in your CRM (Housecall Pro, Jobber, ServiceTitan).
  2. Calculate Gross Profit in Job Invoice: When the job is marked paid, subtract the actual material purchase order and labor cost from the final invoice.
  3. Upload Offline Conversions to Google Ads: Using native integrations or Zapier, upload the conversion event Booked Job - Gross Profit with the dollar amount set to the actual gross profit.
  4. Set as Primary Conversion: After 30 days of data accumulation, designate Booked Job - Gross Profit as your primary bidding conversion action.

Adjusting Your Target ROAS for Profit Bidding

When switching from gross revenue to profit values, your Target ROAS must be recalculated:

  • Under Gross Revenue Bidding, a typical target is 400% to 800% tROAS ($4 to $8 of gross sales per $1 of ad spend).
  • Under Profit Bidding, you are bidding on gross margin dollars. A target of 200% to 300% tPOAS (Target Profit on Ad Spend) is healthy. A 250% tPOAS means for every $1,000 spent on Google Ads, you generate $2,500 in gross profit, leaving $1,500 in clean margin after ad costs.

Summary: Stop Feeding the Top Line

Top-line revenue is vanity; net profit is sanity; cash flow is reality.

If your marketing agency is bragging about high ROAS while your operational bank accounts feel perpetually strained, check what number is inside your Google Ads conversion tags.

Switching to Profit-Driven Bidding forces Google’s machine learning to align with your real business goal: maximizing cash in the bank, not numbers on a slide deck.

Frequently asked questions

Why is a high ROAS in Google Ads not always profitable?
Return on Ad Spend (ROAS) calculates only Gross Revenue divided by Ad Spend ($Revenue / $Spend). It completely ignores material costs, subcontractor fees, labor wages, and overhead. A campaign generating $100,000 in equipment replacement sales with an 800% ROAS might have an 82% cost of goods sold, leaving only $18,000 in gross margin. After subtracting the $12,500 ad spend, your net profit is just $5,500—while a 400% ROAS repair campaign might yield $15,000 in net profit.
What is Profit Bidding in Google Ads?
Profit Bidding (or Margin-Adjusted Bidding) is a Value-Based Bidding setup where the conversion values passed to Google Ads represent Gross Margin (Revenue minus Direct Job Costs) rather than top-line revenue. This trains Google's machine learning models to maximize the actual dollars left in your bank account rather than inflating headline revenue.
How do I implement profit bidding if my margins vary by job?
There are three primary methods: 1) Tiered conversion actions with pre-calculated average profit values for each service category, 2) Dynamic value passing via custom scripts on thank-you pages based on quoted margin, or 3) Offline Conversion Import (OCI) where your CRM or accounting software (QuickBooks, Jobber) uploads the exact gross profit once the job is closed and invoiced.
Will switching to Profit Bidding reduce my lead volume?
It often reallocates your volume rather than reducing it. The algorithm will bid less aggressively on high-cost, low-margin equipment jobs and bid more aggressively on high-margin repairs, maintenance plans, and lucrative niche installations. Your top-line revenue report may stay flat or dip slightly, but net cash flow and retained operating profit increase.
We do this for you Switch to profit-driven bidding

Ready to fix the leaks?

Our diagnostic audit covers your tracking, ad accounts, and SEO architecture.

Switch to profit-driven bidding

Get an Express Growth Audit for Your Business

Enter your website URL — we'll send a breakdown of marketing leaks within 24 hours.

Don't want to wait 24 hours — book a 45-min call.

By submitting, you agree that Husky Digital may contact you about your request by email or phone. We do not send marketing texts or automated calls without your separate consent. See our privacy policy.