- 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 StackAdapt. 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.- DeduplicationBrowser and server copies of the same purchase collapse on event ID, so nothing is counted twice.
- Bot and fraud filteringAutomated traffic never reaches the model, because what you keep out of the training set matters as much as what goes in.
03 Activate
Delivered to StackAdapt
Server-side conversions to StackAdapt with hashed identifiers attached, so multi-channel programmatic is measured on your orders.
See the StackAdapt integration →
StackAdaptWhat it receives hashed email / phoneidentity matching on arrivalsa_click_idcredit the click that drove itexternal_idstable person across sessionsevent_iddedupe against the browser pixelvalue / currencyvalue-based bidding
The catch
The freedom to name your own events is also the risk: an ad platform expects specific event names and parameter shapes, and anything outside that is accepted and ignored.
Mapping happens before send, not in the platform.
Where to check in StackAdaptDelivery you can audit
StackAdapt › Conversions › Conversion tracking
Server-side conversions are labeled by source, so a deduplicated pair is visible as one.
What changes
What changes when Custom stack feeds StackAdapt. Two gains on the StackAdapt side, two on the Custom stack side.
StackAdapt
Server-side delivery
Events reach StackAdapt through its server API rather than the browser, so ad blockers and ITP don’t cost you conversions.
StackAdapt
Identity-resolved events
Events sent to StackAdapt carry the resolved customer whenever Upstack can identify one, matched against a 750M+ device graph.
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.
Connect Custom stack once and every destination, StackAdapt included, is forwarded the same resolved events.
Upstack dashboardExample
Custom stack Data source Connected
StackAdapt Destination Healthy
Read the full StackAdapt 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 StackAdapt destination
Under Destinations, add StackAdapt. Every resolved Custom stack event is then forwarded to it.
-
03
Check delivery to StackAdapt
Every conversion is inspectable from the moment it fires to the moment the platform confirms it.
FAQ
Questions about Custom stack and StackAdapt.
How do I check that Custom stack events are reaching StackAdapt?
Open StackAdapt › Conversions › Conversion tracking. Server-side conversions are labeled by source, so a deduplicated pair is visible as one.
Will a purchase be counted twice?
No. Browser and server copies of the same purchase collapse on event ID, so nothing is counted twice.