- 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 Klaviyo. 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 Klaviyo
Attach re-identified emails to events before they reach Klaviyo, so browse and cart flows fire for people the pixel lost.
See the Klaviyo integration →
KlaviyoWhat it receives email / phonethe profile key: no profile, no sendexternal_idtie a browse to a known person$valueflow and campaign revenue attributionevent propertieswhat the flow branches on
Which events reach Klaviyo
Each Upstack event is mapped to the Klaviyo event below before it is sent.
| Upstack event | Sent to Klaviyo as | Key data on the event |
| Product view | Viewed Product | ProductName, ProductID, Price, ImageURL |
| Add to cart | Added to Cart | ProductName, ProductID, Price, Quantity, CartValue |
| Checkout | Started Checkout | CartValue, ItemCount, CheckoutURL |
| Purchase | Placed Order | OrderID, Revenue, Items, DiscountCodes |
Upstack’s identity resolution attaches the visitor’s email before an event is forwarded, and syncs profile properties ($first_name, $last_name, $city, $region) plus custom identity properties to Klaviyo.
Shopify to Klaviyo, in detail
How the Klaviyo Shopify integration and Upstack work together.
Klaviyo’s own Shopify integration identifies a shopper when they fill in a Klaviyo form, click a Klaviyo email or SMS, or check out, and only in that browser. Keep it installed. Upstack adds the returning visits Klaviyo misses on another device, in another browser or after Safari deletes its cookie: it matches each one to a known customer and sends the event to Klaviyo with their email attached, so your flows fire for them too.
| Shopify event | Klaviyo metric |
| Product view ProductName, ProductID, Price, ImageURL. Triggers browse abandonment. | Viewed Product - Upstackified |
| Add to cart ProductName, ProductID, Price, Quantity, CartValue. Triggers abandoned cart. | Added to Cart - Upstackified |
| Checkout started CartValue, ItemCount, CheckoutURL. Triggers checkout abandonment. | Checkout Started - Upstackified |
| A return visit Triggers site abandonment. | Active on Site - Upstackified |
| Order OrderID, Revenue, Items, DiscountCodes. Powers post-purchase and win-back flows. | Placed Order - Upstackified |
Server-side events carry the “ - Upstackified” suffix by default. Turn on Use Standard Event Names on the destination to drop it. Upstack also syncs $first_name, $last_name, $city and $region, plus custom identity properties you can segment on.
Klaviyo’s native Shopify metrics
If Shopify’s Klaviyo integration also records Viewed Product, Added to Cart, Started Checkout or Placed Order, disable those overlapping metrics there, and keep the native integration on for everything Upstack doesn’t send.
One source per flow trigger
Use one source of Added to Cart events per flow, so the same shopper doesn’t enter a flow twice from two integrations.
Shopify’s own abandoned checkout emails
Turn them off under Apps, Messaging, Automations in Shopify, so shoppers don’t get two sets of reminders.
Flows from a previous tool
If Elevar, Triple Whale or another tool created secondary Klaviyo flows, disable them before Upstack’s go live. Running both sends duplicate emails.
Identity
Profiles, flows and anonymous visitors.
Klaviyo flows are metric-triggered: a profile enters the flow when the event lands on it. An add to cart from a browser Klaviyo can’t tie to a person has no profile, so the flow doesn’t fire.
How a visitor is matched
Upstack’s identity resolution runs on its servers, independent of the browser. It matches the visit against its identity graph using the IP address, user agent, device and hashed identifiers from earlier sessions, so it survives a new device, an expired cookie or an in-app browser. Then it sends the event to that person’s Klaviyo profile with their email attached.
The waterfall of flows
The Upstack team clones your browse, cart, checkout and site abandonment flows as “ - Upstack Data” copies triggered by the Upstackified metrics. Each copy waits 30 minutes longer than the original, and a 7-day exclusion filter in both directions means nobody gets both. Setup usually takes 48 to 72 hours, and your original flows stay as they are.
Visitors who never gave you an email
First-party matching only finds customers you already know. A shopper who has never given you an email stays anonymous in Klaviyo, and no flow can reach them. Reaching them takes third-party identification such as Upstack Audience, which adds them as new profiles on a list called UpstackData.
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 KlaviyoSending you can audit
Klaviyo › Analytics › Metrics
The event appears as its own metric, and the profile count on it is the number you were losing before.
What changes
What changes when Shopify feeds Klaviyo. Two gains on the Klaviyo side, two on the Shopify side.
Klaviyo
Recover carts you couldn’t email
Anonymous browsers are resolved to a known profile, so abandonment flows can trigger for visitors Klaviyo never identified.
Klaviyo
Profiles, not sessions
Events arrive attached to a resolved customer, so flow logic and segmentation work on a person.
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 admin access to a Klaviyo account, with permission to create a Private API key with Full Access and owner or staff access to Shopify.
Upstack dashboardExample
Shopify Data source Connected
Klaviyo Destination Healthy
Read the full Klaviyo 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
Create a Klaviyo private API key
In Klaviyo, open Settings, Account, API Keys and create a Private API key named UpstackData with Full Access. It starts with pk_ and is shown only once.
-
03
Add the Klaviyo destination
Under Destinations, click New Destination, choose Klaviyo, paste the key with no extra spaces and click Create Configuration.
-
04
Turn off the overlap in Shopify
In Shopify’s Klaviyo integration, disable the metrics Upstack now sends. Under Apps, Messaging, Automations, turn off Shopify’s own abandoned checkout emails.
-
05
Ask Upstack to set up the abandonment flows
Email support@upstackdata.com. The team clones your abandonment flows, adds the 30-minute delay and the 7-day exclusion filters, and turns on UTM tracking on every email and SMS so flow revenue shows up in Upstack.
-
06
Check the metrics in Klaviyo
Analytics, Metrics shows Viewed Product, Added to Cart, Checkout Started and Active on Site with the Upstackified suffix within a few minutes of live traffic.
After setup
What to check in Klaviyo.
Upstack shows the Klaviyo destination as Healthy.
Analytics, Metrics lists the Upstackified metrics within a few minutes of live traffic.
A profile’s Activity Feed shows Upstack events after a test visit.
Each “ - Upstack Data” flow is Live, its step statuses match the original, and its Analytics tab shows profiles entering within 24 to 48 hours.
A spot-checked recipient didn’t also get the standard flow’s email within the same 7 days.
Troubleshooting
Common problems and fixes.
-
Upstack events don’t appear in Klaviyo
Check the destination is Healthy and the key isn’t read-only, then search Metrics for “Upstackified”: the events may be arriving under that name. If the destination is red, reconnect with a fresh key.
-
Shoppers get two abandonment emails
Add the exclusion filter to both flows (Has received email 0 times in last 7 days where Flow is the other flow), with the flow names exactly as they appear, and disable flows from previous tools.
-
Low volume on the Upstack flows
Expected in the first few days. If it stays low after two weeks, check no other tool, such as Triple Whale, is running conflicting flows.
-
A flow doesn’t send
Both the standard and the Upstack flow must be Live, with each email step set to the same status as the original.
FAQ
Questions about Shopify and Klaviyo.
How do I connect Klaviyo to Shopify with Upstack?
Keep Klaviyo’s own Shopify integration installed. Connect Shopify to Upstack, create a Full Access private API key named UpstackData in Klaviyo and add it as the Klaviyo destination, then ask Upstack’s team to set up the abandonment flows. Most brands are live in under 20 minutes; the flows usually take 48 to 72 hours.
How does Upstack increase the number of abandoned cart flows that fire?
Shopify can only fire Klaviyo’s abandoned cart flow when it knows the visitor’s email. Upstack matches anonymous sessions to known customer profiles using cookies, click IDs and cross-session behavior, then forwards an enriched Added to Cart event so the flow fires for visitors Shopify could not identify.
Will I see duplicate events if Klaviyo’s native Shopify integration is also active?
You can. Disable the metrics in Shopify’s native Klaviyo integration that overlap with the events Upstack forwards (Viewed Product, Added to Cart, Started Checkout, Placed Order), and keep the native integration on for any events Upstack is not handling.
Which events does Klaviyo receive?
ViewContent as Viewed Product, AddToCart as Added to Cart, InitiateCheckout as Started Checkout and Purchase as Placed Order. Orders reach Upstack directly from Shopify, even when the browser pixel is blocked.
Which customer parameters are sent to Klaviyo?
Upstack’s identity resolution attaches the visitor’s email before an event is forwarded, and syncs profile properties ($first_name, $last_name, $city, $region) plus custom identity properties to Klaviyo.
How do I check that Shopify events are reaching Klaviyo?
Upstack marks the destination Healthy, and Analytics, Metrics in Klaviyo shows Upstack events such as Added to Cart - Upstackified within a few minutes of live traffic. Then contact Upstack support to set up your Upstack abandonment flows.
Do I need a developer to connect Shopify to Klaviyo?
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.
Do I have to replace my Klaviyo flows?
No. Your standard flows keep catching the visitors Klaviyo identifies itself. The Upstack copies catch the ones it misses, 30 minutes later, and a 7-day exclusion filter on both stops anyone getting both.
Can Klaviyo send abandoned cart emails to anonymous visitors?
No. A flow needs a profile with a way to contact the shopper. Klaviyo can store an anonymous visitor’s activity and add it to their profile if they identify themselves later in the same browser, but the cart doesn’t trigger a flow while they’re anonymous. Upstack closes the gap for shoppers you already know; reaching the rest takes third-party identification.
Which Klaviyo flows does Upstack add?
Copies of your browse, cart, checkout and site abandonment flows, triggered by Viewed Product, Added to Cart, Checkout Started and Active on Site with the Upstackified suffix. They use the same emails and steps as your originals.
Keep reading
More on Shopify and Klaviyo.