Five decisions, and what each one buys you
Flowsk is small on purpose. Each of these is a deliberate design decision about how attribution data should behave — and each one is the reason a specific class of wrong number stops appearing in your reports.
-
Day 0 · 14:02 client $view
Anonymous click from an ad
utm_source=facebook · utm_campaign=spring-prospecting · fbclid=IwAR…
A durable first-party id is minted by your server — not by JavaScript, so Safari does not delete it in seven days. The campaign that paid for this click is written to the visitor as first touch.
-
Day 0 · 14:05 client $view
Three pages, then leaves
/collections/new → /products/lamp → /products/lamp?variant=black
Behavioural events, sent client-side. Cheap, fast, and expendable — if an ad blocker eats one, nothing important is lost.
-
Day 4 · 09:31 server identify
Returns and gives an email
hello@example.com · via: newsletter_popup
The anonymous-to-known bridge. Every session before this moment retroactively belongs to a known person, and the server records what caused the identification — not just that it happened.
-
Day 11 · 20:47 both purchase
Buys — counted once
order_10482 · $129.00 · confirmed by client + server
The browser reports the purchase and so does your backend. A shared dedup key collapses them into one conversion, marked confirmed by both sides, with the server's amount as the truth.
This is not a model. It is the receipt for one conversion — and you can pull it for any of them.
first touch: facebook / spring-prospectingAll five, for $29 a month.
There are no tiers — every account gets the durable id, the server-side events, the de-duplication, the journeys and the reporting.