Pricing friction is one of the top reasons visitors leave SaaS and software product pages without converting. When a pricing page shows only "Contact us for pricing" for a product that is clearly not enterprise-sales (a solo developer tool, a consumer SaaS, an indie product), it signals one of three things: the price is high enough to be embarrassing, the product isn't ready, or the team is following a playbook that doesn't fit their product. Visitors who cannot find a price go find a competitor who shows theirs. Transparent pricing — even a range, even "starting at" — converts better than gated pricing for non-enterprise products. The tier contents matter too: a pricing page with three unnamed tiers and no description of what each includes requires a sales call to understand, which is an unacceptable friction for any self-serve product.
High because a missing or opaque pricing page removes the information visitors need to make a purchase decision — they leave to find a competitor whose pricing is visible.
Your pricing page needs four things, at minimum:
1. At least one concrete price (a number, a range, or "starting at X")
2. 3-5 bullets per tier listing what's included
3. A clear label if a free tier or trial exists
4. A primary CTA per tier ("Start free", "Get Pro", "Talk to sales")
If no pricing page exists, create one at app/pricing/page.tsx. If the pricing page exists but shows no prices, the minimum viable fix is:
// app/pricing/page.tsx — minimum viable pricing section
<PricingCard
name="Pro"
price="$29/month"
features={[
'Unlimited audit runs',
'Score history and trend tracking',
'Benchmark comparisons',
'Team sharing',
]}
cta={{ label: 'Start free trial', href: '/signup' }}
/>
For the "contact us only" pattern: show a starting price. "From $X/month — contact us for volume pricing" is transparent without giving away enterprise pricing. Only use "contact us only" if you genuinely cannot price without scoping.
ID: marketing-content-quality.content-completeness.pricing-clarity
Severity: high
What to look for: Count all relevant instances and enumerate each. Locate the pricing page or pricing section. Verify that: (1) at least one price point is displayed (not "Contact us for pricing" as the only option, unless the product explicitly targets enterprise-only), (2) the contents of each tier are listed (what you get), (3) there is a clear distinction between tiers if multiple tiers exist, and (4) any free tier or trial is clearly labeled. If pricing is gated behind a sales call for a product that is clearly not enterprise-only (e.g., a solo developer tool or consumer SaaS), flag it.
Pass criteria: Pricing information is displayed with at least one concrete price, each tier's contents are listed, and the differences between tiers are clear. At least 1 implementation must be verified.
Fail criteria: No pricing page or section exists, or pricing page exists but shows no prices ("Contact us"), or pricing tiers exist but the contents of each tier are not listed.
Skip (N/A) when: The project is clearly an internal tool, a library, or an API without a consumer pricing model. Signal: no monetization indicators in dependencies (no Stripe, no payment processor), and project type is internal-tool or library.
Detail on fail: Describe specifically what is missing. Example: "Pricing page exists but shows only 'Contact us for pricing' with no price ranges" or "Pricing page has three tier names ('Starter', 'Pro', 'Enterprise') but no description of what each tier includes" or "No pricing page or section found anywhere on the site"
Remediation: Hiding pricing creates friction and signals uncertainty. Visitors who can't find pricing leave to find a competitor who shows it.
At minimum, your pricing page should include:
For consumer SaaS: show the price. For enterprise: show a starting price. Only show "Contact us only" if you genuinely cannot price without scoping the deal.
For a deeper analysis of pricing page conversion, the Marketing Site Conversion Optimization Audit covers pricing presentation structure.
Review the configuration in src/ or app/ directory for implementation patterns.