# Pricing page is clear and complete

- **Pattern:** `ab-001735` (`marketing-content-quality.content-completeness.pricing-clarity`)
- **Severity:** high
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001735
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001735)

## Why it matters

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.

## Severity rationale

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.

## Remediation

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:

```tsx
// 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.

## Detection

- **ID:** `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:
  - A price (even a range or "starting at" is better than nothing)
  - 3-5 bullets per tier explaining what's included
  - A clear free trial or free tier if one exists
  - A primary CTA per tier ("Start free", "Get Pro", "Talk to sales")

  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.

Taxons: content-integrity, user-experience

HTML version: https://auditbuffet.com/patterns/ab-001735
