Skip to main content

PostHog

Web Source code Package

PostHog is an open-source product analytics platform with session replay, feature flags, A/B testing, surveys, and heatmaps. This destination forwards walkerOS events to PostHog via the official posthog-js SDK, translating events into posthog.capture(...) calls, resolving identity and group assignments, and handling consent opt-in/opt-out. All built-in PostHog features (session replay, feature flags, surveys, heatmaps, exception capture) are available through SDK init passthrough.

Where this fits

PostHog is a web destination in the walkerOS flow:

Installation

Loading...
Loading...

Configuration

This destination uses the standard destination config wrapper (consent, data, env, id, ...). For the shared fields see destination configuration. Package-specific fields live under config.settings and are listed below.

Settings

PropertyTypeDescriptionMore
apiKey*stringYour PostHog project API key (starts with "phc_"). Find it in your PostHog project settings under "Project API Key" (like phc_a1b2c3d4e5f6789012345678abcdef12).
api_hoststringPostHog API host. Defaults to https://us.i.posthog.com. Use https://eu.i.posthog.com for the EU region.
ui_hoststringURL of the PostHog UI host, used by toolbar and replay player. Default: null.
persistenceWhere to persist user identity. Default: "localStorage+cookie".
person_profilesWhen to create person profiles. "identified_only" (default) creates profiles only after identify() is called.
autocapturebooleanEnable PostHog's autocapture of clicks, form submits, and pageviews. Default: false (walkerOS sources handle capture).
capture_pageviewboolean | stringWhether PostHog should auto-capture pageview events. Default: false (walkerOS sources handle this).
capture_pageleaveboolean | stringWhether PostHog should auto-capture pageleave events. Default: false.
capture_heatmapsbooleanEnable heatmap data capture. Default: true (PostHog default).
capture_exceptionsbooleanEnable automatic exception capture. Default: false.
disable_surveysbooleanDisable PostHog surveys. Default: false.
disable_session_recordingbooleanDisable session recording. Default: false.
advanced_disable_flagsbooleanDisable feature flag loading. Default: false.
cookieless_mode'always' | 'on_reject'"always" never uses cookies/localStorage. "on_reject" falls back to cookieless when consent is rejected.
debugbooleanEnable PostHog SDK debug logging. Default: false.
session_recordinganySession Replay options (SessionRecordingOptions). Masking, blocking, sampling. See PostHog docs for full list.
bootstrapanySSR bootstrap data. { distinctID?, featureFlags? } — pre-populates identity and flag values to avoid first-render flicker.
identifyanywalkerOS mapping value resolving to an identity object. Keys: distinctId, $set, $set_once. Resolved on first push and re-fired when distinctId changes.
groupanywalkerOS mapping value resolving to a group object. Keys: type, key, properties. Resolved on first push and re-fired when type/key changes.
* Required fields

Mapping

Per-event rules under config.mapping. For the standard rule fields (consent, condition, data, batch, name, policy) see mapping.

PropertyTypeDescriptionMore
identifyanyPer-event identity mapping. Resolves to an object with any of: distinctId, $set, $set_once. Omitting distinctId routes to setPersonProperties() (no identity change).
groupanyGroup assignment. Resolves to { type, key, properties? } → posthog.group(type, key, properties).
resetanyLogout trigger. Resolves to a truthy value → posthog.reset() (clears distinctId and regenerates an anonymous one). Typically used with skip: true on a user logout rule.

Examples

Consent granted

A walker consent command with analytics granted calls posthog.opt_in_capturing to resume capture.

Event
Out

Consent revoked

A walker consent command with analytics denied calls posthog.opt_out_capturing to stop capture and replay.

Event
Out

Default capture

A walker event becomes a PostHog capture call with the event name and empty properties.

Event
Out

Destination identify

Destination-level identify calls posthog.identify with the user id before firing the default capture.

Event
Out

Include data

Destination-level include flattens the event data section into prefixed PostHog capture properties.

Event
Out

Group assignment

A company update assigns the user to a PostHog group and sets group properties via posthog.group.

Event
Mapping
Out

Order complete

An order complete captures order data and globals as prefixed properties for revenue analysis in PostHog.

Event
Mapping
Out

Set person properties

A profile update calls setPersonProperties to enrich the PostHog profile without changing identity.

Event
Mapping
Out

Rule include overrides

A per-rule include replaces the destination-level include so this event forwards only globals.

Event
Mapping
Out

User login identify

A user login fires PostHog identify with $set and $set_once person properties, skipping the capture.

Event
Mapping
Out

User logout reset

A user logout calls posthog.reset to clear the distinct id and generate a new anonymous one.

Event
Mapping
Out

Built-in features

All these PostHog features work via standard posthog-js init options, with no destination wiring required:

  • Session replay: settings.session_recording: { maskAllInputs: true, ... }
  • Feature flags: settings.bootstrap: { featureFlags: { ... } } for SSR
  • Surveys: automatic; settings.disable_surveys: true to opt out
  • Heatmaps: settings.capture_heatmaps: true
  • Exception capture: settings.capture_exceptions: true
  • Cookieless mode: settings.cookieless_mode: 'always' | 'on_reject'
  • Person profiles: settings.person_profiles: 'identified_only' (PostHog default, privacy-friendly) or 'always'

walkerOS sets three defaults that differ from PostHog's built-ins: autocapture: false, capture_pageview: false, capture_pageleave: false, because walkerOS sources handle event capture. Override them explicitly if you want PostHog's autocapture on.

💡 Need implementation support?
elbwalker offers hands-on support: setup review, measurement planning, destination mapping, and live troubleshooting. Book a 2-hour session (€399)