Almost every service business has the same argument internally at least once a year. Someone says the website should show prices. Someone else says prices scare people off, every job is different, and competitors will undercut us. The argument usually ends in a draw, so the site stays vague, and the cost of that vagueness never shows up in any report. It should. The decision to publish or withhold a number is one of the biggest conversion levers on a service website, and most shops make it by instinct rather than on purpose.
What silence on price actually costs you
When a visitor can't find any indication of cost, they do one of three things. They leave and check the next company. They fill in your form to find out, which gives you a lead but often a poorly matched one. Or they assume a number — and the number people assume is rarely the one you would have quoted.
The second outcome is the one worth looking at, because it feels like success. Your form fills go up when the only way to learn the price is to ask. But a portion of those inquiries are people who were never going to buy at your rates, and every one of them consumes a call, a drive, or an estimate slot. If your team complains that leads are unqualified while your lead count looks healthy, price opacity is a reasonable first suspect.
There's a second, slower cost. Search behaviour has shifted: people ask AI assistants and search engines how much a service costs before they ever visit a company site. If your pages contain no numbers at all, you're not in the answer. Whoever did publish a range gets summarized, cited, and clicked. You can dislike this and it still happens.
Four ways to publish a number
"Show prices" isn't one decision — there are four levels, and they suit different businesses.
A full menu works when the work is standardized and the variables are few. A med spa listing per-unit pricing for injectables or per-session pricing for laser packages is describing something genuinely repeatable. Customers can compare, self-select, and book. Hiding this kind of pricing mostly signals that you charge whatever the room will bear.
Ranges work when scope varies but the band is real. "Most full roof replacements we do fall between X and Y depending on size, pitch, and material" tells a homeowner whether to keep reading, without committing you to a number you haven't measured. The honest version of this names the drivers, not just the spread.
Starting-at pricing is the weakest form and the most abused. It's useful as a floor — a minimum service call fee, a smallest-job price — and destructive when the starting number is one nobody actually pays. If your "from $99" job represents a case that occurs twice a year, you're buying clicks with a number that will produce an argument on the phone.
Structure without figures is the fallback when genuine variability defeats all of the above. You explain how you price — what's included, how you charge (per square, per unit, per hour plus materials), what triggers a change order, what a deposit looks like. A visitor who understands your pricing logic is far better prepared than one who found a number with no context.
Most service businesses should be at ranges or structure, and are sitting at nothing.
Publishing a number you can stand behind
The fear behind withholding price is that you'll be held to a figure that doesn't fit the job. That's a real risk, and it's managed by framing rather than by silence.
Start by pulling your own numbers. Look at the last stretch of closed jobs in one category and find where the middle actually sits — not your best job, not the outlier that paid for the quarter. If you can't produce that from your system in an afternoon, that's a separate problem worth fixing first, because you're also quoting new work without knowing it.
Then publish the band with the reasons attached. Name the three or four things that move a job from the bottom to the top of the range. Homeowners are not offended by "steeper roofs cost more"; they're offended by a quote that arrives three times higher than anything they'd been led to expect. Stating the drivers in advance does the qualifying work for you and makes the estimate call shorter.
Give the range an as-of date and a review cadence. Material costs move; a page that quietly goes stale becomes a liability the first time a customer prints it out. Put a quarterly reminder against it the day you publish.
One caution on the undercutting fear: your competitors can already learn your pricing by requesting a quote, and probably have. The people genuinely kept in the dark by a priceless website are your prospects.
What to automate, and what stays your call
Automate the maintenance. A monthly job can pull closed-job values by category, compute where the middle sits, and flag any published range that no longer matches reality. Automation can also keep the same figures consistent across your site, your Google Business Profile, and your quote templates, which is where these things usually drift apart.
Automate the first response to a price question. When someone asks "how much for X" through chat or a form at nine at night, a system that replies with your published range, the drivers, and a booking link is better than a voicemail. It's the same number they could have read on the page, delivered when they asked.
What stays human is the decision about which number goes up and how it's framed. That's a positioning call about who you want to attract and who you're happy to lose, and it can't be derived from your averages alone. A system can tell you your typical job runs higher than what's on your site. Whether you raise the published range, hold it and improve your margin, or deliberately stay quiet in a category you're exiting — that's yours.
Human too is any conversation where the quote lands well above the range. That call needs someone who can walk through what changed and why, in a way that keeps the relationship whether or not the job closes. No automated message does that well, and sending one is how a manageable gap turns into a bad review.
Want this built into your business, properly?
Start with a free lead audit. We time how fast your business answers a new inquiry and show you where leads slip through.
Book a 10-min call →