| title | Analytics |
|---|---|
| description | Connect a PostHog project and query events, persons, and sessions with HogQL — no separate analytics tool required. |
Dora connects to a PostHog project over the read-only HogQL Query API — there's no wire protocol to implement, so the connector works the same way against PostHog Cloud (US or EU) as it does against a self-hosted instance.
<video src='/features/posthog-analytics.webm' poster='/features/posthog-analytics.png' autoPlay loop muted playsInline controls className='w-full rounded-lg border'
Your browser does not support the video tag.
Add a PostHog connection the same way you'd add any other data source, using
a personal API key with query:read scope. See Connect →
PostHog for the credential setup.
PostHog has no information_schema, so Dora reflects each virtual table's
columns by running a zero-row SELECT * and reading back the HogQL Query
API's columns/types metadata. The tables surfaced in the schema browser
are:
eventspersonssessionsgroupscohort_peopleraw_sessions
Row counts shown next to each table are a live SELECT count() — they're
hidden rather than shown as zero if the count can't be read.
Opening a PostHog connection adds an Analytics entry to the sidebar. It runs a set of HogQL queries against the connection and renders them as a dashboard:
| Panel | What it shows |
|---|---|
| KPI tiles | Events, unique users, pageviews, and sessions, each against the previous period of the same length |
| Monitored sites | Hosts sending events, with per-site event/user/pageview counts |
| Activity | Daily events and unique users |
| Top events | The most frequent event names |
| Top pages | The most-viewed URLs ($pageview events) |
| Top browsers | The most common $browser values |
| Top referrers | Where traffic came from |
| Top countries | Geographic breakdown |
| Devices | Device-type breakdown |
The range selector in the header switches every panel between 7, 14, 30, and 90 days at once — the tiles re-compare against the matching previous period as you go.
Clicking a slice of any breakdown panel drills down: the value becomes a filter chip, and every other panel re-queries within it. Drills are additive, so you can stack a site, an event, and a browser to narrow the whole dashboard to one slice of traffic. Chips are removable individually, or with Clear all.
Two more controls sit in the header: an exclude localhost switch that
drops traffic from localhost, 127.0.0.1, 0.0.0.0, and [::1] hosts,
and a manual refresh that re-runs every query.
The dashboard is read-only, matching the connector's write-blocking behavior for PostHog: Dora never mutates PostHog data, only queries it.