PostHog as a source
Forward product events and person traits from PostHog into getuserfeedback.com for targeting and context.
- Last reviewed
PostHog as a source
Use this when PostHog already sees your product activity and you want that activity available for survey targeting and response context.
Each PostHog event becomes a track event in getuserfeedback.com. If the webhook includes a person, their properties become traits on the resolved profile.
1. Create the integration
- Open Integrations and click New integration.
- Under Data in, choose PostHog.
- Click Create integration.
You'll land on the integration detail page. Copy the Webhook URL shown there. It points at the ingestion subdomain and looks like:
https://posthog.ingest.getuserfeedback.com/int_<id>Copy the Shared secret too. PostHog needs to send it with every webhook request.
2. Add an HTTP Webhook destination in PostHog
- In PostHog, open Data pipelines.
- Click New → Destination.
- Search for Webhook and create the HTTP Webhook destination.
- Paste the Webhook URL from step 1.
- Leave the JSON Body unchanged. PostHog's default templated body sends the event and person data we use.
- Add the shared secret as either:
- an
Authorizationheader withBearer <shared secret> - an
x-getuserfeedback-webhook-secretheader with the raw secret
- an
- Create and enable the destination.
PostHog will start sending matching events to getuserfeedback.com.
If you also want to send PostHog group or project metadata, customize the PostHog JSON Body:
{"event": "{event}","person": "{person}","groups": "{groups}","project": "{project}"}3. Verify it's working
Use PostHog's destination testing panel to send a test event. Then open
Users in getuserfeedback.com. The user should appear within a
few seconds when the event carries a distinct_id, a distinct ID in
properties, or a person ID.
What we accept
We accept PostHog's default HTTP Webhook body:
{"event": {"uuid": "018f5d75-2222-7000-9000-abcdefabcdef","event": "$pageview","distinct_id": "user_123","timestamp": "2026-06-16T03:04:05.000Z","properties": {"$current_url": "https://app.example.com/dashboard?tab=home","$title": "Dashboard"}},"person": {"id": "person_123","name": "Jane Customer","properties": {"email": "jane@example.com","plan": "team"}}}We also accept PostHog webhook bodies where the event is nested under event,
and batch envelopes with a batch array.
How events map
eventbecomes the track event name.propertiesare stored as event properties.distinct_idbecomes aposthog_distinct_idexternal ID.person.idbecomes aposthog_person_idexternal ID.person.propertiesbecome profile traits. Ifperson.nameis present and nonametrait is set, it becomestraits.name.properties.$current_urlbecomes the page URL, path, and query string in event context.- If present,
groupsare stored on the event as$posthog_groups. - If present,
projectis stored in the event's integration metadata.
Events without a uuid must include a timestamp so getuserfeedback.com can
create a stable fallback message ID. Events without a usable identity are
skipped.
What can break
- PostHog shows 401 responses. Check that the destination sends the shared
secret as a Bearer token or
x-getuserfeedback-webhook-secretheader. - No user appears. Confirm the event has
distinct_id,person.id, or a distinct ID inproperties.distinct_idorproperties.$distinct_id. - Page targeting looks wrong. Send the browser URL in
properties.$current_url. PostHog's top-level event URL points back to PostHog and is not used as the customer page URL. - Events are skipped in a batch. One malformed batch item is skipped, but valid items in the same batch are still processed.