Skip to content

Publish a price range for your highest-ticket job, then judge it on sold jobs, not calls

Fewer calls, a booked rate that can move either way, and sometimes fewer visits where a tech drives out to hand over an estimate nobody signs: how to read all three.

TL;DR

  • Yes, for one job: your highest-ticket one. Publish a range, and the reasons it moves, on the page your "cost" searches land on. It ends the calls that would have ended at the number before they cost a CSR's time or a tech's afternoon.
  • Expect fewer calls. The people the range stops have already cost you the click, so filtering alone doesn't lower ad cost per sold job. If your CSRs were booking price shoppers as free estimates, it also cuts visits where a tech hands over an estimate nobody signs. Cost per sold job falls only when sold jobs rise.
  • Booked rate can move either way, depending on that same office habit. Judge the range on jobs sold, cost per sold job and no-sale visits for that one job, 90 days against the 90 before.
  • In one Phoenix account, a panel-upgrade page with a range went live alongside a separate electrical budget and search-term cuts: fewer electrical enquiries, more electrical jobs sold. The case can't separate the page from the rest; the checklist below lets your test do it.
  • A Google price asset takes one price per row, and an optional qualifier ("From", "Up to" or "Average"), if you set one, covers every row. Google's policy wants the service "easily found at the ad's destination"; our reading is that the range goes on the page before a price goes in the ad.

Should HVAC companies publish prices online?

Our answer: yes for one job, as a range with the reasons it moves. The job is your highest-ticket one sold to homeowners: a system replacement for an HVAC shop, a panel upgrade or EV charger for an electrician, a repipe or tankless install for a plumber. In our reading, three things make it the right place to start.

  • The searches already ask for the number. When we checked Google's autocomplete for panels, chargers and generators, each job had a seed whose first suggestion was a cost phrase, such as "electrical panel upgrade cost". A cost search that lands on a free-estimate button asks the homeowner to phone for the one thing they typed. We have not run the same check for HVAC or plumbing jobs; step 1 of the checklist looks for it in your own search terms.
  • The gap between hope and price is widest. A homeowner who expects a new system to cost about what last summer's repair did learns otherwise somewhere: on your page, on your CSR's phone, or at the kitchen table.
  • A no-sale visit costs the most. On a repair, the visit is the job. On a replacement or a panel, it is a drive, a walk-through and an estimate, and when the homeowner stops at the number, a tech's afternoon ends with nothing on the board.

What does a range do to the calls you get?

Without a number on the page, callers who will stop at your price meet it in one of two places:

  • On the phone. They ask the CSR. If the CSR won't say, some hang up and some book a free estimate to find out.
  • At the kitchen table. The ones who booked hear it from your tech, after the drive and the walk-through.

A range moves that moment onto the page. In our reading, many of the people who would stop at the number read it and don't call. The click that brought them there is already paid for; the phone call and the estimate visit are not.

A range can also bring in callers who wouldn't phone without a ballpark, such as someone who has to take an afternoon off work for the estimate. We have not measured that effect on its own.

What it does to your numbers: a worked example

Illustration, not client data. Put your own numbers in its place. An HVAC shop spends $3,000 a month on system-replacement searches and gets 40 calls from the page, $75 a call. The office books 20 estimate visits and the techs sell 6 replacements. Eight of the 40 callers will stop at the number. Then the range goes up.

Same $3,000 a monthCallsBooked visitsBooked rateJobs soldVisits with no saleCost per sold job
No range402050%614$500
Range. The 8 had been booking 5 free estimates321547%69$500
Range. The 8 had been hanging up on the CSR322062.5%614$500
Range. Row 2, plus 2 buyers who call because they saw a number341750%89$375
  • Calls fall in every row. A report in calls or leads shows the range as a loss, even in the last row, where the shop sells a third more jobs.
  • Booked rate goes down, up or nowhere. It drops about 3 points in the office that booked price shoppers and rises 12.5 points in the office that let them hang up, with 6 jobs sold in both. It describes your office's handling of price callers, not the range.
  • Filtering alone doesn't touch ad cost per sold job. Rows 2 and 3 buy the same clicks and sell the same 6 jobs. Row 2 saves 5 visits where a tech drove out for nothing. When the board is full, those are 5 slots for work that sells, and the ad report can't show them.
  • Cost per sold job falls only in row 4, by 25%, and it takes buyers who wouldn't have called without a number.
  • One sale swings the figure. At 6 sold jobs a month, one sale more or less moves cost per sold job to $429 or $600. One month can't tell the range from noise, so the test below runs 90 days.

Answer rate and booking rate keeps price shoppers in the booking-rate denominator because the ads paid for those calls; booked rate here is booked visits ÷ all calls from the page. A range changes how many price shoppers call, which is why booked rate is a diagnostic here, not the scoreboard.

What happened when one account put a range on its panel page

Reeis has worked in Phoenix since 2009, selling air conditioning, plumbing, electrical and insulation. Air conditioning is the founding trade. Electrical was licensed years later and had been added to an account built for air conditioning, with that trade's bids, pages and idea of a good cost per lead.

The rebuild sent "electrical panel upgrade cost" searches to a page that prints a price range for a panel upgrade: not a quote, a range with the reasons it moves. In the same fortnight electrical campaigns got their own budget and stopped bidding against air conditioning. The rebuild also cut diagnostic and career searches ("why does my breaker keep tripping", "electrician salary arizona").

Reeis Air Conditioning, Plumbing & Electrical · Phoenix, AZRead the case
1.8×
Electrical jobs sold
Window
90 days against the 90 before
Source
Client CRM

