Skip to main content
  1. Home
  2. Connectors
  3. Custom stack - PostHog
Custom stack PostHog

Send every Custom stack event to PostHog, server-side

Each event is resolved to a person against a 750M+ device graph before it reaches PostHog, so records and reporting reflect the person, not the device.

US device IDs in the graph
750M+
Match rate on events
90%+
Identity window, per customer
Lifetime
Most brands are live
<20 min

How it flows

How a Custom stack event reaches PostHog. Captured on the server, resolved to a person, then sent.

01 Capture

Captured from Custom stack

Not on the list? Send events to Upstack from any stack over webhook or direct post, with the same schema and the same resolution.

See the Custom stack integration
Custom stackWhat it sends
  • event_namewhatever you choose to call it
  • user identifiersany of email, phone, external ID
  • value / currencyif the event carries revenue
  • custom propertiesany attribute in your own schema

02 Understand

Resolved to one person before it leaves

Every Custom stack event is matched against a 750M+ device graph, so a phone browse and a desktop checkout resolve to one customer rather than two strangers.

How resolution works
Upstack DataResolved before it is sent
  • IdentityMatched against a 750M+ device graph, so a phone browse and a desktop checkout resolve to one customer.
  • customer_typeNew or returning, resolved before send.
  • DeduplicationOne person, one record, across devices and identifiers.
  • Bot and fraud filteringAutomated traffic never becomes a contact.

A CRM is only as trustworthy as its worst duplicate. These controls exist so the record reflects the person.

03 Activate

Delivered to PostHog

Stream resolved product and commerce events into PostHog for analysis on a person, not a session.

See the PostHog integration
PostHogWhat it receives
  • distinct_idthe person, across devices
  • event name and propertiesfunnels and retention
  • $set person propertiesuser-level attributes

Which events reach PostHog

Each Upstack event is mapped to the PostHog event below before it is sent.

Upstack eventSent to PostHog as
Page view$pageview
Product viewview_item
Add to cartadd_to_cart
Checkoutinitiate_checkout
Purchasepurchase

Each event carries Upstack’s resolved distinct_id, which persists across sessions, plus email when the visitor is identified, IP address, user agent and device details.

The catch

Without a canonical person ID, a custom event stream produces a contact per identifier rather than a contact per person.

Where to check in PostHogRecords you can audit

PostHog Activity

then check that a single person shows events from more than one device.

What changes

What changes when Custom stack feeds PostHog. Two gains on the PostHog side, two on the Custom stack side.

PostHog

Server-side delivery

Upstack always sends events to PostHog from its servers as well as through the PostHog snippet, so an event an ad blocker or browser privacy setting stops in the browser still arrives from the server.

PostHog

Identity-resolved events

Events sent to PostHog carry the resolved customer whenever Upstack can identify one, matched against a 750M+ device graph.

Custom stack

Any stack, any framework

Headless, custom checkout, native app or a platform we haven’t listed: if it can make an HTTP request, it can send to Upstack.

Custom stack

The same event schema

Custom events are resolved, filtered and forwarded exactly like a Shopify order.

Setup

Post directly from your backend so nothing depends on the browser.

You need your PostHog Project API Key from Project Settings and the data region, US or EU, where your project is hosted.

Upstack dashboardExample
Custom stack Data source Connected
PostHog Destination Healthy
Read the full PostHog setup guide
  1. 01

    Connect Custom stack

    Not on the list? Send events to Upstack from any stack over webhook or direct post, with the same schema and the same resolution.

  2. 02

    Add the PostHog destination

    Under Destinations, add PostHog with your Project API Key, which starts with phc_, and the Data Region (US or EU) that matches where your PostHog project is hosted.

  3. 03

    Check Live Events in PostHog

    Visit your store, view a product or add to cart, and confirm the event appears in PostHog under Activity, Live Events.

FAQ

Questions about Custom stack and PostHog.

How does Upstack identify users in PostHog?

Upstack assigns each visitor a consistent distinct_id that persists across sessions, devices and browsers when it can resolve the visitor’s identity. Anonymous visitors get a temporary ID that Upstack tries to merge once the visitor is identified.

Will I see duplicate events if I also have PostHog installed via another method?

Possibly. If PostHog’s JavaScript snippet or another integration sends the same events, you may see duplicates, so disable overlapping event types in either Upstack or the other integration.

Which events does PostHog receive?

PageView as $pageview, ViewContent as view_item, AddToCart as add_to_cart, InitiateCheckout as initiate_checkout and Purchase as purchase.

Which customer parameters are sent to PostHog?

Each event carries Upstack’s resolved distinct_id, which persists across sessions, plus email when the visitor is identified, IP address, user agent and device details.

How do I check that Custom stack events are reaching PostHog?

Visit your store, view a product or add to cart, and confirm the event appears in PostHog under Activity, Live Events.

Related connectors

See all 408 connectors

Get Custom stack talking to PostHog.

A 15-minute walkthrough of this connector on your own account.

21-day free trial, no card. Month to month.