- 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 Custom stack event reaches Klaviyo. Captured on the server, resolved to a person, then sent.
01 Capture
Captured from Custom stack
Not on the list? Send events to Upstack from any stack over webhook or direct post, with the same schema and the same resolution.
See the Custom stack integration →
Custom stackWhat it sends event_namewhatever you choose to call ituser identifiersany of email, phone, external IDvalue / currencyif the event carries revenuecustom propertiesany attribute in your own schema
02 Understand
Resolved to one person before it leaves
Every Custom stack 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
Custom schemas tend to carry identifiers in whatever field made sense at the time.
The profile key has to be normalized before it reaches a messaging tool or nothing matches.
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 Custom stack feeds Klaviyo. Two gains on the Klaviyo side, two on the Custom stack 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.
Custom stack
Any stack, any framework
Headless, custom checkout, native app or a platform we haven’t listed: if it can make an HTTP request, it can send to Upstack.
Custom stack
The same event schema
Custom events are resolved, filtered and forwarded exactly like a Shopify order.
Setup
Post directly from your backend so nothing depends on the browser.
You need admin access to a Klaviyo account, with permission to create a Private API key with Full Access.
Upstack dashboardExample
Custom stack Data source Connected
Klaviyo Destination Healthy
Read the full Klaviyo setup guide → -
01
Connect Custom stack
Not on the list? Send events to Upstack from any stack over webhook or direct post, with the same schema and the same resolution.
-
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 Custom stack 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 Custom stack 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.