PostHog Problems & Issues

Real user-reported problems, complaints, and limitations for PostHog. Based on analysis of 13 signals.

Overall score: 71/100

Issues by Category

reliability5 issues

PostHog events not showing up because ad blockers block it

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.

Frequency: 8%Sentiment: -0.60/1003 sources
Impact
7

PostHog session replay not recording some sessions

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.

Frequency: 6%Sentiment: -0.50/1003 sources
Impact
6

Data dropped forever after hitting a billing limit

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.

Frequency: 3%Sentiment: -0.40/1002 sources
Impact
6

PostHog data doesn't match Google Analytics

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.

Frequency: 5%Sentiment: -0.40/1003 sources
Impact
5

PostHog feature flags flicker or return undefined

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.

Frequency: 4%Sentiment: -0.40/1002 sources
Impact
5
usability3 issues

PostHog is overwhelming and has a steep learning curve

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.

Frequency: 8%Sentiment: -0.50/1004 sources
Impact
6

PostHog is built for engineers, not marketers

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.

Frequency: 6%Sentiment: -0.40/1003 sources
Impact
6

PostHog identify() merges or splits users incorrectly

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.

Frequency: 4%Sentiment: -0.40/1002 sources
Impact
6
performance2 issues

PostHog queries and insights are slow on large datasets

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.

Frequency: 6%Sentiment: -0.50/1004 sources
Impact
6

Does PostHog slow down my website?

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.

Frequency: 3%Sentiment: -0.30/1003 sources
Impact
4
pricing1 issue

Why is my PostHog bill so high? Many separate usage meters

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.

Frequency: 6%Sentiment: -0.50/1004 sources
Impact
7
integrations1 issue

Duplicate or missing pageviews in Next.js and SPAs

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.

Frequency: 5%Sentiment: -0.40/1003 sources
Impact
5
customization1 issue

Self-hosting PostHog is heavy and limited to a hobby setup

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.

Frequency: 3%Sentiment: -0.30/1003 sources
Impact
5

Regret Patterns

Common reasons users regret choosing PostHog.

Skipped the reverse proxy and trusted incomplete numbers

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.

Frequency: 6%First weeks after launch

Left autocapture and replay at defaults and the bill grew

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.

Frequency: 5%After the first traffic spike

Bought into the all-in-one suite, but nobody outside engineering uses it

Marketing and sales find the interface overwhelming and keep asking engineers for reports, recreating the bottleneck the tool was meant to remove.

Frequency: 5%2-3 months in

Messy identify() setup polluted person data

Calling identify() with generic IDs or forgetting reset() on logout merged different users, and already-identified profiles cannot be auto-merged, leaving cleanup work.

Frequency: 4%After login flows go live

Set a tight billing limit and lost data

A low limit protected the budget but data after the cap was dropped permanently, leaving gaps in a launch week or campaign.

Frequency: 3%During a traffic spike

Tried to self-host to save money

The hobby deployment needs real RAM and maintenance, and scaling it is not supported, so teams moved to Cloud after spending time on ops.

Frequency: 3%First few months

When PostHog Breaks Down

Specific scenarios where PostHog fails or underperforms.

Large share of visitors use ad blockers

Without a reverse proxy, events, replays, flags and surveys silently fail for blocked visitors, so dashboards undercount and experiments are skewed.

Next.js App Router or other SPA

Default pageview capture misses client-side route changes or double counts them unless you capture $pageview manually or use @posthog/next.

Traffic spike or viral launch

Events, recordings and flag requests all scale together; either the bill jumps or billing limits stop ingestion and data is lost.

Strict Content Security Policy

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.

Queries over many months of 'All events'

Insights get slow on large datasets; you need specific events, shorter ranges and person.properties instead of pdi lookups.

Shared devices without reset() on logout

Events from the next user attach to the previous person, merging profiles and corrupting per-user analytics.

E2E tests with Playwright or Puppeteer

PostHog treats headless and webdriver browsers as bots, so test runs send no events even though flags and identify still work.