← All postsQuote from Warren Buffett: "Price is what you pay. Value is what you get."

Should You Put Prices on Your Website? Usually, Yes. Here's Why

By Hugh McNamara ·

Somewhere in almost every website project I do, the owner and I hit the same moment. We’ve sorted the homepage, we’ve sorted the services page, and then I ask what they charge so we can put it on the site. The room goes quiet. Then some version of: “Do we have to show that?”

It’s a fair question, and I don’t think the people asking it are being silly. There are real reasons businesses keep prices off their websites, and in a few situations those reasons hold up. But after building sites for small businesses and watching what happens to the enquiries afterward, I’ve landed firmly on one side. Most businesses should publish something about price. A number, a starting point, a range, or at minimum a clear description of how a quote happens. The businesses that publish nothing are paying for that silence every week, and the cost is invisible, which is exactly why it never gets fixed.

I wrote about this briefly in my guide to conversion-optimized websites, but it deserves a full post, because the pricing question has more moving parts than a paragraph can hold. Let’s take the debate seriously and work through it.

The two fears, and how much truth is in them

When an owner doesn’t want prices on the site, it’s almost always one of two worries underneath.

Fear number one: competitors will see my prices and undercut me. This one sounds sensible until you sit with it for a minute. Your serious competitors already know roughly what you charge. They’ve heard it from shared customers, from suppliers, from the ex-employee who now works for them, or from simply phoning you with a fake enquiry, which takes four minutes and happens more than anyone admits. Hiding your prices from the public does not hide them from the three other companies in your niche. It only hides them from the people you actually want to reach.

There’s a smaller kernel of truth here, though. If your entire pitch is “we’re the cheap option” and a competitor can beat your number by ten dollars, a public price gives them a target. But that’s a problem with competing on price alone, and hiding the number doesn’t solve it. It just delays the same losing race to the phone call.

Fear number two: sticker shock. A visitor sees the number, gasps, and leaves without giving you the chance to explain the value. This fear is more legitimate, and I want to be fair to it. If you charge more than people expect and your website does nothing to justify that, a bare price genuinely can scare off buyers who would have said yes after a good conversation. The mistake is thinking the choice is between showing a naked number and showing nothing. A price with context around it, what’s included, why it costs what it costs, what the cheap alternative actually gets people, behaves completely differently from a number floating alone on a page. Sticker shock is mostly a presentation problem wearing a pricing costume.

What silence actually costs you

Now flip it around. Say you publish nothing. No numbers, no ranges, no hint of process. What happens in the visitor’s head?

They fill the gap themselves, and they rarely fill it in your favour. Picture a homeowner looking at a basement renovation contractor’s site at eleven at night. This is a hypothetical, but you’ll recognize the shape of it. She sees nice photos and a contact form and no pricing information anywhere. She’s tired. Her budget is real but modest, and her working assumption becomes: if they don’t say, I can’t afford it. She closes the tab. You never learn she existed.

Or the opposite version. Someone with a champagne project and a beer budget sees no prices, decides it can’t hurt to ask, and books a call. You spend forty minutes walking through their project, drive out for a site visit, write up a quote, and then get the email that starts with “wow, we had no idea it would be that much.” Nobody did anything wrong. You just spent half a day discovering a mismatch that a single published sentence would have surfaced in ten seconds.

That second scenario is the one that quietly eats service businesses. Every hour spent quoting someone who was never going to buy at your price is an hour not spent on the customers who would. When I ask owners how many of their quote requests turn into jobs, the ones with no published pricing consistently describe a pile of dead quotes. They tend to blame the leads. The leads were fine. The website just refused to do any sorting before the phone rang.

There’s also a trust dimension, and it matters more locally than people think. A visitor comparing three plumbers has one tab where prices are stated plainly and two tabs where price is a mystery to be revealed later. The plain one reads as confident. The mysterious ones read, fairly or not, as “it depends how much we think you can pay.” People have been burned by that before. Local reputations are built on not being that business.

You don’t have to publish a full menu

Here’s where the debate usually gets stuck, because owners imagine only two options: a complete price list carved in stone, or nothing. There’s a whole middle range, and most small businesses belong somewhere in it.

Starting prices. “Furnace tune-ups from $149.” “Wills from $600.” A floor number does an enormous amount of work. It tells the visitor which league you play in without committing you to any specific job. Anyone for whom $149 is unthinkable self-sorts out. Anyone comfortable with it now has a reason to call instead of a reason to hesitate.

Ranges. “Most bathroom refits run between $8,000 and $15,000 depending on tile, fixtures, and plumbing changes.” Ranges suit work where the variables are real but bounded. The width of the range is itself information. A tight range signals a predictable service. A wide one signals that scope matters, and it invites the right conversation.

Example jobs. Describe a typical project and what it cost. “A recent detached two-storey exterior repaint, prep included, came to about $6,500.” If you use real examples, they must actually be real. If you’re illustrating, say so plainly: “a typical job like this lands around…” Made-up numbers presented as track record will eventually meet a customer who checks.

Package tiers. Bundle your service into two or three named options at set prices, with a note that custom work is quoted separately. Tiers work beautifully for anything with a repeatable core. Photographers, groomers, bookkeepers, and yes, web developers all use this shape for a reason. The packages anchor expectations even for the custom work around them.

The “most customers spend” framing. A sentence like “most of our clients spend between X and Y in their first year” gives budget shape without quoting any single job. To be clear about what I’m recommending: this is a framing device, and the numbers you put in it have to be true for your business. Don’t invent a range that sounds good. Pull it from your actual invoices. If you can’t, use one of the other formats until you can.

None of these lock you into anything. “From $149” doesn’t stop you charging $400 for the complicated case. It just stops the $80 shopper from booking your afternoon.