Reeis Air Conditioning, Plumbing & Electrical, Phoenix. After the panel-upgrade page with a range went live, alongside a separate electrical budget and cuts to diagnostic searches, electrical enquiries fell. Electrical jobs sold: 1.8×. Window: 90 days against the 90 before. Source: Client CRM.

Limit: Ninety days is a short window for planned electrical work, where the gap between the first search and the signed job is often longer than the window itself. Some of the jobs counted here were started before it.

Reeis Air Conditioning, Plumbing & Electrical · Phoenix, AZRead the case
−31 to −37%
Cost per sold electrical job
Window
90 days against the 90 before
Source
Call tracking

Reeis, the same 90 days. Fewer enquiries, and more of them booked and sold. Cost per sold electrical job: −31 to −37%. Window: 90 days against the 90 before. Source: Call tracking.

Limit: The landing page and the campaign split went live in the same fortnight. We report them together because we cannot separate them honestly.

In our reading, that matches row 4 of the example above: fewer enquiries, more jobs sold. It is not what a range alone has to produce; the full funnel is on the Reeis case page. The case can't show how much of it the page did. Cutting the diagnostic searches also removed people who were not yet hiring, and the separate budget changed which searches the money bought. The checklist below changes one thing at a time for that reason.

Can the price go in the Google ad as well?

Google Ads has a price asset for this: cards under a Search ad, each with a header, a price, a description and a link. From Google's help, policy and API pages:

  • "You must enter a minimum of 3 items", and Google recommends five or more. They "show as a set of up to 8" cards, with up to 25 characters each for header and description.
  • Each row holds one price value. In the API reference the qualifier ("From", "Up to" or "Average") is a field of the whole asset, not of each row, and is not marked required; if set, every row carries the same one. The policy doesn't allow price information in the header or description.
  • On mobile, "the price you provide may be truncated or rounded"; Google's example is $12,345.67, which might show as $12.4K.
  • A tap on a price item costs the same as a click on the ad's headline. Expanding the carousel on mobile is free.
  • The policy page points to the Unavailable offers rule: products or services should be "priced accurately, easily found at the ad's destination, and match with headers and descriptions."

Our reading: with one price per row and no prices in the header or description, the asset has no place for a range. It can carry a "From" price for the high-ticket job once the page prints the range that price starts, so the ad and the page agree. Because the qualifier covers every row, pick three jobs where "From" is honest for each, such as a system replacement, a furnace replacement and a ductless install.

What this doesn't cover

  • The page's effect on its own. Our only case changed the page together with the budget and the search terms. We have no isolated figure, and the worked example is arithmetic, not a measurement.
  • Calls that never see the page. With a call asset, Google says people "can tap or click a button to call your business directly or go to your website", so a caller who phones from the ad never reads the range.
  • How automated bidding reacts. If your Google Ads conversions are calls, a range lowers them, and we have not measured what that does to bids. Sending the job back from Jobber covers counting sold work instead.
  • What to charge. This is about showing the price you charge, not setting it.

Do this in your account

  1. Pick one job. Highest ticket, sold to homeowners, with searches that ask about cost. Look in your search terms for "cost", "price" and "how much" next to the job name.
  2. Build the range from your own invoices. Take the last 12 months of sold jobs of that type from your CRM and print the band most of them landed in, not your cheapest job ever. Under it, list the three or four things that move the price in your techs' words: for a replacement, perhaps the tonnage, the efficiency tier, ductwork changes and the permit.
  3. Write down the baseline. Last 90 days, that job only: calls from the page, booked visits, jobs sold, visits that ended with an estimate and no job, and ad spend on the searches that land there.
  4. Write the rule before you look. For example: keep the range if jobs sold hold or rise and no-sale visits fall; rewrite it if jobs sold fall. Decide now how big a fall counts at your volume.
  5. Change only the page. Hold bids, budget, keywords and negatives on that campaign for 90 days if the season allows. Tell the CSRs the range is live, and give the techs the reasons list to point to when a job lands above it.
  6. Compare after 90 days. Jobs sold and cost per sold job first, no-sale visits second, calls and booked rate last. For a seasonal job such as AC replacements, also compare with the same 90 days a year earlier.
  7. Then add the price asset. The tested job links to the page with the range, next to at least two other priced jobs. The qualifier covers every row, so choose "From" only if a starting price is honest for all of them.

FAQ

Should I publish prices for repairs too? Not as a range. A repair price depends on a diagnosis the page can't make, so for repairs a trip or diagnostic fee is the one number we would print.

Will publishing prices lose me customers? It loses calls, which is not the same thing. The people it stops read your number and decided against it; without the range they would have heard the same number on the phone or from your tech. Your tech might have talked some of them round, which is what the test in the checklist measures.

Should I publish an exact price or a range? A range with the reasons it moves, for any job where the price depends on the house. An exact price fits a job that doesn't vary, such as a trip fee.

Why did my booked rate drop after I added prices? Most likely your CSRs had been booking price shoppers as free estimates, and those callers now read the range and don't call. Check jobs sold and no-sale visits for the same period before treating it as a problem.

How long before I know if it worked? Give it 90 days and compare with the 90 before. At six sold jobs a month, one sale more or less moves cost per sold job by 14 to 20%, so one month can't separate the range from noise.

Sources

All read in full on September 24, 2026. Every quotation from Google above is from these pages.

Client figures come from the Reeis case.

Request your free strategy

One page, five details, no card and no call.

Would rather talk it through? Ask for a callback on the form and pick a window. The person who would run your account calls you, not a salesperson.

This sets the testing pace. There is no minimum.

A good callback window or the first problem you want us to look at

No card and no call. Read-only access only.