Connecting PostHog
How to connect a PostHog project with a Personal API key so Ordinary pulls daily traffic totals and your own PostHog events from it, and where they show up.
On this page
PostHog connects on every plan.
Connecting PostHog pulls daily totals from your PostHog project: visitors, sessions, pageviews, session length, bounce rate, device split, referrer mix, and purchase-funnel counts (checkouts started and purchases).
What the PostHog integration does NOT do: it does not replace or supplement Ordinary’s session and traffic numbers. Our first-party pixel is the single source of truth for sessions, devices, funnel steps, and attribution. PostHog sessions will usually differ from Ordinary (different session definitions, bot filtering, SDK capture rules) and that’s expected — we never composite the two.

Before you start
- You already have PostHog installed on your Shopify storefront.
- You can create a PostHog Personal API key in that project.
PostHog doesn’t offer OAuth, so the connection uses a Personal API key. Ordinary stores it encrypted.
Step 1 — get your PostHog details
- Sign in to PostHog.
- Create a Personal API key (Project Settings → Personal API
Keys) and copy it. It starts with
phx_. - Copy your Project ID from the top of Project Settings. It’s a number.
Step 2 — enter them in Ordinary
- Go to Settings → PostHog and click Connect PostHog.
- In the Configure PostHog window, fill in:
- Host —
eu.posthog.comfor EU cloud (the default) orus.posthog.comfor US cloud. Self-hosted PostHog uses your own domain. - API Key — the Personal API key.
- Project ID — the number you copied.
- Host —
- Click Save.
The card then shows Connected. To change any value later, click Edit configuration.
What flows in
Daily totals, one row per day:
-
Unique visitors, sessions and pageviews.
-
Average session length and bounce rate.
-
Mobile vs desktop sessions.
-
Referrer mix (direct, organic search, social and other referrers).
-
Checkouts started and purchases.
-
Your own events — daily counts of your custom events, split by the campaign source of the visit. PostHog’s own events ($pageview, $autocapture and the rest of the $-prefixed events) and purchase-type events are left out: your orders already come from Ordinary’s own tracking.
These are counts only. Individual events, cohorts and person profiles are not imported.
Where it shows up
Marketing Mix → Your PostHog events, under the channel cards. It only appears once PostHog is connected.
- Top events — tiles for your most frequent events in the selected date range, with the change against your comparison period when one is selected.
- Events by channel — pick an event. The table lists the same channels as the cards above it, with that event’s count from PostHog, the orders Ordinary attributes to the channel, and the event-to-order rate (orders ÷ events). The orders column follows the attribution model selected at the top of the page.
Event counts come from PostHog. Orders and attribution come from Ordinary’s own tracking. A visit counts toward a channel from its campaign tags (or a Google Ads click); a visit that only has a referring site counts as Direct, the same way Ordinary attributes its orders. If GA4 is connected too, a picker on the section switches between GA4 and PostHog.
Refresh cadence
- Every hour, Ordinary refreshes today’s totals and re-pulls yesterday’s, so late-arriving events are picked up.
- Data starts from the day you connect. Earlier days aren’t imported.
Disconnecting
Settings → PostHog → Disconnect. Ordinary deletes the stored API key and stops pulling data. The key itself stays valid in PostHog; revoke it there under Personal API Keys if you no longer need it.
Troubleshooting
Ordinary saves your details as entered and pulls data on the next hourly refresh. If no PostHog data appears after that:
- Check the API key. It may have expired or been revoked. Create a new one in PostHog, open Edit configuration, paste it and click Save.
- Check the Project ID. Copy it exactly from PostHog’s Project Settings.
- Check the Host. It must match your project’s region.
- Check PostHog is receiving events. Look at PostHog’s activity view first.