What to track on a pricing page (and what is just noise)
Pricing pages produce the highest-intent traffic on a SaaS site. Here are the six events worth instrumenting, the ones that create dashboards nobody reads, and how to read the result.
Maya Chen
Head of growth at Beacon
Pricing pages are where intent becomes visible. Someone comparing plans has already decided the category is relevant; the only open question is whether your product and price fit. That makes pricing one of the few pages where a custom event is worth more than another pageview.
It is also the easiest page to over-instrument. Teams ship a dozen events, none of them with a clear owner, and end up with a dashboard that answers nothing. The filter below is simple: track a thing only if a decision changes when the number moves.
The six events that earn their place
- pricing_viewed — one pageview is enough, but name the entry point so you know whether people arrive from the nav, a blog post or a paid campaign.
- billing_toggle_changed — monthly versus annual. Annual intent is the strongest self-serve signal you have.
- plan_selected — which tier they clicked. A cluster of clicks on Scale usually means your growth tier is mispriced, not that Scale is popular.
- faq_opened — which objection they needed to clear. Billing, security and migration questions predict churn better than any pageview.
- checkout_started — the last measurable step before a payment provider takes over.
- contact_sales_clicked — for enterprise intent, this is the conversion, not a detour.
What is usually noise
- Scroll depth on a page that fits in two screens. It measures nothing and always reads 90%.
- Every hover and tooltip. These produce volume without a decision attached.
- Mouse movement or heatmap events sent to your analytics backend. Use a dedicated tool, not your metrics pipeline.
- A separate event for each plan card when plan_selected plus a property already carries the answer.
A useful test before you add an event: write the sentence you expect to say when the number changes. If the sentence is "huh, interesting", it does not belong in the pipeline yet.
Attach the campaign, not just the click
A pricing event is only as useful as the context attached to it. Because Beacon keeps first touch in the session, an event fired on the pricing page automatically carries the campaign that brought the visitor in:
beacon.event('plan_selected', {
plan: 'growth',
billing: 'annual',
})
// stored alongside the event:
// source: 'linkedin', campaign: 'launch-pricing',
// landing: '/blog/first-touch-vs-last-touch-attribution'That single property turns a vague funnel into an answerable question: which campaigns produce people who compare plans rather than bounce off the headline?
Reading the result honestly
Expect pricing traffic to be a small share of visits and a large share of revenue. If pricing views are ten percent of traffic and checkout starts are a third of pricing views, you are in a healthy place. If pricing views are high and checkout starts are near zero, the problem is price, plan framing or trust — three things another dashboard will not fix.
Finally, always segment pricing events by source before drawing conclusions. Paid traffic and organic search convert at different rates on the same page, and averaging them produces a number that describes neither.
See this working on your own site
One script tag, no cookies, no consent banner. Free up to 10,000 visits a month, and you can see which campaign produced each lead in the same dashboard.
Start free