PostHog Problems & Issues
Developer ToolAll-in-one product analytics, session replay, feature flags and experiments
Should you use PostHog?
TryPostHog is worth trying for most users (score 71/100). Most reported issues: PostHog events not showing up because ad blockers block it; PostHog is overwhelming and has a steep learning curve; Why is my PostHog bill so high? Many separate usage meters. Not a good fit for: Marketers who only need traffic stats; Non-technical teams wanting a visual A/B testing editor; Teams wanting to self-host at scale. Users most often switch to Mixpanel, Amplitude, Hotjar.
Top problems
- PostHog events not showing up because ad blockers block it
- PostHog is overwhelming and has a steep learning curve
- Why is my PostHog bill so high? Many separate usage meters
Good for
- Early-stage startups with an engineering team
- Developers and indie hackers
- Product teams replacing Mixpanel + Hotjar + LaunchDarkly
Avoid if you are
- Marketers who only need traffic stats
- Non-technical teams wanting a visual A/B testing editor
- Teams wanting to self-host at scale
Score breakdown
Generous free tiers on every product and no per-seat fees make it one of the best-value analytics suites, but the interface overwhelms non-engineers, ad blockers silently drop data until you set up a reverse proxy, and a bill split across a dozen usage meters is hard to predict.
Overview
PostHog is an open-source product platform that bundles product analytics, web analytics, session replay, feature flags, A/B testing, surveys, error tracking, a data warehouse and more under one usage-based bill. It is built for engineers and product teams at startups and scale-ups who want to instrument their own app and query raw events with SQL, and it can be self-hosted (hobby deployment) or used on US/EU Cloud.
PostHog Not Working? Common Errors & Fixes
Step-by-step fixes for the errors users hit most.
PostHog Events Not Showing Up
Missing PostHog events are usually caused by a misconfigured SDK (wrong project key or region host), ad blockers, an app filtering events, or ingestion delay. Check the Network tab for requests to /e, then the Ingestion warnings page.
PostHog Blocked by Ad Blockers
Ad and tracking blockers block requests to PostHog's domains, which drops events, replays, flags and surveys. Route PostHog through your own subdomain with a reverse proxy; PostHog says this typically recovers 10-30% of events.
PostHog Session Replay Not Recording
Replays usually go missing because the session was sampled out, was shorter than the minimum duration, didn't match a URL trigger, or recorder.js was blocked by CSP or an ad blocker. The $recording_status property on the session's events tells you which.
PostHog Replay Broken: Missing CSS, Fonts or Blank Screen
When a replay shows unstyled pages, missing fonts or a blank start, PostHog couldn't fetch your stylesheets or the first full snapshot arrived late. Allow PostHog in CORS, add crossorigin to stylesheet links, and check for blocked uploads.
PostHog Bill Too High
A high PostHog bill almost always comes from one or two meters: autocapture events, 100% replay sampling, feature flag requests in SPAs, or add-ons like identified events. Use the billable usage dashboard to find the source, then sample, trim and set billing limits.
PostHog Feature Flags Not Working or Undefined
Flags read as undefined or false on first render because they load asynchronously (about 100-500 ms). Bootstrap flags or wait for onFeatureFlags, call identify() before evaluating, and proxy flag requests past ad blockers.
PostHog Pageviews Missing or Duplicated in Next.js
In the Next.js App Router and other SPAs, client-side navigation doesn't reload the page, so pageviews are missed or double counted. Set capture_pageview to false and capture $pageview on route change, or use the official @posthog/next package.
PostHog Numbers Different From Google Analytics
PostHog and GA4 count visitors differently: ad blockers block GA more often, PostHog can merge one person across devices, bot filtering differs, and sessions end after 30 minutes of inactivity. Small gaps are normal; large ones mean one tool is blocked.
PostHog Identify Merging Wrong Users
Different people end up as one person when identify() receives a generic ID (like 'null') or reset() isn't called on logout on shared devices. PostHog won't merge two already-identified users and logs a warning instead.
PostHog Surveys Not Showing
PostHog surveys don't appear when surveys are disabled in project settings or the SDK config, posthog-js is too old, or CSP, a proxy or an ad blocker blocks surveys.js. Run getActiveMatchingSurveys in the console to see what matches.
PostHog Toolbar or Heatmaps Not Loading
The PostHog toolbar (needed for heatmaps) fails when the page URL isn't authorized, CSP or an ad blocker blocks it, or ui_host isn't set behind a reverse proxy. Authorize the URL, allow PostHog in CSP and set ui_host.
Why Is PostHog So Slow?
PostHog insights get slow when they scan 'All events' over long date ranges or use pdi.person.properties lookups. Filter on specific events, shorten the range and use person.properties; dashboards can also serve pre-computed results.
PostHog Not Capturing Events in Playwright or Puppeteer Tests
PostHog's JS SDK treats automated browsers as bots, so Playwright, Puppeteer and Selenium runs send no events even though flags and identify still work. Confirm with ?__posthog_debug=true and override the bot signals if you need test events.
Signals & Issues
Patterns extracted from real user feedback — not raw reviews.
The most repeated complaint on G2 and Trustpilot: with analytics, replay, flags, experiments, surveys, warehouse and more in one app, new users find the navigation cluttered and building events, funnels and dashboards takes time. Several reviewers say it gets more confusing as the team adopts more modules.
Setup, event design, SQL and identify() calls assume a developer. Reviewers note non-technical staff struggle to pull basic reports or get blocked by workspace permissions, and the A/B testing is code-first with no mature visual editor.
Generic distinct IDs (like 'null'), forgetting reset() on logout on shared devices, or calling identify() too late lead to merged or fragmented person profiles. PostHog refuses to merge two already-identified users and logs an ingestion warning, so mistakes need manual cleanup.
PostHog's own docs say the tracker can be blocked by ad blockers even on localhost, and that a reverse proxy typically increases captured events by 10-30%. Teams that skip the proxy see lower numbers than expected and gaps in funnels, flags and surveys.
Replays go missing because of sampling, minimum-duration settings, URL triggers, CSP rules blocking recorder.js, ad blockers or users closing the tab before the first snapshot is sent. Reviewers also mention replays buffering or glitching during playback.
Billing limits protect your wallet, but once a product's limit is reached PostHog stops ingesting that product's data and the overflow cannot be recovered. Session replay filtering by person or event properties also stops working once the analytics limit is hit.
Visitor and pageview counts differ from GA, Plausible or Cloudflare because of ad blocking, cross-device identification, bot filtering and session timeouts. Teams lose time reconciling numbers and some reviewers say they doubt the accuracy of what they see.
Flags take roughly 100-500 ms to load, so they read as disabled on first render unless you bootstrap them. Ad blockers, missing identify() calls and local evaluation without required properties also return undefined or None.
Each product (events, recordings, flag requests, survey responses, exceptions, warehouse rows, destinations, logs) has its own free tier and per-unit price, plus add-ons such as identified events, group analytics and data pipelines. Pricing analyses note that replay, flags at scale and warehouse syncs are what push bills up, and feature-flag requests are easy to burn in single-page apps.
G2 and AWS Marketplace reviewers report that insights, live events and replay loading feel slow or inconsistent as data grows. PostHog's own troubleshooting docs advise filtering on a single event instead of 'All events', shortening date ranges and avoiding pdi.person.properties to speed queries up.
Third-party measurements put the core posthog-js library at roughly 52-57 KB gzipped, with replay code lazy-loaded. PostHog's docs acknowledge PageSpeed drops and suggest updating the snippet, placing it lower in the head, or using server-side tracking.
In single-page apps and the Next.js App Router, automatic pageview capture can double count or miss client-side route changes. The common fix is turning off capture_pageview and capturing $pageview on route change, or using the official @posthog/next package.
PostHog stopped supporting Kubernetes deployments in 2023; the open-source hobby deployment runs on Docker Compose and needs at least 4 GB RAM (8 GB+ recommended), with community templates suggesting it suits roughly 1M events/day. Older setups that stored recordings in ClickHouse had to migrate.
What Users Love
Large free tier on every product and no per-seat fees
Each month includes 1M analytics events, 5,000 recordings, 1M flag requests, 1,500 survey responses and 100,000 exceptions free, and paid usage has no base fee or seat charges. Reviewers repeatedly cite the free tier as the main reason they chose it.
Replaces several tools with one platform
Analytics, web analytics, session replay, feature flags, experiments, surveys and error tracking share the same user data, so a replay can be opened from a funnel step or a flag tied to an experiment. Reviewers value cutting separate Mixpanel, Hotjar and LaunchDarkly subscriptions.
SQL access to raw events and a built-in data warehouse
Engineers can query events with SQL and join them with synced sources such as Stripe or a database, instead of being limited to prebuilt reports.
Session replay tied to analytics and errors
Trustpilot and G2 reviewers single out replays as a favorite feature, especially being able to jump from an event, error or funnel drop-off straight into the recording.
Open source, EU hosting and self-host option
The code is open source, there is an EU Cloud region for data residency, and HIPAA BAA is available on the Boost package and up. Teams with strict privacy needs can run the hobby deployment themselves.
Transparent pricing and docs
Every unit price is published, billing limits and usage alerts can be set per product, and troubleshooting docs are detailed. Pricing audits call its pricing page unusually transparent.
Pricing Plans
Storage: 1 year data retention
- ✓1M product analytics events/month (web analytics included)
- ✓5,000 session recordings/month (2,500 mobile)
- ✓1M feature flag requests/month
- ✓1,500 survey responses/month
- ✓100,000 error tracking exceptions/month
- ✓1M data warehouse source rows/month
- ✓1 project
- ✓Community support
Limitations: 1 project, 1 year data retention, community support only. Data above the free allowance is not ingested unless you add a card.
Storage: 7 year data retention
- ✓Same monthly free tier on every product
- ✓Analytics events from $0.00005 each above 1M, falling to $0.000009 above 250M
- ✓Recordings from $0.005 each above 5,000
- ✓Flag requests from $0.0001 each above 1M
- ✓Survey responses from $0.10 each above 1,500
- ✓6 projects
- ✓Email support
- ✓Unlimited seats
Limitations: No base fee, but bills scale with traffic. Billing limits stop ingestion and the data over the limit is permanently lost.
- ✓Unlimited projects
- ✓White labeling
- ✓HIPAA BAA
- ✓SSO enforcement
- ✓Collaboration features
Limitations: No SAML or priority support (Scale)
- ✓Everything in Boost
- ✓SAML
- ✓Priority support
Limitations: No RBAC or dedicated support (Enterprise)
- ✓Everything in Scale and Boost
- ✓Role-based access control (RBAC)
- ✓Dedicated support
- ✓Training
Features
Analytics
- Product analytics (funnels, retention, paths)
- Web analytics
Included with product analytics events
Replay
- Session replay
Web and mobile; sampling, minimum duration and URL triggers
- Heatmaps
Viewed through the toolbar
Experimentation
- Feature flags
Bootstrapping and local evaluation supported
- A/B testing / experiments
Code-first, no mature visual editor
Feedback
- Surveys
Monitoring
- Error tracking
Data
- Data warehouse and SQL
Sync sources and query with SQL
- Managed reverse proxy
Free for Cloud users; not HIPAA-compliant
Deployment
- Self-hosting
Hobby Docker Compose deployment only; Kubernetes unsupported since 2023
Security
- EU data hosting
EU Cloud region
Who Should Use This?
Good Fit
Early-stage startups with an engineering team
The free tier covers most products until real traction, there are no seat fees, and engineers can instrument everything in one SDK.
Developers and indie hackers
Generous free allowances, SQL access and open-source code; billing limits keep side projects from running up a bill.
Product teams replacing Mixpanel + Hotjar + LaunchDarkly
Analytics, replay and flags share one user model and one bill, so consolidation usually saves money and context switching.
Neutral
High-traffic consumer apps
Volume discounts are steep, but events, recordings and flag requests all scale with traffic; you need sampling, billing limits and event hygiene to keep costs predictable.
Privacy-sensitive or regulated companies
EU hosting, self-host and HIPAA BAA (Boost, $250/mo) are available, but cookies are set by default and consent handling must be configured.
Avoid
Marketers who only need traffic stats
The interface and setup are built for engineers. A simple tool like Plausible or GA4 is faster to learn for pageviews and referrers.
Non-technical teams wanting a visual A/B testing editor
Experiments are code-first and there is no mature drag-and-drop editor or deep personalization rules.
Teams wanting to self-host at scale
Only the hobby Docker Compose deployment is supported; large self-hosted installs are no longer a supported path.
Regret Patterns
Common buyer's remorse scenarios reported by users.
Teams launch with the default PostHog host, then discover ad blockers removed a meaningful share of events and that funnels and flags were based on partial data.
Autocapture events, 100% replay sampling and flag requests on every route change pushed usage past the free tiers once traffic grew, across several meters at once.
Marketing and sales find the interface overwhelming and keep asking engineers for reports, recreating the bottleneck the tool was meant to remove.
Calling identify() with generic IDs or forgetting reset() on logout merged different users, and already-identified profiles cannot be auto-merged, leaving cleanup work.
A low limit protected the budget but data after the cap was dropped permanently, leaving gaps in a launch week or campaign.
The hobby deployment needs real RAM and maintenance, and scaling it is not supported, so teams moved to Cloud after spending time on ops.
When It Breaks Down
Scenarios where this product tends to fail users.
Without a reverse proxy, events, replays, flags and surveys silently fail for blocked visitors, so dashboards undercount and experiments are skewed.
Default pageview capture misses client-side route changes or double counts them unless you capture $pageview manually or use @posthog/next.
Events, recordings and flag requests all scale together; either the bill jumps or billing limits stop ingestion and data is lost.
recorder.js, surveys.js and the toolbar are fetched from PostHog; a strict CSP blocks them and replays, surveys and heatmaps stop working without obvious errors in the dashboard.
Insights get slow on large datasets; you need specific events, shorter ranges and person.properties instead of pdi lookups.
Events from the next user attach to the previous person, merging profiles and corrupting per-user analytics.
PostHog treats headless and webdriver browsers as bots, so test runs send no events even though flags and identify still work.
Alternatives Users Switch To
Mixpanel
8x mentionedSwitch for a more polished, marketer-friendly analytics UI and faster report building. You lose bundled replay depth, flags and SQL warehouse in one bill.
Amplitude
7x mentionedPick it for mature behavioral analytics and governance at enterprise scale. Trade-off: more expensive contracts and less of an all-in-one developer toolkit.
Hotjar
5x mentionedSimpler heatmaps, recordings and surveys that non-technical teams can set up alone. Trade-off: no product analytics depth, flags or experiments.
Plausible Analytics
5x mentionedLightweight, cookieless web analytics for teams that only need traffic stats. Trade-off: no funnels per user, replay or feature flags.
Microsoft Clarity
5x mentionedFree session recordings and heatmaps with no recording cap if replay is all you need. Trade-off: no product analytics, flags or experiments.
Segment
3x mentionedUse it when you mainly need to route event data to many tools rather than analyze it in one place. Trade-off: it is a CDP, not an analytics UI, and gets expensive.
Frequently Asked Questions
See how PostHog compares in our Best Analytics Software rankings, or calculate costs with our Budget Calculator.
Work at PostHog or spotted something outdated? Suggest a correction — we verify every change against public sources. See our methodology.