If your app already sends events to PostHog, this is the fastest way in. You don't install anything.
Connect
- On Activation, click Connect PostHog.
- Sign in to PostHog and pick the one project your app sends to. PennyPost works out whether it's PostHog US or EU on its own.
- You come back to PennyPost, which shows "Reading your last 14 days from PostHog..." and updates by itself.
PennyPost asks for query:read on that one project and nothing else. It can't change anything in your PostHog, and it doesn't create anything there.
What it reads
- People PostHog first saw in the last 14 days who have an
emailperson property. People without an email are skipped, because there's nobody to write to. - Their
$pageviewevents, by path. - Your "results are ready" event and your first-action event, once they're known (see below).
After the first import it reads again every 5 minutes. Nobody gets an email about the past: the 14-day import fills the report only, and people from it don't count toward your plan.
If PennyPost finds nobody with an email, the page says so. Add the email when you call identify in PostHog, and new signups will show up.
What it guesses
From those 14 days, PennyPost guesses four things and shows them on the From PostHog card on Activation:
- The page that shows a first result, like
/resultsor/projects/*/render. - Where people set up, like
/onboarding, or no setup at all. - The event that means results are ready, like
render_finished. It looks for event names with words such as ready, complete, finished, generated or processed. If none match, it's left empty and the "left before results were ready" moment stays off. - The first real action, like
scan_started, from names with words such as start, create, generate, upload or run.
Click Change on the card to correct any of them. Changing an event re-reads the 14 days.
Ad blockers
Brave and most ad blockers block requests to posthog.com, so PostHog never sees some of your users, and neither does PennyPost. If fewer than half of your page views in the last week came through your own domain, the card says so and links to PostHog's guide on sending PostHog through your domain.
If something goes wrong
- "Pick one project on PostHog's screen, then connect again." You didn't pick a project.
- "PostHog didn't let us read that project." Connect again and pick the project your app actually sends to.
- "That took too long." The PostHog sign-in has 10 minutes. Start again.
Without OAuth
If you'd rather push events than let PennyPost read them, use a PostHog HTTP Webhook destination instead. It's under Other ways to connect on Activation, and it costs PostHog events beyond their free tier (PennyPost shows an estimate). Most people should use the one-click connection.