Ask any marketing conference whether B2B companies should publish pricing and you get one answer. Yes. Be transparent. Buyers demand it.

Ask any founder who has actually done it and the answers are mixed, because the honest version has trade-offs that the conference answer skips.

Both sides of this argument are usually made badly. The transparency side pretends there is no cost. The privacy side pretends buyers do not care. Here is the version with the trade-offs left in.

What hiding pricing actually costs you

The cost is invisible, which is why it gets ignored.

Someone is researching a purchase. They land on your site, read enough to think you might fit, and go looking for what it costs. They find "contact us for a custom quote." They now have to decide whether to spend a sales call to learn a number, on a vendor they are not yet sure about, when two competitors published theirs.

Many of them leave. You never see them. There is no line in your analytics called "people who assumed you were too expensive." The pipeline you did not get does not show up anywhere, so the decision to hide pricing always looks free.

There is a second cost that is newer. When a buyer asks an AI assistant what something costs in your category, the model needs a source with a figure in it. A page that says pricing is customised gives it nothing. So it cites a competitor who published, a review site, or a forum thread where someone guessed. Those are the sources shaping the buyer's expectations, and you control none of them. This is the same dynamic covered in how pricing pages convert, now with an extra channel attached.

What publishing pricing actually costs you

Three real risks. Not the imagined ones.

Anchoring by competitors. A competitor who can see your number builds their pitch around undercutting it. This matters in markets where price is the main differentiator and matters much less where the work varies enough that a headline figure decides nothing. Worth noting: in most markets competitors already know roughly what you charge, from lost deals and prospects who share quotes.

Losing the ability to price by buyer. Some businesses genuinely charge different amounts for the same work depending on the buyer's size and budget. A published price ends that. If that flexibility is load-bearing in your model, this is a real cost, not a hypothetical one.

Anchoring yourself too low. The self-inflicted one. A company publishes "starting at $2,000" because someone once bought a $2,000 engagement, and then spends every sales call explaining why the real number is $8,000. The starting-at figure did not attract better buyers. It attracted people whose budget is $2,000.

Dimension Publish Pricing Hide Pricing (Contact Us)
Buyers who leave unseen Fewer, the price question is answered upfront Many, no record they were ever on the site
AI search visibility on cost questions Your page becomes the citable source AI cites a competitor, review site, or forum guess instead
Competitor anchoring risk Real, competitors can undercut a visible number Lower, but competitors usually know your price anyway
Ability to price by buyer Lost, one published range applies to everyone Preserved, quotes can vary by buyer
Best for Defined products where most customers pay a similar amount Custom-scoped work where price varies by a factor of five or more

The question that decides it

Strip away the philosophy. One question decides this.

Is your price a number, or a range determined by scope?

If most customers pay something close to the same amount for something close to the same thing, you have a number. Publish it. Hiding a number you could state is friction with no upside.

If the honest answer genuinely ranges by a factor of five depending on what the client needs, you do not have a number, and publishing a single figure misleads people in both directions. But that does not mean publish nothing. It means publish the range.

What to publish when you cannot publish a number

Five things, and together they answer the buyer's real question.

  1. The actual range. Both ends. "Most engagements run between X and Y per month." Not "starting at X," which only communicates the floor and sets a false anchor.
  2. What moves it. The specific drivers: number of locations, team size, whether you are rebuilding or maintaining, how many stakeholders review. This lets a buyer place themselves.
  3. A worked example. One or two real engagement shapes described plainly. "A 30-person manufacturer with one product line and no internal marketing person: roughly this, over this long." Concrete beats abstract every time.
  4. What is always included. So the buyer knows what the range buys.
  5. What is never included. The exclusions that surprise people later. Publishing these builds more trust than the price itself does.

That page answers the buyer's actual question, which was never "what is the exact price." It was "is this in my universe, and should I have a conversation?"

How to structure a pricing page that qualifies

Use the page to filter, not just to inform.

State plainly who the offering is not for. "If you need a full-time person on site, this is not the right fit" removes a conversation you did not want. Buyers respect it, and the ones who self-select out were costing your sales team hours.

Then give the range, the drivers, and a next step that matches where the buyer is. Someone who has read the range and thinks it fits wants to talk about scope. Someone who is early wants a way to keep researching. One button for both loses the second person.

Expect raw lead volume to drop. That is the mechanism working. The leads removed were people who would have discovered the price on the first call and disengaged. Watch qualified opportunities and close rate instead. If leads fall 30 percent, qualified opportunities hold flat, and close rate rises, the change did what it was supposed to do. This is the same logic as optimising for qualified conversion rather than form fills.

Testing the change without betting the business

Do not roll it out everywhere at once and do not judge it in three weeks.

Publish to one page. Keep the old version. Set a review window of at least one full sales cycle, so 90 days for most B2B businesses with a 60 to 90 day cycle. Track qualified opportunities, close rate, and average deal size next to raw leads.

The trap is reverting early. Lead volume drops in week two, someone panics, and the change is reversed before a single deal has had time to close under the new setup. You have then run an experiment that measured nothing and concluded something.

The takeaway

The real question is whether you have a number or a range.

If you have a number, publish it. If you have a range, publish the range, the drivers, and a worked example. The only genuinely bad option is the one most B2B sites have chosen, which is to say nothing and let the buyer either guess or ask a competitor's page instead.

Fewer, better conversations beat more conversations. Most sales teams already know this. The website is usually the last place it gets applied.