- 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 Stripe event reaches Klaviyo. Sent from your app, resolved to a person, then forwarded.
01 Capture
Captured from Stripe
For apps that bill through Stripe, send payment and subscription events to Upstack with the Upstack Pixel and JavaScript SDK, resolved to a customer before they reach the tools you spend on.
See the Stripe integration →
StripeWhat it sends subscription_initial_purchaseyou fire it for the first subscription ordersubscription_recurring_purchaseon invoice.paid for an existing subscriptionpayment_succeededmaps to invoice.paid or charge.succeededpayment_refundedmaps to charge.refundedamount / currencyamount in cents, with invoiceId and subscriptionId
02 Understand
Resolved to one person before it leaves
Every Stripe 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.
The catch
Stripe sees the payment, not the browse.
A customer who abandoned twice before paying looks like a first-time buyer with no history, so flows built on Stripe data alone have nothing to personalize against.
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 Stripe feeds Klaviyo. Two gains on the Klaviyo side, two on the Stripe 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.
Stripe
Subscription purchases as events
Fire subscription_initial_purchase for the first order and subscription_recurring_purchase each time a renewal is paid, so first orders and renewals are reported separately.
Stripe
Payments and refunds
payment_succeeded, payment_failed and payment_refunded each map to a Stripe event (invoice.paid or charge.succeeded, invoice.payment_failed, charge.refunded), so money events reach Upstack when your app fires them.
Setup
Live in under 20 minutes.
You need admin access to a Klaviyo account, with permission to create a Private API key with Full Access.
Upstack dashboardExample
Klaviyo Destination Healthy
Read the full Klaviyo setup guide → -
01
Install the Upstack Pixel and SDK
Add the Upstack Pixel to your app, then fire the subscription and payment events with the JavaScript SDK when Stripe reports them, such as subscription_recurring_purchase when invoice.paid fires for an existing subscription.
-
02
Add the Klaviyo destination
Under Destinations, add Klaviyo with a Private API key named UpstackData, created with Full Access under Settings, Account, API Keys in Klaviyo. The key starts with pk_ and is shown only once.
-
03
Check metrics in 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.
FAQ
Questions about Stripe and Klaviyo.
Which events does Klaviyo receive?
ViewContent as Viewed Product, AddToCart as Added to Cart, InitiateCheckout as Started Checkout and Purchase as Placed Order.
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 Stripe 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.
How long does it take to connect Stripe to Klaviyo?
Most brands are live in under 20 minutes. Once Stripe events reach Upstack, every destination receives the same resolved events, Klaviyo included.