PostHog
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.
PostHog is a web destination in the walkerOS flow:
Installation
- Integrated
- Bundled
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
| Property | Type | Description | More |
|---|---|---|---|
apiKey | string | Your PostHog project API key (starts with "phc_"). Find it in your PostHog project settings under "Project API Key" (like phc_a1b2c3d4e5f6789012345678abcdef12). | |
api_host | string | PostHog API host. Defaults to https://us.i.posthog.com. Use https://eu.i.posthog.com for the EU region. | |
ui_host | string | URL of the PostHog UI host, used by toolbar and replay player. Default: null. | |
persistence | Where to persist user identity. Default: "localStorage+cookie". | ||
person_profiles | When to create person profiles. "identified_only" (default) creates profiles only after identify() is called. | ||
autocapture | boolean | Enable PostHog's autocapture of clicks, form submits, and pageviews. Default: false (walkerOS sources handle capture). | |
capture_pageview | boolean | string | Whether PostHog should auto-capture pageview events. Default: false (walkerOS sources handle this). | |
capture_pageleave | boolean | string | Whether PostHog should auto-capture pageleave events. Default: false. | |
capture_heatmaps | boolean | Enable heatmap data capture. Default: true (PostHog default). | |
capture_exceptions | boolean | Enable automatic exception capture. Default: false. | |
disable_surveys | boolean | Disable PostHog surveys. Default: false. | |
disable_session_recording | boolean | Disable session recording. Default: false. | |
advanced_disable_flags | boolean | Disable 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. | |
debug | boolean | Enable PostHog SDK debug logging. Default: false. | |
session_recording | any | Session Replay options (SessionRecordingOptions). Masking, blocking, sampling. See PostHog docs for full list. | |
bootstrap | any | SSR bootstrap data. { distinctID?, featureFlags? } — pre-populates identity and flag values to avoid first-render flicker. | |
identify | any | walkerOS mapping value resolving to an identity object. Keys: distinctId, $set, $set_once. Resolved on first push and re-fired when distinctId changes. | |
group | any | walkerOS mapping value resolving to a group object. Keys: type, key, properties. Resolved on first push and re-fired when type/key changes. |
Mapping
Per-event rules under config.mapping. For the standard rule fields (consent, condition, data, batch, name, policy) see mapping.
| Property | Type | Description | More |
|---|---|---|---|
identify | any | Per-event identity mapping. Resolves to an object with any of: distinctId, $set, $set_once. Omitting distinctId routes to setPersonProperties() (no identity change). | |
group | any | Group assignment. Resolves to { type, key, properties? } → posthog.group(type, key, properties). | |
reset | any | Logout 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.
Consent revoked
A walker consent command with analytics denied calls posthog.opt_out_capturing to stop capture and replay.
Default capture
A walker event becomes a PostHog capture call with the event name and empty properties.
Destination identify
Destination-level identify calls posthog.identify with the user id before firing the default capture.
Include data
Destination-level include flattens the event data section into prefixed PostHog capture properties.
Group assignment
A company update assigns the user to a PostHog group and sets group properties via posthog.group.
Order complete
An order complete captures order data and globals as prefixed properties for revenue analysis in PostHog.
Set person properties
A profile update calls setPersonProperties to enrich the PostHog profile without changing identity.
Rule include overrides
A per-rule include replaces the destination-level include so this event forwards only globals.
User login identify
A user login fires PostHog identify with $set and $set_once person properties, skipping the capture.
User logout reset
A user logout calls posthog.reset to clear the distinct id and generate a new anonymous one.
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: trueto 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.