Turn PostHog event and recording counts into real cost
PostHog meters Product Analytics by the event and Session Replay by the recording, and the spend it totals for you stops at PostHog, in PostHog's own console. Here's how the billing works, and how to fold PostHog into one running cost and forecast across your whole stack while there's still time to act.
PostHog charges for understanding your own product. Every pageview it captures, every click it autocaptures, every session it records draws down an allowance, and once you pass that allowance the volume starts to cost. It's a fair way to bill for a tool that scales with how much you ship. The catch isn't PostHog's meter — it's that PostHog prices PostHog, in its own console, while every other tool you run prices itself somewhere else. So the question that matters as the month runs — what all of it costs together, PostHog folded in — has no single place that answers it until the invoices land.
PostHog already keeps the counts underneath that, product by product and day by day. The work left is pricing them into a running cost and a forecast before the month closes on you.

How does PostHog bill for usage?
PostHog’s pricing is usage-based, and the most important thing to know about it is that each product is metered separately, with its own free monthly allowance before anything is charged. You don’t buy a seat or a flat plan that bundles everything; you pay for what each product ingests or stores, past a generous free tier, and you can set a spend limit on each one. The two products that most often drive a developer’s bill — and the two this guide is about — are Product Analytics and Session Replay.
Product Analytics
is billed by the event. Every event your project ingests counts —
pageviews, the clicks and form interactions PostHog autocaptures, the
identify calls that attach a person to a session, and any custom events
you send. The first 1 million events each month are free; past that,
events are metered by volume. Whether you cross that line depends on your
traffic and how many events each visit fires — PostHog
documents how to estimate your monthly volume
if you want to project it ahead of time. One wrinkle matters for reading your bill: events
tied to an identified person carry an extra charge on top of the base
rate — they show up on your invoice as Person Profiles — so two
projects ingesting the same number of events can bill differently
depending on how many of those events are identified.
Session Replay is billed by the recording, not by storage size. Each session your project records counts as one unit against a separate free monthly allowance — the first 5,000 web recordings each month are free, with mobile session replay on its own lower allowance — and recordings past it are metered. Because a single noisy page or an over-broad recording rule can multiply how many sessions you capture, replay volume can climb quickly and independently of your event volume — which is why PostHog gives you controls over which sessions get recorded.
Those two aren’t everything PostHog meters. It also bills Feature Flags and Experiments (billed together), Surveys, and a Data Warehouse, each with its own free allowance. CostCompass tracks the first two — Product Analytics and Session Replay — because those are the products PostHog exposes through the query API it reads; the rest aren’t available the same way, so the guide is honest about the scope.
| What you’re paying for | How PostHog meters it |
|---|---|
| Product Analytics events | Per event ingested, past 1 million free events each month |
| Identified events | An extra per-event charge on top of the base rate (Person Profiles) |
| Session Replay recordings | Per session recorded, past 5,000 free web recordings each month |
| Each other product | Its own free allowance (feature flags, surveys, data warehouse…) |
(The exact allowances and per-unit rates live on PostHog’s pricing page and have been revised before, so treat any figure you’ve memorized as provisional.)
Why is PostHog spend hard to keep ahead of?
The per-event model is easy to reason about for a single event and hard to stay ahead of across a month. Most of the difficulty comes down to the gap between the volume PostHog shows you and the money it eventually charges:
- Counts aren’t cost. A usage page that says you’ve ingested a few million events is telling you the truth and answering the wrong question. Turning that into money means knowing the per-event rate, where your free allowance ends, and how many of those events are identified — arithmetic you end up doing in your head, if you do it at all.
- The free allowance hides the cliff. Usage inside each product’s monthly allowance costs nothing, so spend reads as zero — right up until you cross the line and every further event or recording is metered. A running count doesn’t mark where that line sits.
- Identified events cost more, quietly. Because identified events
carry the Person Profiles surcharge, a release that starts calling
identifymore often can move the bill without changing your raw event volume much at all. - Replay climbs on its own. Session Replay is metered separately and is easy to over-capture — widen a recording rule or ship a chatty page and your recording count jumps while your event count holds steady. The two products spend independently.
- PostHog is rarely your only provider. Alongside it you’re likely calling Anthropic for Claude, building on OpenAI or Gemini, and paying for inference hosts and serving, so PostHog is one slice of a bill you otherwise stitch together by hand from a stack of dashboards, each counting in its own units.

