If you've shopped for a digital agency, you've noticed it: nobody posts prices. The button says "request a quote." The page says "every project is unique." The discovery call is forty minutes before anyone says a number, and the number — when it finally arrives — is meaningfully higher than what you expected. This isn't an accident. It's the standard agency operating model, and there are real reasons for it. There are also a few reasons it's starting to break.
The short version: hiding prices lets the agency charge each client what that specific client can pay. Publishing prices forces the agency to be honest about scope and to lose deals it could otherwise have won. Both directions are defensible. Which one is honest depends on what the agency is actually selling.
The standard case for hiding prices
Three real arguments. First: scope variance. A website for a single-location dentist genuinely is different work from a website for a multi-location franchise. If the agency posts "from $5,000," the dentist hears "$5,000" and the franchise hears "$5,000" — neither is right. Hiding prices lets the proposal match the brief. Second: competitive intelligence. If your price list is on your homepage, every competitor undercuts it. Third: anchoring. A skilled salesperson in a discovery call can shift a client's expectation. A static price page can't.
All three are real. None of them are inherently dishonest. Plenty of legitimate agencies hide prices for these reasons and deliver good work afterwards.
What price-hiding actually optimises for
The honest part: variable pricing maximises agency revenue per client. The client who would have paid $4,000 gets quoted $4,000. The client who would have paid $40,000 gets quoted $40,000. The same deliverable produces ten times the revenue depending on who's signing. This is good business. It is also why most agency clients overpay relative to what the work actually costs to do.
The less-honest part: hidden pricing also lets the proposal include things the client doesn't know they don't need. Account-management overhead, project-management overhead, sales commission, monthly retainer add-ons — these are the line items that disappear when the brief is published with a fixed price. Hidden pricing isn't inherently a scam. But it does make scope creep economically rational for the agency.
When is it honest to hide prices, and when isn't it?
It's honest when the work genuinely varies tenfold by brief — enterprise SaaS engagements, multi-country brand rebuilds, anything custom enough that a published number would be misleading. It's not honest when the work is roughly standard and the agency just doesn't want to be compared. A five-page small-business website is not a custom enterprise engagement. There's a defensible price range for one, and an agency that won't publish that range is choosing to keep the variance for itself.
The test: ask a non-customer what a typical small-business website costs at that agency. If they can't get a ballpark within five minutes of looking, the hidden pricing isn't protecting scope variance. It's protecting margin.
Why Mule publishes everything
Three reasons. First: most clients won't ever ask. They'll just bounce. A small business owner doesn't have time for a forty-minute discovery call about pricing — they have a business to run. If we want their work, we have to be findable on the search query "how much does a small business website cost." That requires a number on the page. Second: published prices keep us honest about scope. When the Starter Presence tier is $799 in writing, we can't quietly expand it to $1,500 worth of work and call it the same tier. Third: published prices filter inquiries. People who want a custom $50,000 engagement self-select out, which is better for both sides.
The full pricing page is at /pricing. The dedicated breakdowns are at /cheap-website-design and /cheap-seo-services. If the published numbers are higher than your budget, that's information; if they're lower than your last quote, that's also information. Either way it beats forty minutes on a sales call.
