Clarity and n8n instead of server-side tracking for lead gen
Server-side tracking got sold hard for a few years. For ecommerce it earns its place: purchase events with real values, browser loss recovered, ad blockers partly sidestepped. We run it there, on managed hosting, and leave it alone.
For lead generation the case is weaker, because the event that matters happens off the site. A form submission is a proxy. The real event is a lead becoming a customer, and no amount of server-side tagging captures that.
What we do instead
The form posts to an n8n webhook. n8n stores the lead with its click IDs, landing page and timestamp, scores it, writes it to the CRM and fires the conversion to Google Ads with a value. One submission, one workflow, and every lead sits in a table you can query. When the page changes, the webhook does not care. When the CRM changes, one node changes.
Microsoft Clarity watches behaviour. It is free, records sessions, draws heatmaps, and it is how you find out that the chat widget opens itself over the call button on mobile, or that the form is abandoned at the same field every time. It does the job of the expensive behaviour tools for lead gen sites.
GTM stays for GA4 and the odd third-party tag, with a measurement plan and a dataLayer spec so the next developer knows what fires. Consent Mode is wired in with Cookiebot from the start, because a tracking setup that breaks when Google's compliance email arrives is a setup built on ground that will move.
What you give up
Some browser-level loss on the GA4 side, which for lead gen is an analytics problem and not a bidding one, since the bidding learns from the n8n upload. A hosting bill and a container you do not have to maintain.
When we still recommend server-side
Ecommerce. High-volume lead gen where the ad platforms' own tags are losing enough data to matter. Anywhere a client already has it working. It is a tool, and the lead gen tool is the webhook.