Ad blockers are dropping our Croct requests and skewing results, what is the fix?
A chunk of our visitors never register any events, and when I dug into it in the network tab the requests to /client/web/evaluate, /client/web/track and /content are being cancelled by an ad blocker. The pattern lines up cleanly with users who run one.
My worry is not just the missing events, it is that this silently excludes a slice of traffic and skews our experiment numbers. How do people serve these requests reliably on a Next app so a blocker does not eat them?
2 answers
What you are seeing is expected: the default endpoints match rules in EasyList and EasyPrivacy, so blockers cancel calls to /client/web/evaluate, /client/web/track and /content. Blocked requests do not error loudly, they just drop, which is exactly why the excluded traffic quietly skews your results.
The remedy is first-party proxying. You route those requests through your own domain by setting the baseEndpointUrl and cidAssignerEndpointUrl options. Once the calls originate from your domain they are not recognised as third-party, so the blocker rules no longer match them and the traffic comes back.
The end-to-end setup is walked through in the first-party API routing tutorial, and the options themselves are listed in the Next.js environment variables reference.
Can confirm this works. We set up first-party proxying through our own domain and the blocked slice of traffic came straight back, our event volume jumped back to where the server logs said it should be. The experiment numbers stopped drifting once the excluded cohort was no longer silently missing. If you have a strict CSP, mind the connect-src entry too, see the CSP first-party proxy thread. Worth pairing with a render-blocking audit while you are in there.