Ask ten business owners whether prices belong on a website and you'll get a fistfight. Half will tell you publishing prices is commercial suicide: competitors will undercut you, customers will judge you on a number before you've had a chance to explain your value, and every job is different anyway. The other half will tell you hiding prices is a relic, that "call for pricing" is the fastest way to lose a customer born after 1980, and that the businesses winning right now are the ones that act like the internet exists.
Both camps are partly right, which is why the fight never ends. We publish every one of our prices on our pricing page, so you can guess which side we eventually landed on. But we didn't land there casually, and the case against publishing is stronger than the publish-everything crowd admits. So let's do this honestly: both sides, the middle ground most service businesses should actually use, and the new factor, AI search, that's changing the math faster than most owners realize.
The honest case for keeping prices off your site
The arguments against publishing aren't dumb. Here's the strongest version of each.
Every job really is different. If you're a roofer, the gap between a simple shingle replacement on a ranch house and a steep-pitch tear-off with rotted decking can be tens of thousands of dollars. A single published number is either wrong for most customers or so hedged it's meaningless. Custom work resists flat pricing, and pretending otherwise can set expectations you then have to spend the first ten minutes of every sales call un-setting.
Price without context invites the wrong comparison. A customer who sees your number next to a cheaper competitor's number, with no other information, sees only the gap. They don't see that you're licensed and insured, that you show up when you say you will, that your work carries a real warranty. The phone call exists, in this view, precisely so you can establish value before the number lands. Lose the call and you lose the framing.
Competitors will read it. They will. Anyone who tells you they won't is lying. If your market has a habitual undercutter, publishing your rate card hands them a target.
It can cost you pricing flexibility. When prices are public, charging different amounts for the same service in different situations gets harder to do quietly, even when there are legitimate reasons (travel distance, urgency, job complexity).
These are real costs. If the conversation ended here, "call us" would win.
The honest case for publishing
It doesn't end there, because the case for publishing rests on something the anti-publishing arguments quietly skip: the customers you never hear from.
Price-hiding filters out your best buyers, not your worst. The owner's fantasy is that "call for pricing" filters out cheapskates. In practice it filters out busy people. The customer with money and a job to fill doesn't have time to call four contractors to assemble basic information; they shortlist the two or three businesses whose websites answered their questions and call those. The tire-kicker, ironically, has all the time in the world to call you. Hiding prices doesn't protect you from price shoppers. It protects your competitors from comparison with you.
Published prices pre-qualify. When your number is public, the people who do contact you have already accepted the ballpark. Sales conversations start at "when can you start" instead of a slow dance toward a reveal. Owners who make the switch consistently report fewer calls and better calls, and most decide that trade is worth making twice.
Transparency is a trust signal, and trust is the whole game for local services. A customer hiring a stranger to come to their home is mostly buying confidence. A business that states its prices reads as a business with nothing to hide. One that won't reads, fairly or not, as one planning to size up the customer before quoting. You may know that's not what you're doing. The customer doesn't.
The competitor argument is weaker than it sounds. Any competitor who genuinely wants your pricing can get it in a day with one phone call and a fake address. Hiding prices on your website doesn't keep secrets from competitors. It only keeps them from customers.
The middle ground: ranges and starting-at prices
For most service businesses, the right answer isn't a full public rate card or total silence. It's structured honesty: ranges, starting-at prices, and typical-project examples.
- "Starting at" pricing sets a floor without promising a ceiling. "Water heater replacement starting at $1,800" tells the customer with a $600 fantasy not to call, and tells everyone else you're in their universe. If you're a plumber, this alone will improve your call quality, and it's part of what we build into plumbing sites.
- Ranges work where jobs cluster. "Most full roof replacements in our area run between X and Y" respects the reality that jobs vary while still giving a real answer. (Use your actual numbers; the range only builds trust if your quotes usually land inside it.) This is the standard approach we take on roofing sites.
- Example projects are the most underused option: a real recent job, what it involved, what it cost. Three of these teach a customer more about your pricing than any table, and they double as proof of work.
Whichever form you use, two rules keep it honest. First, the published number has to be one you'll actually honor in the common case; a "starting at" price that no real customer ever achieves is bait, and customers can smell it. Second, say what moves the price. "Final price depends on roof pitch, layers to remove, and decking condition" turns variability from an excuse into an explanation.
The AI search wrinkle nobody planned for
Here's the part of this debate that's new, and it tilts the field hard toward transparency.
A growing share of customers no longer start with a list of ten blue links. They ask a question, of Google's AI-assisted results, of ChatGPT, of whatever assistant lives in their phone, and they get a synthesized answer: what the service typically costs, what to look for, and often, which local businesses to consider. These systems build answers from what's published on the open web. They can only cite, quote, and recommend what they can read.
Follow the logic. If a customer asks "how much does a website for a small plumbing company cost," an AI assistant will assemble an answer from the businesses that publish pricing information. The businesses that publish are in the answer. The ones that don't are simply absent, not criticized, not compared unfavorably, just not there. "Call for pricing" used to mean the customer had to work harder to get your number. In an AI-mediated search, it increasingly means you don't exist in the conversation at all.
This isn't a separate discipline from regular SEO; it's the same one with the stakes raised. Google's longstanding guidance on creating helpful, people-first content already rewards pages that fully answer what a searcher asked, and price is part of a full answer for almost any commercial question. Clear page structure and even structured data markup can make your pricing information easier for machines to read and reuse. The web is being read by software that summarizes, and the summarizers favor the legible.
You don't have to like this to plan for it.
Why we publish ours
We sell websites starting at $500 and we say so, on a public page, with every tier laid out. Here's what that's done for us, as honestly as we can report it.
The calls changed. People who book a call with us have read the pricing page; they're not calling to extract a number, they're calling to start. Nobody feels ambushed, nobody negotiates from suspicion, and we've never once lost a deal we should have won because the price was public. We've certainly been undercut, and we'd have been undercut anyway. The customers who left over a few hundred dollars were never going to be happy at our price; the ones who stayed cite the published pricing, unprompted, as a reason they trusted us.
And we practice the rest of what this post preaches: our pricing page explains what moves the price, our website and SEO service pages give real scope, and when the number is bigger than a customer wants to pay at once, financing is right there next to it rather than hidden in the close.
If your pricing situation is genuinely too complex to publish anything, that's sometimes a pricing problem wearing a website costume. Productizing even one offering, one named package at one price, gives your site something concrete to sell and gives AI search something concrete to repeat.
Where this leaves you
Publish something. A full rate card if your services are standardized, starting-at prices or honest ranges if they're not, example projects if even ranges feel impossible. The downside cases are manageable and mostly imaginary; the upside, better calls, more trust, and continued existence in AI-assembled answers, is structural and growing. The businesses that win the next five years of local search will be the legible ones.
See our prices, then watch us earn them
We're Omnyra, a veteran-owned web shop in Wilmington, NC. We build done-with-you websites live on a call with you: first draft in 24 hours, live in 7 days, guaranteed. Tiers start at $500, every price published openly at /pricing, with pay-in-4 and Klarna available. We've built 1,500+ small business sites in the last 90 days, and transparent pricing is a big part of why.
Book a call and we'll build yours together, price agreed before we start, no reveal at the end.
