First-party attribution for Webflow
Webflow gives you a custom-code field and nothing else — no server, no middleware, no webhook you write yourself. That constrains what is possible, and it is worth being honest about the ceiling rather than pretending otherwise.
Durable id (server-set) + client events (behaviour) + server events (truth) + dedup key
Snippet in Project Settings → Custom Code; conversions confirmed by whatever processes the payment or form. The one decision that matters on Webflow: who writes the visitor id. Written by JavaScript it lives 7 days in Safari; written by a server it lasts as long as you set it.
Project Settings → Custom Code → Head Code. Publish to apply — the code does not take effect in the designer preview.
What Webflow gives you for free
Every stack has a natural advantage for first-party measurement. Use it before reaching for a tag manager.
Custom code in head runs early, before most embeds
Native form submissions are easy to identify on
Webflow Logic / webhooks can forward form submissions server-side
What breaks on Webflow
The failure modes specific to this stack — the ones a generic install guide will not warn you about.
No server, so no server-set cookie
Without your own backend, the visitor id must be written by JavaScript — which means the Safari 7-day cap applies.
Fix Compensate with early email identification: on Webflow sites, the form is the durable identifier.
Ecommerce checkout is hosted
Webflow's checkout is on their infrastructure; your custom code does not run there the same way.
Fix Use the order confirmation page plus a webhook from your payment processor for the authoritative event.
Embeds load in iframes
Third-party form and booking embeds run in an iframe and cannot see your page's identity.
Fix Pass the visitor id into the embed URL as a query parameter so the downstream tool records it.
Frequently asked questions
Can Webflow do ITP-proof attribution?
Not fully on its own — with no server of your own, the visitor id has to be set by JavaScript, so Safari caps it at 7 days. What you can do is identify early: capture the email on the first form, and the journey survives on identity instead of on a cookie.
Where do I put the tracking snippet in Webflow?
Project Settings → Custom Code → Head Code, then publish. Page-level custom code works too, but site-level means you never forget a page.
How do I track Webflow form submissions?
Listen for the native form submit event for the client-side signal, and forward the submission server-side via a Webflow webhook or an automation tool for the authoritative confirmation.
What about Webflow Ecommerce?
Use your payment processor's webhook (Stripe, for example) as the source of truth for purchases. That event comes from a server and cannot be blocked.
Related guides
See the receipt for every conversion.
Flowsk Signals stitches the anonymous click to the email to the purchase — first-party, server-side, de-duplicated on a key you choose. One snippet, $29/mo, and a journey you can inspect event by event.
More free tools
Same deal — instant, no signup.