Skip to main content
Upstack Data

Klaviyo integration: server-side events resolved to a known profile

Attach re-identified emails to events before they reach Klaviyo, so browse and cart flows fire for people the pixel lost.

Role
Destination
Category
Email & SMS
Pre-built connectors
12 sources
Plans
All plans

What Upstack sends

Every event reaches Klaviyo attached to a profile. Captured on the server, resolved to a person, then sent.

In: from Shopify1 of 12 sources
  • order_idShopify order and checkout token
  • email / phonecustomer contact from checkout
  • customer_idShopify customer record, if they have one
  • line_itemsproducts, variants and quantities
  • total / subtotal / discountorder economics

Storefront events from the Upstack Pixel, orders directly from Shopify.

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 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.
Out: to KlaviyoOn every event
  • email / phonethe profile key: no profile, no send
  • external_idtie a browse to a known person
  • $valueflow and campaign revenue attribution
  • event propertieswhat the flow branches on

Flows fire for visitors the pixel lost.

About Klaviyo

Klaviyo’s ceiling is the size of the audience it can identify, not the quality of your flows.

Upstack resolves anonymous sessions against a 750M+ device graph before events reach Klaviyo, so browse and abandonment flows fire for visitors Klaviyo never had a profile for. The flows do not change; the number of people they can reach does. The same resolved order also powers Klaviyo’s revenue attribution and the conversions sent to your ad platforms, so the two reports stop disagreeing about the same month.

What Klaviyo is

Klaviyo is the email and SMS platform most DTC brands run retention on: flows, campaigns, segmentation and the revenue attribution that comes with them.

Klaviyo can only message a profile it knows about. Every anonymous session is an abandonment flow that never fires, which is why the size of your identified audience sets the ceiling on flow revenue.

How Klaviyo works

Klaviyo is built around the profile. Every event it receives is attached to a profile keyed on email or phone; if neither is present and no existing profile matches, there is nothing to attach the event to. Flows are triggered by metrics (Started Checkout, Viewed Product, Placed Order) and branch on profile properties and event data. Campaigns target segments built from those same properties. Revenue attribution works by tying a Placed Order event back to the message that preceded it. The chain only holds if the profile existed at the moment the behavior happened.

What you can do with it

Three jobs this connector does inside Klaviyo.

01

Recover the carts you couldn’t email

Anonymous browsers are resolved to a known profile before events reach Klaviyo, so abandonment and browse flows can fire for visitors Klaviyo never identified. The flows don’t change. The audience they can reach does.

02

Profiles, not sessions

Events arrive attached to a resolved customer, so segmentation and flow logic operate on a person rather than a device. A phone browse and a desktop purchase stop being two people.

03

Attribution that reconciles

The same resolved order powers Klaviyo’s revenue attribution and the conversions sent to your ad platforms, so the two reports stop disagreeing about the same month.

How it works

How Klaviyo server-side events reach your flows.

Upstack posts server-side events to Klaviyo’s API as custom metrics and updates profiles with the identity it resolved. Klaviyo always receives these events from the server.

Metrics your flows can trigger on

Viewed Product, Added to Cart, Checkout Started and Placed Order arrive with " - Upstackified" added to the name by default, so they sit beside Klaviyo’s own metrics. Active on Site - Upstackified is the fourth flow trigger. Turn on Use Standard Event Names to drop the suffix.

The email attached before the event is sent

When the pixel sees an anonymous add to cart, identity resolution tries to match the session to a known customer using cookies, click IDs and cross-session behavior, and attaches the email before the event goes to Klaviyo. A click on a Klaviyo email link is a deterministic match.

Profile properties

Upstack syncs $first_name, $last_name, $city and $region plus custom identity properties to the profile, ready for segmentation as soon as they sync.

Upstack flows beside your own

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 means nobody gets both. Your existing flows stay as they are.

Why Klaviyo misses visitors

Shoppers switch devices, Safari and most iOS browsers expire first-party cookies set by JavaScript within 7 days, in-app browsers hand off to the default browser, and ad blockers stop Klaviyo’s own script.

Timing

Events appear in Klaviyo within a few minutes of storefront activity. Flow setup typically takes 48 to 72 hours, profiles enter the Upstack flows within 24 hours of going live, and meaningful revenue data takes 7 to 14 days.

Events and the data they carry

Names as they arrive with Use Standard Event Names on. By default each one carries " - Upstackified", and checkout arrives as Checkout Started - Upstackified.

Upstack event Sent as Data on the event
ViewContent Viewed Product ProductName, ProductID, Price, ImageURL
AddToCart Added to Cart ProductName, ProductID, Price, Quantity, CartValue
InitiateCheckout Started Checkout CartValue, ItemCount, CheckoutURL
Purchase Placed Order OrderID, Revenue, Items, DiscountCodes

Setup

Set up the Klaviyo integration.