Is the PostHog cost exact or estimated?
Some providers hand back a cost figure they’ve already worked out. PostHog’s query API hands back counts — events ingested and recordings stored — and leaves the costing to you, so the PostHog number in CostCompass is an estimate, marked as such, and not read off a settled invoice.
CostCompass reads your daily event and recording counts and prices them at a single per-unit rate, then accounts for the free monthly allowance so the included usage isn’t billed against you. A few things keep it an estimate rather than your invoice. PostHog’s real pricing is tiered — the per-unit rate falls as volume grows, and identified events (Person Profiles) cost more than anonymous ones — while CostCompass applies one flat rate across the board, so the figure won’t follow those bands exactly. It also counts all session recordings in one bucket rather than splitting web from mobile, which have separate allowances. And it’s worked from the counts PostHog reports for the window it fetched, not reconstructed from your exact billing cycle. Treat it as a working estimate you can act on as the month runs, not the final invoice.
How can you reduce your PostHog bill?
Tracking shows you where the events and recordings go; a few levers slow the burn:
- Sample high-volume events. If a handful of event types dominate your ingestion, sampling them or dropping ones you never query is usually the single biggest lever on Product Analytics spend.
- Tighten what you record. Session Replay bills per recording, so scoping your recording rules — capturing the sessions you actually review rather than every visit — keeps the recording count, and the charge, down.
- Watch identified events. Because identified events carry the Person
Profiles surcharge, calling
identifyonly where you need a person attached — rather than on every anonymous hit — keeps the priced volume honest. - Set per-product spend limits. PostHog lets you cap spend on each product independently, so a runaway page can’t quietly run your whole bill up.
- Watch the per-product split. A by-product view catches a replay spike or an ingestion climb in days, while the month-end total would only show it once it’s already been paid.
How do you forecast next month’s PostHog bill?
Forecasting usage-based spend doesn’t need anything exotic, just a burn rate: take your cost over the last several days, turn it into a daily average, and project it across a full month.
CostCompass does exactly this. It scales your trailing seven-day burn rate to the number of days in next month, and the result is one forward number for what next month costs if the current pace holds. Seven days is the window — long enough that one heavy ingestion day doesn’t throw the average, short enough to pick up a recent change like a release that started recording far more sessions. Because the usage is priced consistently, the projection rides on your tracked spend, and it’s the same engine that runs across every provider you’ve connected, so PostHog folds into one whole-stack number.
How does CostCompass track your PostHog costs?
CostCompass connects to PostHog’s US Cloud with a personal API key and runs two read-only queries against your project: a daily count of ingested events, broken into pageviews, autocaptured interactions, identify calls, and custom events, and a daily count of session recordings. It prices those counts into money at a single per-unit rate, treating usage inside each product’s free allowance as covered and the rest as metered, and records the result as an estimate. That gives you what a raw count can’t: which product spent what, in money, day by day, split between Product Analytics and Session Replay. When you first connect, CostCompass pulls a recent window of usage rather than your whole history, and each refresh brings the running total current — the moment you click Refresh, not on some schedule behind your back.

