Product · Ingestion
Every touch, caught at the edge before it can slip away.
Third-party pixels lose a third of your traffic to blockers and the Safari clock. Headless Builds records touches first-party, on your own domain, in the same edge function that already renders your store.
One snippet on the edge. No tag manager in sight.
Drop the collector into your middleware or edge route. It sets a first-party identifier, batches touches, and ships them to your region's ingestion endpoint in under five milliseconds — so it never blocks a render and never shows up as a banner.
import { collect } from '@headlessbuilds/edge' export async function middleware(req) { // first-party, same-origin, zero cookies return collect(req, { channel: req.nextUrl.searchParams.get('utm_source'), })}Built for the realities of headless traffic.
Storefronts on the edge are fast and global. Your measurement layer should be too.
First-party by default
Identifiers live on your domain, so ad blockers and ITP leave them alone.
Sub-5ms overhead
Touches are queued and flushed asynchronously — your Core Web Vitals never feel it.
Globally close
Ingestion runs in 18 regions, so a shopper in Lagos is logged as fast as one in Lisbon.
Schema you control
Attach any context — campaign, variant, geo, device — as typed properties.
Replay-safe
Idempotency keys mean a retried request never double-counts a touch.
Cookieless
No third-party cookies, ever. Consent stays simple and your legal team stays calm.
From request to recorded touch.
- 1
Intercept at the edge
The collector runs inside the request you're already serving — no extra round trip.
- 2
Resolve identity
A durable first-party id is read or minted, scoped to your domain only.
- 3
Batch & flush
Touches are buffered and shipped to the nearest ingestion region in the background.
- 4
Land in the timeline
Each touch is appended to the visitor's journey, ready to be stitched to an order.
Stop measuring with a leaky bucket.
Connect your store and watch first-party touches start landing in real time — most teams are live in an afternoon.