- 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 your warehouse. 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.- DeduplicationStable event IDs, so re-runs and backfills do not double rows.
- Bot and fraud filteringFiltered before load, with the filter decision recorded.
03 Activate
Delivered to your warehouse
A clean, resolved event stream into BigQuery, Snowflake or Redshift: the same data your dashboards run on.
See the warehouse integration → Your warehouseWhat it receives
event_idprimary key you can join onresolved person IDstitch sessions to customersfull property payloadnothing dropped, nothing sampledingest timestamprebuild any point-in-time view
The catch
A custom stream is the easiest to land and the hardest to trust, because nothing enforces the schema.
Resolution and validation happen on the way in.
Where to check in your warehouseA stream you can audit
Query the events table directly: count distinct resolved person IDs against count distinct sessions, and compare the ratio to what your analytics reports.
What changes
What changes when Custom stack feeds your warehouse. Two gains on the warehouse side, two on the Custom stack side.
Your warehouse
One resolved event stream
The same identity-resolved events that reach your ad platforms, landed in your warehouse.
Your warehouse
Nothing sampled
Full-fidelity events, not an aggregate or a sample.
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, your warehouse included, is forwarded the same resolved events.
Upstack dashboardExample
Custom stack Data source Connected
Your warehouse Destination Healthy
Read the full warehouse 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 warehouse destination
Under Destinations, add your warehouse. Every resolved Custom stack event is then forwarded to it.
-
03
Check delivery to your warehouse
Every row traceable to the event that produced it and the time it landed.
FAQ
Questions about Custom stack and your warehouse.
How do I check that Custom stack events are reaching your warehouse?
Query the events table directly: count distinct resolved person IDs against count distinct sessions, and compare the ratio to what your analytics reports.
Will re-runs or backfills duplicate rows?
No. Stable event IDs, so re-runs and backfills do not double rows.