What you need

  • Admin access to your Klaviyo account.
  • A Klaviyo Private API key. The setup guides ask for a Full Access key; it starts with pk_ and is shown once.
  • Existing browse, cart, checkout and site abandonment flows, if you want Upstack copies of them.
Complete Klaviyo onboarding guide
  1. Step 1

    Create the API key

    In Klaviyo, open Settings, Account, API Keys, click Create Private API Key, name it UpstackData, choose Full Access and copy the key straight away.

  2. Step 2

    Add the Klaviyo destination

    In Upstack, open Destinations, click New Destination and choose Klaviyo. Paste the key into Private API Key with no extra spaces and save. The destination shows Healthy.

  3. Step 3

    Request the Upstack flows

    Email support@upstackdata.com. The team turns on UTM tracking with an up_kprofile_id parameter, clones each abandonment flow, adds the 30-minute delay and the cross-flow exclusions, and sets the copies live.

  4. Step 4

    Turn off overlapping native metrics

    If Klaviyo’s native Shopify integration also sends Viewed Product, Added to Cart, Started Checkout or Placed Order, turn those metrics off there and keep it on for everything else.

Check it

How to verify it’s working, and common fixes.

How to verify it’s working

  • Upstack’s Destinations page shows Klaviyo as Healthy.
  • Klaviyo’s Analytics, Metrics page lists the Upstackified metrics within a few minutes of live traffic.
  • A profile’s Activity Feed in Klaviyo shows the Upstack events for that visitor.
  • Over the first 24 to 48 hours, the Analytics tab of each Upstack flow copy shows profiles entering it.
  • Links in a test email carry up_kprofile_id, utm_campaign and utm_id.

Common problems and fixes

Events show in Upstack but not in Klaviyo.
Read-only keys can’t receive events. Check the key’s permissions, search Metrics for "Upstackified" in case the name differs, and reconnect with a fresh key if the destination isn’t Healthy.
Customers get two abandonment emails.
Both flows need the exclusion "received email zero times in the last 7 days where Flow is the other flow", with names that match exactly. Turn off abandonment flows left by Elevar or Triple Whale.
Duplicate events from Klaviyo’s native integration.
Turn off the native metrics Upstack also sends (Viewed Product, Added to Cart, Started Checkout, Placed Order) and keep the rest.
Low volume in the Upstack flows.
Expected in the first few days. If it is still low after two weeks, check that no other tool is running conflicting flows.
Many profiles excluded from the Upstack copy.
That means overlap with your original flow. Extend the delay to 45 or 60 minutes.
Flows aren’t sending.
Set both the original and the Upstack flow to Live, and match each email step’s status to the original’s.

Pre-built connectors

12 sources connect to Klaviyo. Whichever of these you run, Klaviyo is one switch away.

See all connectors

Documentation

Set-up reference.

Set-up, event schema and field mapping for Klaviyo as a destination, next to the Klaviyo developer docs.

FAQ

Klaviyo integration questions.

What does Upstack send to Klaviyo?

Viewed Product, Added to Cart, Checkout Started, Active on Site and Placed Order as server-side custom metrics, with the visitor’s email attached when Upstack has identified them, plus profile properties such as name, city and region.

How does Upstack get more abandoned cart flows to fire?

Klaviyo can only fire the flow when it knows the shopper’s email. Upstack matches anonymous sessions to known customer profiles using cookies, click IDs and cross-session behavior, then sends an enriched Added to Cart event so the flow fires for visitors Klaviyo couldn’t identify.

Can Upstack add new shoppers to my Klaviyo list?

That is Upstack Audience, a separate product that runs on a Signal plan. It adds new verified shoppers to a Klaviyo list called UpstackData, and existing shoppers to a list called UpstackData Reactivate.

Will my existing Klaviyo flows change?

No. Your flows keep running as they are. The Upstack copies wait 30 minutes longer, and a 7-day exclusion in both directions means no one receives both.

Who sets up the Upstack flows, and how long does it take?

The Upstack team clones the flows for you once you invite them to Klaviyo. Setup is typically finished within 48 to 72 hours.

How long until I see results?

Profiles start entering the Upstack flows within 24 hours of going live. Meaningful revenue data typically takes 7 to 14 days of flow activity.

Will I see duplicate events if Klaviyo’s native integration is on?

You can. Turn off the native metrics that overlap with what Upstack sends (Viewed Product, Added to Cart, Started Checkout, Placed Order) and keep the native integration for everything else.

What kind of API key does Upstack need?

A Klaviyo Private API key named UpstackData. The setup guides ask for Full Access. The key starts with pk_ and is shown only once, so copy it straight away.

Which plans include the Klaviyo integration?

All plans. Upstack has three plans that scale with your order volume, and the same integrations are on every plan.

Guides

Guides and related pages.

Background reading for the Klaviyo integration, and the Upstack pages that go with it.

Similar integrations

Other destinations to send to.

See all integrations

Get Klaviyo tracking right.

A 15-minute walkthrough tailored to your stack and channels.