Skip to main content
Engineering

First-party by default: stop letting adblockers delete your data

A chunk of your analytics never arrives, and you cannot see what you did not receive. Here is why first-party routing fixes accidental drops, and where it honestly stops.

The leatmap team2 min read
A clean white corridor in sharp one-point perspective, leading forward toward daylight.

Here is an uncomfortable fact about third-party analytics: a meaningful share of your events never reach the server. Not because of consent, but because a browser extension or a network filter quietly dropped the request. And because the request never arrived, it never showed up as missing. You measure a number that is confidently wrong.

The silent drop

Adblockers and tracking-protection filters ship lists of known analytics domains. When your page calls out to one of them, the request is cancelled before it leaves the browser. There is no error in your dashboard, because from the server's point of view the event simply does not exist.

The result is a blind spot that scales with how technical and privacy-conscious your audience is. The more sophisticated your users, the more you undercount.

Route through your own origin

The fix is to stop sending analytics to a third-party domain. A first-party proxy forwards ingest through your own origin, for example yoursite.com/_lm, and on to the collector. The request now looks like any other call to your site, so it is not on a blocklist and is not dropped.

This is not a trick. It is how first-party data is supposed to work: your site, your domain, your data.

Templates, not a research project

leatmap ships copy-paste first-party proxy templates so this takes minutes, not a sprint:

  • Next.js 16 (proxy.ts or a rewrite in next.config.ts)
  • Cloudflare Workers
  • Caddy and Nginx

Point the SDK at your proxy path, add the shared secret, and you are first-party.

Measure what you were missing

Once ingest is first-party, leatmap's coverage view shows observed events next to an estimate of what was previously blocked, so you can actually quantify the recovery instead of guessing.

The short version

If your audience skews technical, you are probably undercounting, and a third-party setup hides exactly how much. Route ingest through your own origin, recover the accidental drops, and keep honoring the choices users actually made.

The proxy templates live in the docs at docs.leatmap.com. For the bigger picture, see why consent belongs at the collector.

Stop measuring with crossed fingers.

Get a tracking plan you can trust, a collector that enforces it, and a dashboard you actually want to open.