- 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 Shopify event reaches PostHog. Captured on the server, resolved to a person, then sent.
01 Capture
Captured from Shopify
One Upstack app setup that captures Shopify storefront and checkout events with the Upstack Pixel, records every order directly from Shopify, and forwards both to every tool you spend on.
See the Shopify integration →
ShopifyWhat it sends order_idShopify order and checkout tokenemail / phonecustomer contact from checkoutcustomer_idShopify customer record, if they have oneline_itemsproducts, variants and quantitiestotal / subtotal / discountorder economics
02 Understand
Resolved to one person before it leaves
Every Shopify 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 →
Resolved 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.
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 devicesevent 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 event | Sent to PostHog as |
| Page view | $pageview |
| Product view | view_item |
| Add to cart | add_to_cart |
| Checkout | initiate_checkout |
| Purchase | purchase |
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
Shopify's customer ID and the email a shopper types at checkout are frequently not the same person over time.
Treating either as the primary key on its own is how a CRM ends up with duplicate contacts that never merge.
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 Shopify feeds PostHog. Two gains on the PostHog side, two on the Shopify 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.
Shopify
Orders recorded from Shopify itself
Purchases also reach Upstack directly from Shopify, about 10 minutes after the order, so an order still counts when an ad blocker stopped the pixel or the shopper closed the page.
Shopify
Recognize returning customers
Shopify customer IDs, emails and phones are matched against the graph, so repeat buyers are identified across devices.
Setup
Live in under 20 minutes.
App install, no theme edits and no developer. You need your PostHog Project API Key from Project Settings and the data region, US or EU, where your project is hosted and owner or staff access to Shopify.
Upstack dashboardExample
Shopify Data source Connected
PostHog Destination Healthy
Read the full PostHog setup guide → -
01
Connect Shopify
In the Upstack dashboard, open System, then Data Sources, and click Connect Shopify. Approve the install in your Shopify Admin: Upstack reads products, orders and customers, and writes only its own pixel.
-
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.
-
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 Shopify 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. Orders reach Upstack directly from Shopify, even when the browser pixel is blocked.
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 Shopify 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.
Do I need a developer to connect Shopify to PostHog?
No. Shopify connects as an app install with no theme edits, and most brands are live in under 20 minutes. Headless storefronts add the Upstack Pixel script instead of the theme app extension.