When a full price list is the right call

Some businesses should go all the way and publish everything, and the test is simple: is the scope fixed?

If a customer buys a defined thing, at a defined size, with defined inclusions, hiding the price accomplishes nothing except adding a phone call to the purchase. Oil changes. Passport photos. A 60-minute massage. Standard-size duct cleaning. A dog nail trim. When the service is the same for nearly everyone who buys it, the price can and should sit right next to the description, the way it would on a shelf.

Fixed-scope businesses that hide prices are usually doing it out of habit, or because the owner vaguely feels that “call for pricing” sounds more professional. It doesn’t. For a fixed-scope service it mostly sounds like friction. The customer knows the service is standard. They know you know. Making them phone you to hear a number they suspect you could have just typed reads as a small waste of their time, and small wastes of time are what people remember when choosing between near-identical providers.

One practical note if you do publish a full list: date it or maintain it. A price list that’s three years stale creates the exact awkward conversation you were trying to avoid, except now it starts with the customer feeling misled.

When you genuinely can’t, publish the process instead

Custom work is different, and I won’t pretend otherwise. A design-build renovation, a bespoke steel fabrication job, an estate with four properties and a family dispute. Nobody can put an accurate number on those from a web page, and pretending you can would be its own kind of misleading.

But “I can’t publish a price” is never the same as “I have nothing to publish.” When the number is unknowable, the process is still completely knowable, and the process is what an anxious visitor actually needs. Something like: “Call or email us. We’ll ask a few questions, usually ten minutes. For larger jobs we’ll come see the site. Either way you’ll have a written quote within two business days, and it costs nothing to get one.”

Read that back as a nervous customer. Every clause kills a specific worry. The ten minutes kills “this will drag me into a sales pit.” The written quote kills “they’ll spring a number on me while I’m on the spot.” The two business days kills “I’ll be chasing them for weeks.” The costs-nothing kills the quiet fear that even asking starts a meter running. A visitor who knows exactly what happens next will act. A visitor staring at a bare contact form with no idea what submitting it triggers very often won’t.

Even for custom work, you can usually add a floor. “Projects start at $20,000” is publishable by almost any custom shop, and it does the same sorting work a full price does.

Price talk is quality talk

A worry I hear from good operators: “If I lead with price, people will think I compete on price.” I get it, and the concern points at something real, but the conclusion is backwards.

Publishing a price doesn’t say you’re cheap. The number says whatever the number says. A Toronto landscaping company that publishes “full garden redesigns from $12,000” is not positioning itself as a bargain. It’s positioning itself as a company that knows what its work costs and expects clients who can meet it. That’s premium behaviour. Luxury brands print prices constantly. What they don’t do is apologize for them.

The goal was never to be the cheapest option on the search results page. The goal is to be the obvious choice for the customer you’re actually built to serve, and price is one of the fastest ways to signal who that is. If your work costs more because you do it properly, the price plus one plain paragraph explaining why is stronger positioning than silence will ever be. Silence lets the visitor assume you’re expensive without letting them hear the reason.

Published prices are a filter, and the filter works for you

Everything above converges on one idea I want to state directly, because it’s the real payoff. A published price is a qualifying tool. It interviews your leads before you do.

Think about what your phone time is worth. Every call you take with someone whose budget is a third of your price costs you the call, the follow-up, sometimes a quote, and a little morale. Multiply by a year. Now compare that to the “cost” of the published number: some people who see it don’t contact you. But look closely at who those people are. Overwhelmingly, they’re the ones who would have taken the call and then not bought. You didn’t lose customers. You lost unpaid conversations.

The leads that do come through a published price arrive different. They open with “I saw your pricing and I’d like to book” instead of “so, ballpark, what does something like this cost?” The conversation starts three steps further along. Objections you used to handle live have already been handled by the page, at midnight, while you were asleep. That’s the actual job of a website for a service business, and a pricing section is one of the hardest-working parts of it.

What I do on my own site

I try not to recommend anything I won’t do myself, so here’s my own setup, in public, where it’s always been.

My standard website build is $1,000. New clients currently pay $500. The first year of hosting, updates, and support is included, and after that it’s $250 a year if you want to stay with me. All of it is written out on my offer page, with what’s included, before anyone has to email me anything.

The effect on my inbox is exactly what this whole post predicts. People who write to me have already seen the numbers. Nobody’s circling, nobody’s fishing for a ballpark, and I have never once had the awkward call where a price lands like a dropped plate. The occasional person for whom $500 is out of reach simply doesn’t write, and that’s the system working as designed. I’d rather they keep that money than spend an hour of both our time discovering the mismatch by phone. Meanwhile the people who do reach out tend to skip straight to the useful questions: what pages, what timeline, can you work with the photos I have.

Could a competitor undercut me? Sure. Someone on a freelance marketplace will always be cheaper than me, published price or not. I’m fine with that, because the person choosing purely on lowest number was never my customer, and my pricing page saves us both the trouble of finding that out slowly.

Where to start this week

If your site currently says nothing about money, you don’t need a grand strategy. Pick the smallest true thing you can publish and put it on your services page today. That might be a starting price for your most common job. It might be a range pulled from last year’s invoices. It might be three sentences describing exactly how someone gets a quote and how fast. Any of those beats the current silence, and you can refine from there once you see how enquiries change.

Then read your new pricing section out loud and ask one question: would a stranger at midnight, tired and comparing tabs, know whether you’re in their budget and what to do next? If yes, you’ve fixed one of the most common leaks a local business website has.

And if you’d like a site built by someone who practices this, mine is the offer described above: $500 for new clients right now, first year of hosting and support included, $250 a year after that, everything spelled out at hughmcnamara.com/new-clients. Have a read, and if the numbers suit you, tell me about your business.