Findry
Get started
Platform

Connect PostHog

Personal API Key setup, host + project ID, and what happens after the validation ping comes back green.

5 min

Contents
PostHog deep dives
On this page

Before you start

You'll need workspace admin role in Findry and project admin role in PostHog (so you can mint a Personal API Key). The connection is one-time per workspace; every project in the workspace inherits it.

Findry stores the key encrypted at rest (AES-256-GCM) in theintegrations.access_token_ciphertext column. Only the adapter layer ever decrypts it — never the UI, never the audit log.

Create the API key

  1. In PostHog: Project Settings → Personal API Keys
  2. Click Create personal API key
  3. Name it something memorable, e.g. findry · Acme workspace
  4. Scopes: annotations:write,cohorts:read, feature_flags:read,insight:read, query:read,survey:read. The read all shortcut is fine for a first connection.
  5. Copy the key — PostHog only shows it once.

The key is workspace-scoped on the Findry side. If you connect a different Findry workspace later, mint a separate key from the same PostHog project — sharing keys across workspaces is discouraged because revocation becomes coupled.

Connect in Findry

  1. In Findry: Settings → Integrations → PostHog tile → Connect
  2. Host — your PostHog base URL.
    • https://us.posthog.com for US Cloud
    • https://eu.posthog.com for EU Cloud
    • Your full self-hosted URL (no trailing slash) for self-hosted
  3. Project ID — the numeric ID from your PostHog project URL. PostHog URLs look likehttps://us.posthog.com/project/12345/insights — the 12345 is the project ID.
  4. API key — paste the one you just created.
  5. Click Save. Findry pings/api/projects/<id>/ immediately to validate three things at once: the host is reachable, the key is live, and the key has access to the project ID you supplied.
  6. On success, the tile flips to connected and shows the project's display name (cached locally so the settings page doesn't re-call PostHog on every render).

What happens next

Connection alone activates several surfaces — you don't need to configure anything else to use them:

  • Cohort + flag pickers in the bet promotion form start populating from your PostHog project
  • PostHog Surveys become listable in the integrations tile (with a per-survey opt-in toggle for import)
  • Annotations push defaults ON — when a bet promotes, ships, or its outcome verdict lands, Findry drops a vertical line on every PostHog metric chart in the project. Toggle off in the same tile if you'd rather not.
  • The Add metric mapping form in the integrations tile becomes usable for binding metrics to PostHog data

The next two things you'll likely do are (a) define a metric inSettings → Metrics and (b) map it to PostHog data. That's covered in the next guide: Metrics + mappings.

Troubleshooting

Validation ping returns "PostHog rejected the API key"

The key is unrecognized or revoked. Three checks: the key has been saved correctly (no leading/trailing whitespace), the key has not been deleted in PostHog since you copied it, and the key was minted on a Personal API Key (not a Project API Key — those are write-only keys for SDKs and won't authenticate Read endpoints).

"PostHog project N not found"

Either the project ID is wrong, or your API key doesn't have access to that project. PostHog's Personal API Keys can be scoped to a subset of projects on Cloud Enterprise; verify in PostHog underProject Settings → Personal API Keys → [your key]that the project list includes the ID you're connecting.

"Couldn't reach PostHog: network timeout"

Self-hosted PostHog instance. Verify the host URL resolves from a public network (Findry's adapter doesn't run in your VPC). If your PostHog is behind a VPN or firewall, allowlist34.198.78.179/32 and the other Vercel egress ranges per https://vercel.com/docs/edge-network/regions#europe.

"Couldn't reach PostHog: 429"

PostHog rate-limited the validation call. This is rare — the ping is a single GET. Wait 60 seconds and retry. If it persists, your PostHog project may have an aggressive rate limit on Personal API Key requests; raise the limit in PostHog or contact their support.

Disconnect cleanly

Settings → Integrations → PostHog tile → Disconnect. Findry zeros out the encrypted token + flips the row todisconnected_at = now().

What survives disconnect (intentional):

  • Annotations already pushed to PostHog — Findry never deletes external state on its own state changes. The annotations stay as historical context.
  • Survey responses already imported as Signals — same rule. The Signals are first-class Findry data now.
  • Mapping configurations — the rows stay. If you reconnect the same PostHog project, mappings resume working automatically. If you reconnect a different project, you'll get "event not recognized" warnings on the next outcome run.

What stops working: outcome metric pulls, cohort + flag pickers, new annotation pushes, new survey imports. All three gracefully return empty / no-op rather than crash.

PreviousPostHog deep divesUp nextMetrics + mappings