Two things make that practical for a solo developer. First, your key is encrypted in your browser before anything is stored. The API key you paste is sealed with your vault password on your own device, and only the sealed version is ever saved — a blob CostCompass can’t open, because the vault password stays with you. When it’s time to read your usage, your browser unseals the key and passes it to a relay that uses it for that one call to PostHog and is built not to log or keep it. What we hold at rest is locked ciphertext; the key your project runs on never reaches us in usable form.
Second, PostHog doesn’t sit alone. The same dashboard rolls its running cost up with every other AI and compute provider you’ve connected — Claude, OpenAI, your GPUs and hosting — into one figure with a forecast. How you get to that cross-provider number — by hand, through tooling, or read straight from each usage API — is its own decision; the ways to track AI costs across providers lay the options out side by side.
| PostHog’s billing page | CostCompass | |
|---|---|---|
| Scope | PostHog spend alone | PostHog beside every other provider |
| Forecast | Projects PostHog’s spend only | One forecast across your whole stack |
| Lives in | PostHog’s own console | One dashboard with all your spend |
| Currency | Updates on PostHog’s billing cycle | Current the moment you click Refresh |
Getting started takes three steps:
- In PostHog, create a personal API key with the
query:readandsession_recording:readscopes, on the project you want to track. - Paste it into CostCompass. It’s encrypted in your browser before it’s stored, so the server only ever holds ciphertext.
- Click Refresh. CostCompass reads your daily event and recording counts, prices them into money, and from there your running cost, forecast, and by-product split roll up — PostHog folded into the whole-stack number.
Frequently asked questions
- What kind of PostHog key does CostCompass need?
- A PostHog personal API key with two read scopes — query:read and session_recording:read — on the project you want to track. CostCompass uses it to run two read-only queries against your project — a daily count of ingested events, and a daily count of session recordings. CostCompass checks both scopes work the moment you connect, so a key missing one becomes a setup-time message rather than a half-empty dashboard on your first refresh. It works with PostHog's US Cloud; one key covers the project's tracked products.
- Does CostCompass store my PostHog API key?
- Not in any form we can read. Your API key is encrypted in your browser with your vault password before it leaves your device, and what CostCompass keeps is only the resulting ciphertext — an opaque blob it can't decrypt, since your vault password never leaves your browser. When it's time to read your PostHog usage, the key is unsealed in your browser and forwarded to PostHog through a relay that holds it only for the length of that one call and is built not to log it. So that request does pass the key through our infrastructure, but the plaintext is never written to our database or our logs — what we store at rest is ciphertext, useless without your vault password.
- Which PostHog products does CostCompass track?
- Two — Product Analytics event ingestion (pageviews, autocaptured interactions, identify calls, and custom events) and Session Replay recordings. Those are the parts of your PostHog bill it reads and prices. Feature Flags, Experiments, Surveys, and the Data Warehouse are deliberately left out — PostHog doesn't expose their usage through the query API CostCompass reads, so rather than guess at them it tracks the two products it can measure accurately and tells you that's the scope.
- Is the PostHog cost exact or estimated?
- Estimated, and CostCompass tells you so. PostHog's query API returns counts, not money, so CostCompass prices those counts itself at a single per-unit rate and accounts for the free monthly allowance. PostHog's real pricing is tiered, and it charges identified events (what your bill calls Person Profiles) more than anonymous ones, while CostCompass applies one flat rate — so the number won't match those bands exactly. It's computed from what PostHog reports about your usage — a close estimate, not the settled invoice.
- Can it forecast next month's PostHog bill?
- Yes. CostCompass takes your trailing seven-day burn rate and scales it to the length of next month, so you get one forward number for what next month costs if the current pace holds. It's the same forecasting engine that runs across every provider you've connected, so PostHog folds into the whole-stack projection alongside everything else.
- Does CostCompass work with self-hosted PostHog?
- No — it connects to PostHog's US Cloud. A self-hosted PostHog install doesn't generate a PostHog bill for a spend tool to track, so CostCompass reads usage from the Cloud query API and leaves self-hosted deployments out.
- Why use CostCompass instead of PostHog's own billing page?
- PostHog's billing page projects PostHog's own spend, for PostHog alone, in PostHog's console — useful, but it stops at PostHog, and you read it apart from everything else you pay for. It won't tell you how PostHog sits next to the rest of your bill, or where your whole stack lands this month. CostCompass prices the same usage feed and rolls PostHog up with Claude, OpenAI, your GPU rentals and hosting into one running cost and forecast — current the moment you click Refresh, instead of a per-tool total you go read in each provider's own console.
About the author
Joubert Berger builds CostCompass, a spend-intelligence dashboard that pulls usage from AI and compute providers into one month-to-date total, a forecast, and a per-provider breakdown. This guide reflects how CostCompass reads each provider's own usage API — see the security model for how your keys are handled.
Stop reading PostHog spend in event counts
Connect PostHog once and turn its event and recording counts into a live running cost, a forecast, and a split by product — rolled up with every other provider, in one click.