- 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 Sendlane. 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 order produces one event, so a single purchase cannot trigger the same flow twice.
- Bot and fraud filteringAutomated traffic never becomes a profile, so list quality and deliverability are not paying for it.
03 Activate
Delivered to Sendlane
Forward resolved customer events to Sendlane for retention and lifecycle flows.
See the Sendlane integration →
SendlaneWhat it receives email / phonecontact key across email, SMS and reviewsevent propertiesautomation triggersorder valueattribution
Which events reach Sendlane
Each Upstack event is mapped to the Sendlane event below before it is sent.
| Upstack event | Sent to Sendlane as | Key data on the event |
| Product view | product-viewed-upstackified | product_id, product_name, product_img_url, variant_id |
| Add to cart | added-to-cart-upstackified | line_items, subtotal, total, currency |
| Checkout | checkout-started-upstackified | checkout_id, line_items, subtotal, total, currency |
| Purchase | order-placed-upstackified | order_id, line_items, total, currency, discounts |
Upstack looks up each contact in Sendlane by email or Sendlane contact ID, and sends the event only if the contact already exists.
The catch
Shopify only knows a customer at checkout.
Everything before that (the browse, the add to cart, the return visit four days later) is anonymous unless something resolves it. That is the gap the flows fall into, not a problem with the flows.
Where to check in SendlaneSending you can audit
Sendlane › the contact record
where the event should appear against one person rather than creating a second contact.
What changes
What changes when Shopify feeds Sendlane. Two gains on the Sendlane side, two on the Shopify side.
Sendlane
Server-side delivery
Upstack sends events to Sendlane from its servers only, so ad blockers and browser privacy settings can’t block delivery.
Sendlane
Identity-resolved events
Events sent to Sendlane 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 a Sendlane account where you can generate an API Access Token and create a Custom Integration and owner or staff access to Shopify.
Upstack dashboardExample
Shopify Data source Connected
Sendlane Destination Healthy
Read the full Sendlane 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 Sendlane destination
Under Destinations, add Sendlane with two credentials: an API Access Token from Settings, API, and the Integration Token from a new Custom Integration under Integrations in Sendlane.
-
03
Check the contact’s activity feed
Trigger a test action on your store, such as adding a product to cart, and check the contact’s activity feed in Sendlane. Events are sent only for contacts that already exist in Sendlane.
FAQ
Questions about Shopify and Sendlane.
What happens if a contact doesn’t exist in Sendlane?
Upstack only sends events for contacts that already exist in Sendlane. If the visitor’s email isn’t found in your account, the event is skipped, which keeps your account clean and targets only real subscribers.
Will I get duplicate events if I keep Sendlane’s native Shopify integration?
Possibly. If both Upstack and Sendlane’s native integration track the same event types, Sendlane may record both, so disable the corresponding events in the native integration for any event types Upstack sends.
Which events does Sendlane receive?
ViewContent as product-viewed-upstackified, AddToCart as added-to-cart-upstackified, InitiateCheckout as checkout-started-upstackified and Purchase as order-placed-upstackified. Orders reach Upstack directly from Shopify, even when the browser pixel is blocked.
Which customer parameters are sent to Sendlane?
Upstack looks up each contact in Sendlane by email or Sendlane contact ID, and sends the event only if the contact already exists.
How do I check that Shopify events are reaching Sendlane?
Trigger a test action on your store, such as adding a product to cart, and check the contact’s activity feed in Sendlane. Events are sent only for contacts that already exist in Sendlane.
Do I need a developer to connect Shopify to Sendlane?
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.