River
Y CombinatorBacked by Y Combinator

Marketing & GrowthFree

Pricing Page Analysis for Real Buyers

Each real buyer priced on your page and your competitors', with every missing number named and ranked by how many buyers it blocks.

Context to provide

In an illustrative run, a fictional email platform called Larksmoor tried to price three named buyers on six pricing pages, using only what each page published. Six of the eighteen cells came out, which is 33.3%. Eight more needed the documentation, the terms or a separate price list. Four could not be priced at any published source. The largest of the three buyers, a four-seat account with 180,000 contacts, could not be priced from a single page in the set, including Larksmoor's own.

Each failure is recorded as a named variable rather than as a note about clarity, and the variables get ranked by how many cells they block. Thirty-two blocking incidences landed across twelve blocked cells, 2.7 apiece. Top of the list was what counts as a billable contact, at nine cells. Second was what happens when a tier is crossed mid-period, at seven. Neither is a design problem, and neither is fixed by a redesign.

Written for whoever owns the pricing page and keeps being told it needs to be clearer. Pair it with the value proposition rewrite when the claims above the price are the problem, and the competitor teardown when you need their pricing history rather than today's page. The funnel decomposition sizes a page-level finding against the rest of the funnel, and the positioning canvas is the place to go when the packaging itself is what is wrong.

Where the price actually lives

The word contact does not mean the same thing at two vendors in one category. HubSpot bills for marketing contacts, and its billing article says these count toward your contact tier and affect the cost of the subscription, while contacts you do not market to are free. Mailchimp counts the opposite way: its pricing article says subscribed, unsubscribed and non-subscribed contacts are all included in your contact count. A comparison table with one price column cannot survive that.

The second blocker is what a crossed tier costs. HubSpot's billing article says exceeding your tier by even one marketing contact upgrades you, and that setting a contact back to non-marketing only takes effect on a monthly update date. Mailchimp's pricing article says going past the contact limit mid-cycle produces an additional charge rather than an interruption. Both rules are published. Neither sits on a pricing page, and both change the number a buyer is trying to compute.

Then test the page against its own traffic. In the illustrative Larksmoor run, the pricing page took 22,140 sessions in the quarter, and 9,144 of them, 41.3%, came from accounts above the largest tier the page prints. Those sessions started a trial at 1.49% against 7.74% for sessions the page could price, a gap of 5.2 times, and contact-sales requests only lift that group to 4.64%. At half the priceable rate it would be 218 more trials a quarter.

How it works

  1. Fix the buyers

    Two or three real accounts, with the seat counts and volumes that decide their price.

  2. Price every page

    Each buyer priced on each page in the set, from published figures only.

  3. Name the blockers

    Every variable that forced a trip off the page, ranked by the cells it blocks.

  4. Test against traffic

    Your pricing sessions split by whether the page could price them, and what each group did.

What you get

  • Each named buyer priced on every page in the set, using only what is published.
  • A quotable share per vendor, splitting page-only, documentation-only and not published anywhere.
  • Every blocking variable named and ranked by how many buyer-and-vendor cells it blocks.
  • The billing unit each competitor uses, quoted from their own documentation with a capture date.
  • Pricing page sessions split by whether the page could state their price, with next-step rates.
  • A Sheet of the price grid, a Doc of the specific fixes, and the recommendation slide.

Common questions

Isn't this just a competitor price comparison?

A comparison puts one price per vendor in a column, which only works if they all charge for the same thing. In the illustrative Larksmoor set the six vendors billed per seat, per marketing contact, per stored contact, per email sent, per usage credit and per revenue band. The only comparable cell is what one specific buyer would pay.

What if our prices genuinely depend on a conversation?

Then the review says which buyers that applies to and what it costs. In the illustrative run, the unpriceable segment was 41.3% of pricing page traffic and reached a next step at 4.64% against 7.74%. Requiring a conversation is a defensible choice. Requiring one from four fifths of your revenue base without knowing that number is not.

Do I need buyer profiles to start?

No. Without them, River builds three buyers from your own tier boundaries: one inside your cheapest tier, one at the edge of your largest printed band and one beyond it, and says so. Real accounts are better, because the figures that band a price, such as seats, stored volume, contract length and security needs, come from customers rather than guesses.

Competitor pricing changes often. Does the grid go stale?

Every cell carries the page it came from and the date it was read, so a stale cell is visible rather than silently wrong. The blockers age far more slowly than the numbers do. A vendor that does not define its billing unit today usually still does not define it two quarters later.

What if a competitor publishes no pricing at all?

That is a result, recorded as not published anywhere rather than skipped. Four of the eighteen cells in the illustrative run landed there. It matters because a buyer comparing three vendors who can all be priced against two who cannot is running a different evaluation than the one you think you are in.

Does it always recommend publishing prices?

No. It recommends publishing the variables, which is a smaller thing. A defined billable unit and a stated rule for crossing a tier let a visitor compute a range without you printing an enterprise price. On this account those two sentences were the entire first recommendation.

What actually gets delivered?

A Sheet with the price grid, one cell per buyer and vendor, each carrying the source page, the read date and the blocking variables. A Doc with the ranked blockers, the specific fixes and the traffic split behind them. A slide for whoever decides. Message-level copy stays in the page copy rewrite.

Pricing Page Analysis for Real Buyers

Describe what you need, add any files you have, and your workspace opens with the work already underway.