SaaSFunnelsDocs
Integrations and Sources

PostHog Source Setup

Forward selected PostHog product events into SaaSFunnels with a scoped ingest key.

Use PostHog when your product events already flow through PostHog and you want to forward a small, high-signal allowlist to SaaSFunnels.

Open Settings > Integrations > PostHog in SaaSFunnels to create credentials and review activity.

What PostHog should send

Forward custom product or revenue events that include account identity. Good examples include:

  • pricing_viewed
  • workspace_created
  • onboarding_completed
  • upgrade_clicked
  • limit_hit
  • subscription_updated
  • invoice_payment_failed
  • workspace_invited
  • integration_connected
  • integration_configured
  • team_member_invited
  • downgrade_page_viewed
  • cancel_started

Do not forward every PostHog SDK/system event. Events whose names begin with $ are usually diagnostic in SaaSFunnels and should not be treated as customer evidence. The exceptions are $identify and $set, which carry user names and emails (see below).

Required fields

PostHog payloads should include:

  • event
  • uuid or id
  • timestamp
  • properties.distinct_id
  • An account identity such as properties.account_id, properties.group_id, properties.workspace_id, or $groups.workspace

For SaaSFunnels app events, properties.workspace_id is used as the customer/account identity.

Account facts

When PostHog already has account or group traits, forward the standard SaaS facts in properties with the event allowlist:

  • account_created_at, signup_at, or customer_created_at
  • plan, plan_name, or current_plan
  • account_status or subscription_status
  • is_in_trial, trial_started_at, and trial_ends_at when Stripe is not connected
  • user_count, active_user_count, seat_count, or member_count

Stripe remains authoritative for billing and trial state when connected. PostHog should not forward raw user lists, support text, query strings, or free-form cancellation reasons.

User names and emails

Include $identify and $set in the Data Pipelines filter. SaaSFunnels reads name (or first_name and last_name) and email from $set and keeps them against the event's distinct_id, so each Account lists its users by name. These events aren't stored as activity, and emails stay out of event properties.

Setup steps

  1. Open Settings > Integrations > PostHog.
  2. Create a PostHog intake credential.
  3. Copy the endpoint and Authorization: Bearer <key> header.
  4. In PostHog, create a Data Pipelines webhook destination.
  5. Set the destination URL to the SaaSFunnels PostHog endpoint.
  6. Add the Authorization header.
  7. Forward only selected custom revenue or product events.
  8. Exclude PostHog SDK/system events whose names begin with $.
  9. Send a custom test event with account identity.
  10. Return to SaaSFunnels and confirm recent normalized PostHog activity.

The PostHog destination test button may send $pageview. SaaSFunnels can receive that as a diagnostic, but it does not complete customer-event setup.

Sample event shape

{
  "event": "onboarding_completed",
  "properties": {
    "app_area": "onboarding",
    "account_created_at": "2026-06-01T12:00:00.000Z",
    "active_user_count": 6,
    "distinct_id": "user_456",
    "is_in_trial": true,
    "plan": "starter",
    "seat_count": 10,
    "trial_ends_at": "2026-06-28T12:00:00.000Z",
    "workspace_id": "acct_or_workspace_123"
  },
  "timestamp": "2026-06-20T15:00:00.000Z",
  "uuid": "ph_evt_001"
}

Verify setup

  1. Open Settings > Integrations > PostHog.
  2. Confirm the status is ready or connected.
  3. Check last activity and issues.
  4. Open Events and filter source by PostHog.
  5. Confirm the rows are customer events, not only diagnostics.
  6. Confirm mappings for the PostHog events.
  7. Re-run the Revenue Signal Scan.