Most arguments about a website pricing page small business owners have with their marketers come down to whether to publish numbers at all. That framing misses what we found on a site we audited earlier this year. The business had published its numbers. The numbers were fair. The page was still costing them work, and it took a while to understand why.
We describe it anonymously, as we do with every teardown. A Tampa Bay area service contractor, priced competitively, with a pricing page they had been talked into by a previous agency and had quietly come to dread.
What the page said
It opened with a table. Down the left, a list of services. Across the top, three columns. In the cells, prices beginning with the word "from," and beneath the table, eleven lines of conditions in small grey text.
Every number on it was accurate. The problem was that the page had been written defensively, by someone anticipating an argument. Each price was hedged, each hedge was footnoted, and the cumulative message a reader took away was not "this is affordable" but "this will cost more than it says, and they have already prepared their explanations."
The owner's own summary, when we asked what the page was for, was telling. They said it was there so people would stop calling to ask about price. That is a page built to prevent a conversation, and it worked. It prevented the conversation and the job with it.
Why "from" prices backfire
"From $189" is doing something specific to a reader, and it is not what the writer intends. The writer means this is where prices start. The reader hears this is the smallest number we could legally print.
Without a top end, a reader has no way to bound their exposure, so they supply their own ceiling, and the ceiling anxious people supply is always higher than reality. A price floor with no ceiling generates more worry than no price at all, because it confirms there is a number while refusing to say how large it might get.
The fix on this site was to publish ranges rather than floors, and to say plainly what moves a job from the bottom of a range to the top. Age of the system. Access. Whether permits are involved. Those are the actual variables, the owner knew them cold, and writing them down converted an evasion into an explanation.
The fine print was the real damage
Eleven lines of grey conditions under a price table reads as a business bracing for a dispute. Some of those conditions were genuinely important. Most were defensive clutter accumulated after individual bad experiences, each added to prevent one specific argument from recurring.
Small grey text is also where dated sites fail worst on a phone. This site had no viewport meta tag, putting it with the 10 of 45 sites in our audit corpus that lack one, so the whole page rendered as a shrunk desktop layout. The conditions were effectively unreadable, which meant the page delivered its defensive tone without delivering any of the information the conditions contained.
We cut eleven lines to three, moved them out of grey into normal text, and folded the rest into the range explanations where they actually helped. Nothing was hidden. The same facts read completely differently once they stopped looking like fine print.
What we changed
The rebuild of the page was mostly restructuring, and it took an afternoon rather than a project.
- Ranges with both ends, replacing floors with no ceiling
- A plain explanation of what moves a price within its range
- The diagnostic fee stated up front, including whether it is credited toward the work
- Three genuine conditions in readable text, instead of eleven in grey
- A tappable phone number beside the table rather than at the bottom of the page
That last item mattered more than any of the writing. The number on the original page was plain text with no click-to-call link, which puts this site with the 20 of 45 in our corpus that fail the same test. It is the costliest defect we find and the one we would fix first anywhere. On a pricing page it is especially wasteful, because a visitor reading pricing is further along than almost any other visitor on the site.
The question the page should answer
The useful reframe, and the one we now start from, is that a pricing page is not there to state prices. It is there to answer a different question: am I about to be taken advantage of?
That question is answered by evidence of straightforwardness rather than by low numbers. A range with both ends. An honest account of what drives cost. A diagnostic fee named before it is charged. A clear statement of what is not included. Customers accept high prices routinely. What they will not accept is the feeling that they cannot find out what something costs.
We hold ourselves to this. Our own prices are published: Skim Refresh at $2,500 for up to five pages, Fresh Pour at $5,500 for 10 to 15, Whole Carton from $12,000 for e-commerce, booking, or custom work, and care plans at $3.95, $79, $189, and $399 a month. The Whole Carton line is a floor rather than a range, which is the exact thing we just criticized. We say so, and we say why: those projects vary too much to bound honestly. Naming the limitation is better than pretending it is not there.
See the direction before the rebuild
SiteMilk offers a free before-and-after homepage mockup so you can judge the modernization direction before committing anything. Start in the homepage contact section or email milkman@sitemilk.com.
Same brand. Modern build. Fresh pour.
Frequently asked questions
Should a small business publish prices on its website?
Usually yes, but published badly is worse than not published. A price floor with no ceiling and a wall of conditions creates more anxiety than silence. Ranges with both ends, plus an honest explanation of what moves the number, is the version that helps.
What is wrong with "from" pricing?
It gives a reader a floor with no ceiling, so they invent their own ceiling, and it is always higher than reality. It also reads as the smallest number you could defensibly print, which undercuts trust in every other number on the page.
How much detail should the fine print have?
Keep the conditions that genuinely change what a customer pays and write them in normal, readable text. Move the rest into the explanation of your ranges. A block of small grey conditions signals a business expecting an argument, which is not the impression a pricing page should leave.