flowsk.com
Flowsk Signals · $29/mo

See every dollar's journey — from the ad click to the sale.

Your ad platform grades its own homework. Safari forgets your customer after seven days. GA4 models the rest. Flowsk stitches the anonymous click to the email to the purchase — first-party, server-side, and yours.

Not a model. A receipt for every conversion, event by event, that you can open and read.

No sales call. Cancel any time.
✓ One snippet ✓ ITP-resistant ✓ Client + server de-dup ✓ Your data, not a black box
One visitor · one identity · one receipt
  1. Day 0 · 14:02 client $view

    Anonymous click from an ad

    utm_source=facebook · utm_campaign=spring-prospecting · fbclid=IwAR…

  2. Day 0 · 14:05 client $view

    Three pages, then leaves

    /collections/new → /products/lamp → /products/lamp?variant=black

  3. Day 4 · 09:31 server identify

    Returns and gives an email

    hello@example.com · via: newsletter_popup

  4. Day 11 · 20:47 both purchase

    Buys — counted once

    order_10482 · $129.00 · confirmed by client + server

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-prospecting

You are spending real money on numbers nobody can reconcile.

Four independent failures, each defensible on its own, that compound into a report you cannot act on.

The platforms grade themselves Meta and Google both claim the same sale, inflate with view-throughs, and cannot see each other. Add up your channel reports and you have more conversions than orders.
GA4 models what it lost Session-based, sampled, and quietly modelling conversions it never observed. It will not tell you which anonymous visitor became which customer.
The pixel is dead iOS ATT and ad blockers mean 20–30% of paid traffic never runs your client-side tag at all. Those conversions do not fail loudly — they just go missing.
Safari deletes your window ITP caps JavaScript-set cookies at 7 days. Your 30-day window is a 7-day window for half your mobile traffic, and nobody sent you a memo.

Attribution you can actually inspect.

Every other tool hands you a percentage and asks you to trust it. Flowsk hands you the events. Search by cookie or by email and read the whole path — what brought them, what they did, when they became a person, what they paid.

One visitor · one identity · one receipt
  1. 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.

  2. 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.

  3. 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.

  4. 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-prospecting

Three decisions that make the data hold up.

01 First-party and server-set The visitor id is written by a server, on your domain, in an HTTP response. That is the single implementation detail Safari's 7-day cap does not apply to — and the reason a 30-day window can actually be 30 days.
02 Client and server, de-duplicated The browser reports behaviour; your backend confirms the money. A shared dedup key collapses the two into one conversion with the server's version of the truth. Counted once, with context.
03 Anonymous → known → paid The email is the join key. The moment someone identifies, every session they ever had retroactively belongs to a named person — and every future purchase inherits the campaign that acquired them.

Where Flowsk sits.

Too big for "GA4 and hope", too small to pay four figures a month for an attribution model you cannot audit. That gap is the entire product.

Ad platforms GA4 Triple Whale / Northbeam Flowsk
Who owns the data The platform Google The vendor You
Survives Safari ITP No No Partly Yes (proxy)
Sees anonymous → email → sale No No Partly Yes
Can you audit a single conversion No No No Yes
Counts a sale exactly once No No Modelled Yes (dedup key)
Monthly price Free (biased) Free (sampled) $300–$2,000+ $29

Full breakdowns: all comparisons

Proof, not testimonials

We run our own acquisition through our own product.

flowsk.com runs the Flowsk snippet. Every visitor to this page is a journey in our own database, attributed by the product on this page — through the same public interface your own API calls would use. No internal shortcut exists, which is why breaking that interface breaks our funnel first.

We will publish that funnel once there is enough of it to be worth reading — and once it is up, it stays up, bad months included.

See what we'll publish →

$29 a month. One plan.

Unlimited events, unlimited campaigns, the journey explorer, server-side conversions, CAC and ROAS by campaign. No seats, no usage tiers, no annual lock-in.

See what's included →

Frequently asked questions

What exactly does Flowsk Signals do?

It records every touch a visitor has with your site — the ad click, the pages, the email capture, the purchase — against one durable first-party identity, and shows you the whole journey for any conversion. Not a model of what probably happened: the actual sequence of events.

How is this different from GA4?

GA4 is session-based, sampled, and models conversions it cannot observe. Signals is person-based, complete, and shows you the events themselves. GA4 answers 'roughly how is traffic behaving'. Signals answers 'which campaign paid for this specific $129 order'.

Do I need to be technical to install it?

One snippet in your head tag gets you tracking in a few minutes. The durable-id proxy mode needs a developer for about an hour, and it is what makes the data survive Safari. Both are documented step by step.

Will this survive Safari's ITP?

In proxy mode, yes — your own server sets the visitor id in an HTTP response, which Safari does not cap at 7 days. In snippet-only mode you get the same 7-day limit every JavaScript tracker has, plus server-side conversion confirmation that recovers a good part of what would otherwise be lost.

Does it replace my ad pixels?

No. Keep them — they are what the ad platforms optimise on. Signals is the ledger you use to decide where the budget goes, and the one you show your board.

What does it cost?

$29/month, flat. No usage tiers, no seat pricing, no annual commitment, no sales call.

Stop guessing which ad made the sale.

One snippet, a durable first-party id, server-confirmed conversions and a journey you can read. $29/mo — less than one bad day of ad spend on a campaign you could not measure.