Performance Max for Contractors: Stop Running It Like an E-Commerce Campaign
Performance Max is Google’s AI campaign type that places ads across Search, Display, YouTube, Gmail, and Maps from a single campaign. It auto-optimizes placement and creative combinations toward whatever conversion goal you define. For an e-commerce store selling a $50 product, the default setup works: the conversion is a completed checkout, volume gives the algorithm fast feedback, and a wasted optimization costs $50. For a plumbing or HVAC contractor, the default setup burns budget on leads that never become booked jobs.
The core mismatch is this: Google ships Performance Max configured to maximize conversion volume. Your conversion is not a checkout, it is a phone call. If you have not told Google what a qualified call looks like, it optimizes for cheap calls from homeowners outside your service area, people asking about services you do not offer, and competitors checking your pricing. Every one of those counts as a conversion in the default setup. Most contractors who run PMax without adjusting defaults get a cost per lead that looks acceptable in the dashboard and a close rate that looks terrible when they count actual booked jobs.
This is not an argument against Performance Max. Configured correctly, it is the highest-reach campaign type available for a local service business. It places ads in front of homeowners on YouTube before they have searched, in Gmail when they are reading about their HVAC problem, and on Maps when they are actively looking for a contractor nearby. The reach is unmatched by any other single campaign type. The problem is that “configured correctly” means different settings than Google ships by default.
Set Call Duration as Your Primary Conversion Goal
The default phone call conversion action in most Google Ads accounts fires on any call regardless of duration. A 12-second wrong number, a competitor verifying your address, and a 7-minute call where a homeowner schedules a furnace inspection all trigger the same conversion event. Performance Max optimizes toward whichever events you feed it as primary conversions. Feed it all calls equally, and it optimizes for cheap call volume, not calls that become booked jobs.
Fix this before the campaign spends a dollar. In Google Ads, open Tools, then Conversions, select your phone call conversion action, and set the minimum call duration to 60 seconds. Calls under 60 seconds are almost never qualified leads for a home service contractor. Based on benchmarks across plumbing and HVAC accounts, calls over 60 seconds convert to booked appointments at roughly 3x the rate of calls under 30 seconds. Setting 60 seconds as the conversion threshold filters out noise and teaches PMax to pursue the call pattern that actually produces revenue.
If you also track web form fills as conversions, set them as secondary conversions, not primary goals. When PMax optimizes against both calls and form fills simultaneously, it drifts toward whichever is cheaper to generate, which is almost always form fills. Form fill leads close at roughly half the rate of inbound callers across most home service categories. Your primary goal should be calls over 60 seconds; form fills stay in the account as measurement data only.
Structure Asset Groups by Service Line, Not by City
Most contractors who set up PMax create one large asset group covering all their services with a broad service area. Google then serves a mix of creatives across all placements and services simultaneously. Performance data is aggregated, so you cannot tell whether the campaign is generating calls for water heater replacement, drain cleaning, or new construction plumbing. When the campaign underperforms, there is nothing specific to diagnose or fix.
Create separate asset groups by service line: one for HVAC repair, one for plumbing, one for electrical, or whatever your primary service categories are. Each asset group gets its own headlines, descriptions, images, and a dedicated landing page. A homeowner who sees your ad for furnace repair clicks through to a page about furnace repair, not a generic homepage. PMax reads the match rate between ad content and landing page when allocating budget across asset groups. Asset groups with strong content-to-page alignment consistently outperform generic ones within the same campaign budget.
Avoid creating separate asset groups by city. Geographic targeting is set at the campaign level in PMax, not the asset group level. City-specific asset groups inside a PMax campaign do not receive city-specific budget allocations. The campaign routes budget to whichever asset groups perform best regardless of your city-level structure. Split by service line and set your geographic targeting at the campaign level to cover your actual dispatch range.
Add Your Brand as a Negative Keyword Before Launch
Performance Max does not automatically exclude your own business name from its targeting. Without a brand exclusion, your PMax campaign spends a portion of its budget on searches for your business by name: people who already know you, are already planning to call, and who would have found you through organic results or a branded search campaign at near-zero cost. Paying Performance Max rates to capture someone who typed your exact business name is a budget leak that runs silently because the resulting conversions look real.
Add your business name, common abbreviations, and likely misspellings as a negative keyword list and apply it to your PMax campaign in the Settings panel before launch. Google added brand exclusion controls to PMax in 2023 and has expanded them since. In most accounts running PMax without brand exclusions for 60 or more days, 5 to 20 percent of total spend goes to branded queries that serve no incremental purpose.
Feed the Algorithm Your Customer Data Before It Starts Spending
Performance Max uses audience signals to identify new users who resemble the people you want to reach. Without signals, it starts cold: broad targeting, an expensive learning phase, and two to four weeks before it finds the audience patterns that work for your business. That learning period costs real money and produces lower-quality leads while it runs.
Upload a customer list before the campaign launches. Export email addresses from your CRM, invoicing software, or field management system, even if the list is only 200 contacts. Upload it to Google Ads under Audience Manager as a Customer Match list, then add it to your PMax campaign as an audience signal. Google matches your past customers to their Google accounts and uses those profiles to model lookalike targeting from day one. A campaign with a 200-person customer list in its audience signals finds qualified leads faster and at lower cost than one starting with no signal data at all.
| Default PMax Setting | Problem for Contractors | What to Change |
|---|---|---|
| All conversions as primary goals | Optimizes for cheap calls and form fills equally; close rate suffers | Primary goal: calls over 60 seconds only; form fills secondary |
| One asset group for all services | No per-service-line data; nothing specific to fix when it underperforms | Separate asset groups per service line with matched landing pages |
| No brand exclusions | Spends budget on searches for your own business name | Apply brand negative keyword list before launch |
| No audience signals | Two to four week cold-start at high cost; low-quality leads during learning | Upload customer email list as audience signal before launch |
| Target CPA set on day one | Algorithm underspends or exits learning without conversion history | Run Maximize Conversions for 30 days or 30 conversions, then add tCPA |
Wait for 30 Conversions Before Setting a Cost Target
Google recommends waiting until a campaign has at least 30 conversions before setting a Target CPA or Target ROAS. Setting a cost target on day one is one of the most common mistakes contractors make with PMax. Without conversion history, the algorithm cannot determine how to hit your target. It either underspends because it cannot find enough matching opportunities at your cost threshold, or it exits the learning phase before stabilizing. Either outcome produces less volume than running Maximize Conversions with no target during the learning period.
Run Maximize Conversions with no CPA target for the first 30 days or until you reach 30 primary conversions, whichever comes first. Once you hit 30, pull the average cost per conversion from the campaign report. Set your initial tCPA at 20 percent above that average, not below. Setting an aspirational CPA immediately suppresses delivery. Work the target down by 10 to 15 percent every two weeks as conversion volume grows and the algorithm has more history to work with.
Three Actions for This Week
- Audit your call conversion duration setting today. In Google Ads, open Tools, then Conversions. Find your phone call conversion action and check the minimum call duration. If it is set to any duration or 0 seconds, change it to 60 seconds immediately. This filters out the noise calls inflating your conversion count and teaching the algorithm to pursue cheap, unqualified interactions. The change takes two minutes. Over the next 7 to 10 days, the algorithm recalibrates toward longer, qualified calls. If your current PMax campaign has been running for 30 or more days with the wrong conversion definition, this single change will likely be the most impactful optimization you have made to the account.
- Add your brand as a negative keyword list if you have not already. Open Shared Library, then Negative Keyword Lists, and create a list with your business name, common abbreviations, and misspellings. Apply the list to your PMax campaign under Settings, then Brand Exclusions or Negative Keywords depending on your account version. If your campaign has been running without this exclusion for more than 60 days, pull the Insights report, find the Search Terms section, and check how much budget has gone to branded queries. In most unprotected accounts, the number is between 5 and 20 percent of total spend, all of it capturing demand that already existed rather than generating new demand from people who had never heard of your business.
- Export your customer email list and upload it as an audience signal. Pull every customer email from your invoicing software, service management platform, or CRM. In Google Ads, go to Tools, Audience Manager, then Customer Match, and upload the CSV. Once processed, typically 24 to 48 hours, add the audience to your PMax campaign’s Audience Signals setting. For a campaign running without audience signals, expect cost per qualified call to drop 15 to 30 percent within two to three weeks as the algorithm shifts toward users who resemble your actual customers rather than anyone searching a home-service-adjacent keyword in your zip code.
Performance Max is not a campaign type built with home service contractors in mind. Its defaults reflect e-commerce priorities: conversion volume, broad creative testing, and cheap events at scale. A plumbing or HVAC business needs qualified inbound calls that turn into booked jobs. The five adjustments above, call duration thresholds, asset group structure, brand exclusions, audience signals, and a delayed cost target, realign the algorithm with what your business actually needs. None of them require a new landing page, a third-party tool, or a budget increase. They require 90 minutes of configuration that most contractors running Performance Max have never completed.