Skip to main content
The PostHog source reads people, groups, cohorts, feature flags, experiments, insights, dashboards, actions, annotations, surveys, notebooks, and session recordings from one project. It is built with an HTTP manifest and is beta. Its resources are stable, though future releases may add columns.

Configuration

host must be the app origin, not the us.i.posthog.com ingestion host, which does not serve /api.

Resources

All resources read from endpoints under /api/projects/{project_id}/. persons is the endpoint used by an explicit live connection test. The service API’s normal config validation does not make that request. Useful IDs from embedded objects are also exposed as columns, such as experiments.feature_flag_id and session_recordings.person_id. The 13 default resources are actions, annotations, cohort_members, cohorts, dashboards, experiments, feature_flags, groups, insights, notebooks, persons, session_recordings, and surveys. Dashboards, experiments, and notebooks fetch details; child resources fetch their parents. Optional resources include activity logs, alerts, archived catalogs, datasets, error tracking, export history, LLM records, property definitions, replay playlists, saved endpoints, subscriptions, and survey responses. Events are excluded. Optional resources require their corresponding read scopes; survey responses need both survey:read and query:read. Connection tests require person:read.

Modes

All resources support full reads. If interrupted, top-level lists resume after the last completed page; child reads restart their parent traversal. Two resources are incremental. Both use the time comparator. The cursor field is fixed by the manifest. Only a lookback window is user-configurable, and only because the comparator is time. Insights overlap by one second to re-read timestamp ties. Their cursor tracks name, description, and query edits; other metadata needs full reads. Session recordings re-read 24 hours for ongoing sessions; older uploads and later metadata changes need full reads. Incremental reads do not propagate deletions. Notebooks retain complete content through full reads. persons has no incremental block. The API offers no updated-since filter, so every run is a full snapshot.

Behavior

  • Auth: bearer token from api_key on every request.
  • Regional base URL: base_url is templated as {{ config.host }} and rendered once at Configure, against config only. One manifest serves US Cloud, EU Cloud, and self-hosted instances.
  • Pagination: most list endpoints return a DRF envelope. The manifest follows the absolute next URL rather than computing offsets, with limit=100 per page. Replay uses an opaque after page cursor; survey responses use offset pagination. Detail reads and group types are unpaginated.
  • Rate limiting: a static 0.3 requests/second limiter, sized to the binding constraint (the analytics endpoints share a 1200-requests/hour bucket). Draining an hourly bucket is a run failure, not a slowdown. Retry sleeps cap at 60 seconds, so an hour-long window cannot be waited out. PostHog publishes no rate-limit response headers, so there is no dynamic block.
  • Timeout: timeout_seconds: 120, double the engine default, because person and session-recording pages carry large embedded property blobs.
  • Every resource carries a raw remainder column preserving fields the manifest does not project.
  • Coverage: results depend on permissions, product access, and retention. Survey responses include submitted answers. Dashboards read cached tiles; insights and experiments do not calculate fresh results. Replay contains metadata, not media; exports contain job metadata, not files. Organization administration and arbitrary query execution are outside this connector.