PostHog HubSpot integration
Sync PostHog events into HubSpotCloud or self-hosted.
PostHog already knows what your users do. HubSpot is where your sales team works. Zoody is the wire between them. No warehouse, no reverse ETL, no engineering ticket.
Quick answer
Zoody pulls events, feature flag exposures, and cohorts from PostHog and writes them to HubSpot contact and company properties in under 30 seconds. It works the same way against PostHog Cloud and self-hosted. RevOps configures mappings in a UI, not in YAML, and there is no warehouse in the middle.
The data flow
Three boxes. No warehouse. Real-time when the event fires.
PostHog
Cloud or self-hosted. Events, feature flags, cohorts, persons.
Zoody
Maps events to HubSpot fields. Aggregates. Identity-resolves.
HubSpot
Contact + company properties. Lists, workflows, reports update.
What you can do once it is wired
PostHog's strengths show up in HubSpot the moment the sync is live.
Feature flag exposure on every contact
Stamp the flag variant onto the HubSpot contact the second it's evaluated. Now sales sees the version of the product the lead is actually using, and lifecycle workflows can branch on the experiment cell.
Cohort membership as a HubSpot list
Define a power-user cohort in PostHog (3+ logins, key event, no churn signal). Zoody mirrors the cohort to a HubSpot active list. Add to a nurture sequence in one click.
Session replay deep links in the contact view
Sales reps see the latest session replay URL on the HubSpot contact record. One click and they're inside PostHog watching how the lead used the product before the call.
Activation events trigger HubSpot workflows
A specific PostHog event (created_first_project, invited_teammate, ran_first_query) lands as a HubSpot timeline event and a property update. Workflows fire instantly: Slack the AE, queue an email, change lifecycle stage.
Group-level rollups for B2B accounts
PostHog groups become rollups on the HubSpot company record: total active users this week, MAU, key event count. Account-based plays now have account-level data to run on.
Pricing-page intent without GTM gymnastics
PostHog's autocapture already records pricing page visits. Zoody surfaces them as zo_pricing_visits_7d on the contact. No new tag, no new GTM container, no new CDP.
Connecting PostHog to HubSpot in four steps
- 1
Generate a PostHog personal API key
In PostHog, go to Settings, Personal API Keys, and create a key with read access to events, persons, cohorts, and feature flags. Copy your project API key from Project Settings as well. Self-hosted users grab the same two values from their instance.
- 2
Add the credentials to Zoody
In Zoody, pick PostHog as a source. Paste the host URL (https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL), the project API key, and the personal API key. Zoody runs a connection test against /api/projects so you'll know in seconds if anything is off.
- 3
Authorize Zoody on the HubSpot side
OAuth into HubSpot. Zoody requests scopes for contacts, companies, and timeline events. The flow takes one click for HubSpot Super Admins and produces a refresh token that Zoody manages on your behalf.
- 4
Map events and flags to HubSpot fields
Open the mapping UI. Pick a PostHog event, pick the HubSpot property to write into, pick the aggregation. Add as many mappings as you like. Toggle on, watch the first sync land in HubSpot within 30 seconds.
What you would do without Zoody
The three paths teams usually consider when they want PostHog data in HubSpot. Each one has a tax.
Custom webhook from PostHog actions to a HubSpot property
Works for one or two events. Falls over the moment you need aggregations (count of event in last 7 days), identity resolution, retries on HubSpot rate limits, or a mapping change without a deploy.
PostHog batch export to S3, then Snowflake, then Hightouch to HubSpot
Five tools, three contracts, one analytics engineer. Latency measured in tens of minutes. The Snowflake bill alone usually runs more than Zoody. Justifiable if HubSpot is one of many destinations, hard to justify if it's the only one.
Manual CSV exports from PostHog into HubSpot
Works as a one-off. Becomes a weekly ritual nobody owns. The data is stale by the time it lands. Sales loses trust in the property within a quarter.
Frequently asked questions
Does Zoody work with self-hosted PostHog?+
Yes. Zoody connects to PostHog Cloud (US or EU region) and any self-hosted PostHog instance reachable over HTTPS. Self-hosted setup uses your project API key and personal API key the same way the public PostHog API does. We do not require inbound network access into your infrastructure.
Which PostHog data types can I sync to HubSpot?+
Custom events (with their properties), pageviews, autocaptured events, feature flag exposures, cohort membership, person properties, and group properties for B2B accounts. You map each one to a HubSpot contact or company property and pick how to aggregate it: count, sum, last value, first value, or rolling window.
How does Zoody match PostHog persons to HubSpot contacts?+
By email, by distinct_id, or by a custom person property like hubspot_contact_id. If a PostHog person has not been identified yet, Zoody buffers their events and writes them to HubSpot the moment identify() fires with an email. You don't lose the pre-signup activity.
Can I sync PostHog feature flag exposures into HubSpot?+
Yes, and this is one of the more popular setups. Every time a flag is evaluated for a user, Zoody can stamp the variant they saw onto a HubSpot contact property like zo_flag_pricing_v2. Now your sales team sees which experience the lead got, and your lifecycle workflows can branch on it.
What about PostHog session replay - can I link replays from HubSpot?+
Zoody writes the most recent session replay URL to a HubSpot contact property. Sales reps clicking into a contact in HubSpot see a deep link straight to the replay in PostHog. The replay itself stays in PostHog where access controls and retention live.
Get PostHog data into HubSpot this week
The beta cohort is small and hands-on. Direct access to the founder while we tune the PostHog source against real workloads. Free for the duration of beta.