A pricing page is an interface contract. It tells a caller what they can expect back and under what conditions. "Contact us for pricing" is the equivalent of returning a 500 with an empty body: technically a response, and useless to whoever asked.
That is not a style objection. Gartner surveyed 646 business buyers between August and September 2025 and found 67 percent prefer a buying experience with no sales representative in it (sourced from Gartner). Those people are assembling a shortlist without speaking to anyone, and a page that refuses to answer the question is silently dropped from the list. You never see that loss in your funnel, because it never entered it.
So before anyone books a demo, your pricing page has three jobs.
Question one: Who is each tier for?
Most pricing pages label tiers by size (Starter, Growth, Enterprise) and then describe them by feature count. That forces the reader to reverse engineer which column is theirs from a list of checkmarks, which is work, and work is where people leave.
Name the buyer instead, in their own words. "For a team of two to ten running one workspace." "For teams that need single sign-on and an audit trail." A reader should be able to self-select in about four seconds, and the checkmark grid should confirm that choice rather than be the way they make it.
Question two: What actually changes between tiers?
This is where most pages quietly mislead. A feature matrix with thirty rows and four columns hides the two or three differences that genuinely matter, usually seat count, a usage limit, and one gating feature.
Lead with those. One short line per tier: what you get more of, and the one capability the tier below does not have. Then, put the full matrix below for the person who wants it.
Be especially direct about usage limits and overage. A buyer who cannot work out from the page what happens when they exceed a limit assumes the worst, and a buyer who discovers the answer in month three churns with a story about it.
Question three: What happens after I click?
"Book a demo" is not a description of an outcome. It is a description of a form.
Say what the click actually leads to: a 30-minute call with a named role, a guided setup, a sandbox, an emailed quote within a day. Buyers hesitate less when they know the size of the commitment they are making, and the commitment they fear is not the price, it is being pursued.
How to publish a range without committing to a number
The usual objection to published pricing is that the product is genuinely variable and a single number would be wrong. Fair. A number is not what is being asked for. An order of magnitude is.
Three patterns that work without boxing you in:
Publish the low and middle tiers, quote the top one. Most buyers self-select into the first two anyway. "Custom" is credible at the enterprise tier when the two tiers below it carry real prices. It is not credible when it is the only option on the page.
Publish a starting-from figure with the variable named. "From $450 a month, scaling with seats." The reader can now do their own arithmetic and decide whether to continue.
Publish a worked example. "A ten-person team on the Growth plan with two integrations pays about $X." A specific example is more useful than a range and commits you to less than a price list.
Any of those beats silence, because silence is read as expensive, and expensive buyers who would have been fine with the price never find out.
Currency and tax, if you are selling from Canada
Pick one currency and hold it. Switching between Canadian and United States dollars across the site, the invoice and the checkout is the fastest way to make a buyer distrust the number.
If your buyers are mostly Canadian, price in Canadian dollars and say so on the page. If most of your revenue is in United States dollars, price in those and label them explicitly as USD, because an unlabelled dollar sign is read as local and the difference is not small.
On tax, one plain line is enough: whether the figures exclude tax, and that applicable Canadian sales tax is added at checkout. Ambiguity here shows up as failed checkouts and support tickets, not as a pricing debate.
Annual versus monthly, without the dark patterns
Show both. Default to whichever you actually want to sell, and label the annual saving honestly as a percentage or a dollar figure rather than a vague "save big."
Two things to avoid. Do not display the annual price as a monthly figure without saying it is billed annually, because that is the single most complained-about pattern in software pricing. And do not use a countdown timer or a fake scarcity badge on a business software pricing page. Your buyer has seen those before, and the message it sends is about you rather than about the offer.
Where social proof belongs, and where it does not
Logos and quotes belong near the tier they apply to, or below the pricing table. They do not belong above it, where they delay the answer the reader came for.
And if you do not have logos yet, leave the space empty rather than filling it with stock badges, invented testimonials, or "as seen in" placeholders. An early-stage page with no social proof reads as early-stage. A page with fabricated social proof reads as dishonest, and in Canada, a testimonial you cannot substantiate is a Competition Act problem rather than a design choice.
What the click sets off, and why CASL is in this conversation
The demo form is usually wired to a sequence: a confirmation, a reminder, then a nurture series if the call does not get booked. Every one of those is a commercial electronic message under Canada's Anti-Spam Legislation once it reaches a Canadian address, and that means three requirements apply. Consent, express or implied. Identification information for you and anyone the message is sent on behalf of. And a working unsubscribe mechanism that must remain valid for at least 60 days after the message is sent, with requests processed without delay and no later than 10 business days (sourced from the CRTC).
The practical trap for a SaaS business is treating a demo request as blanket consent for a marketing sequence. Filling in a form to request a call is consent to have that call arranged. Whether it carries further, and how far, is exactly the kind of question worth settling before the sequence is built rather than after a complaint. This is general marketing guidance and not legal advice, so confirm anything consequential with counsel.
What to test first when traffic is low
With a few hundred pricing page visits a month, split testing will not reach significance before the quarter ends. Test sequentially and prefer changes big enough to see without statistics.
In order: publish a price or a range where there was none, rewrite the tier descriptions to name the buyer, then make the post-click outcome explicit. Those three are structural, and structural changes move numbers in ways that copy tweaks do not.
If the trial signup flow is the other half of your funnel, what makes a trial signup page convert covers that page rather than this one. And if you are not yet sure which page is the actual bottleneck, running the marketing audit first is the cheaper option than rebuilding either page.
When the page itself is the problem rather than the pricing behind it, what a build or a landing page here actually includes is written out.
Open your own pricing page and read it as someone who has never heard of you. How long does it take to find out whether you are affordable?

