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.
- Configure the destination fields:
| Field | Value |
|---|---|
| Webhook URL | Paste the Webhook URL from step 1. |
| Method | POST |
| JSON Body | Keep PostHog's default body: {"event":"{event}","person":"{person}"} |
| Headers | Keep Content-Type: application/json, then add Authorization: Bearer <shared secret>. |
- Leave filters off until the test works. After that, use PostHog filters if you only want to forward specific events.
- Keep Log responses off after adding the shared secret. PostHog logs can include configured request inputs, including headers.
- Click Create & Enable.
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 before you enable the destination:
{"event": "{event}","person": "{person}","groups": "{groups}","project": "{project}"}3. Verify it's working
In PostHog, use the destination configuration page:
- Open the Testing section.
- Click Start testing.
- Click Test function.
PostHog should show a successful HTTP response from getuserfeedback.com. Then
open Users. 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
Authorization: Bearer <shared secret>. - 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.