Product

One customer data layer. Every growth workflow.

SetRoasFlow sits between your website and the tools that act on it. Events come in once, become one profile per customer, and go back out to advertising, CRM, analytics and your own warehouse.

How it works

One path in, one path out.

Every event takes the same route, whichever tool it ends up in. That is the whole point of a data layer: you instrument once, and each destination gets the same complete record.

Consent is checked before anything is dispatched, not recorded afterwards. Email and phone are hashed with SHA-256 before an advertising platform ever receives them: plaintext only reaches the CRM and warehouse destinations you connect yourself.

Customer data infrastructure

Every signal, collected once

Your site, your store and your backend all send events to one endpoint on your own domain. Nothing depends on a browser extension surviving, or on a pixel that Safari decides to expire.

Live

Server-side event collection

Page views, add-to-carts, checkouts, purchases and any custom event you define, received at the edge in milliseconds.

Live

Identity resolution

Email, phone, customer ID, session and anonymous ID collapse into a single identity, so the same person is one person across devices.

Live

Unified customer profiles

One durable profile per customer with orders, lifetime value, first and last touch, and every event in order.

Live

First-party by construction

Data is collected on your domain and stored under your account. There is no third-party cookie anywhere in the path.

Activation

Send the profile where the work happens

A profile that only lives in a dashboard changes nothing. Segments are built once and pushed to the tools that spend your budget and send your email.

Live

Segments from real behaviour

Build audiences on lifetime value, order count, recency, channel, consent state or any attribute you collect.

Live

Audience sync to advertising

Custom audiences and lookalike seeds pushed to Meta, Google Ads, TikTok, LinkedIn, X, Snapchat, Pinterest and Reddit.

Beta

CRM and lifecycle sync

The same segments kept in step with Klaviyo, HubSpot, Mailchimp and ActiveCampaign, so your flows always target the current list.

Beta

On-site personalization

The segment is resolved at the edge before the page paints, so content can change for a returning VIP without a flash of the default.

Measurement

Numbers that come from the same source as the ads

Attribution and ROAS are computed on the profiles that were actually sent to the platforms, not on a second, differently shaped copy of your data.

Beta

Attribution and ROAS by channel

Ad spend is imported automatically where the platform allows it, then matched against revenue per channel and per campaign.

Beta

Lifetime value and cohorts

See what a cohort is worth over time, not just what it bought on day one.

Beta

Repeat rate and churn

Who came back, who stopped, and how long that usually takes for your customers.

Data infrastructure

Your data leaves whenever you want it to

A data layer you cannot get out of is a lock-in, not infrastructure. Everything collected is exportable in the shape it was stored in.

Beta

Warehouse export

Stream events and profiles to BigQuery, Snowflake, Amazon S3 or Cloudflare R2 on a schedule you set.

Beta

Signed webhooks

Every batch is signed with HMAC-SHA256 so your endpoint can verify it came from us and was not altered.

Live

Self-service deletion

Erase all tracking data for a website, or for the whole account, from settings. It runs immediately, without a support ticket.

Privacy

Consent decided before the data moves

Consent is not a checkbox we record after the fact. It is evaluated at the edge, per request, and it decides whether the event is dispatched at all.

Live

Region-aware consent

Opt-in enforced for the EU, EEA, UK and Switzerland; opt-out honoured for the US and the rest of the world, including the Global Privacy Control signal.

Live

Hashed before egress

Email and phone are hashed with SHA-256 before an advertising platform ever sees them. Plaintext only reaches CRMs you connect on purpose.

Live

Processed at the edge

Events are handled in the Cloudflare region closest to the visitor, and only the data you configured is forwarded onward.

Live means running in production and validated on real accounts. Beta means built and working, but not yet validated with a customer account. We would rather label it than let you find out.

What you end up with

A profile, and the numbers built on it.

Scattered signals become one person with a history. Once that exists, attribution stops being a reconciliation exercise: revenue is already attached to the profile it came from.

Customers · Profile

A

Ava Morrison

VIPRepeat buyer

Lifetime value

€2,480

Orders

12

Avg order

€207

Resolved into one identity

a•••••[email protected]hashed before egress
+39 ••• ••• 4417hashed before egress
2 devices mergedphone + desktop
Shopify customer #48213from the store

Recent

Purchase · €210.002 days ago
Checkout started2 days ago
Viewed 4 products9 days ago

Acquisition · Last 30 days

Return on ad spend, by channel

spend imported automatically
Meta4.4x
€4,200 spent€18,480 attributed
Google Ads3.4x
€3,100 spent€10,540 attributed
TikTok2.2x
€1,450 spent€3,190 attributed
Klaviyo16.5x
€180 spent€2,970 attributed

Illustrative: the layout is the product, the numbers are made up.

Ready to own your customer data?

Create your account, add the script or install the app, and your first customer profiles start forming today. Free while in beta.