Ad blockers and affiliate tracking: what is actually true
How a block list really works, what it targets, why affiliate platforms are on it — and what a link served by your own domain actually changes.
What an ad blocker actually blocks
An ad blocker has no opinion. It applies a list of rules written by volunteers, published in the open, that anyone can read. The most widely used — EasyList, EasyPrivacy, the uBlock Origin lists — run to a few tens of thousands of lines, and a line looks like this:
||example-affiliate.com^$third-party
||tracking.example.net^
/affiliate-click.php$script
Three shapes, and they matter, because they are not worked around the same way.
- A domain. Everything coming from
example-affiliate.comis refused. It is the most common rule and the bluntest: it looks at neither the path nor the content. - A pattern in the address.
/affiliate-click,/track/,utm_,ref=. The domain can be anything; it is the word that fires. - A suspect hostname.
track.,pixel.,analytics.,stats.,tag.used as a subdomain. Several lists treat those as tracking hosts even on a site they have never seen.
There is a fourth family, cosmetic, which hides elements of a page without blocking a request. It has nothing to do with affiliate tracking and can be set aside here.
Why affiliate platforms are on those lists
A conventional affiliate platform serves all of its customers from its own domain. Your
affiliate's link looks like go.theplatform.com/xyz123, and so does your
competitor's. For someone writing a filter list, that is the ideal case: one line, and
tracking stops working for several thousand merchants. The effort-to-effect ratio is
unbeatable, so the line gets written, and it stays.
It is not hostility towards you. It is a mechanical consequence of the platform's architecture: sharing a domain also shares the risk of being catalogued.
What it costs in practice
The visitor clicks. The browser refuses the request to the blocked domain. Two situations, depending on how the link is built:
- If the redirect goes through the blocked domain, the visitor does not arrive. They see an error page, or nothing. You lose the whole visit.
- If the link points straight at your site and only a tracking script is blocked, the visitor arrives but the click is not recorded. The sale happens, and nobody is credited.
The second case is the expensive one, because it is invisible. Your sales look normal, your affiliate does not understand why their dashboard is empty, and you have no way to decide between "they brought nothing" and "we did not count it".
What we will not tell you
You will often read that a platform "recovers 30% of lost conversions". No independent source measures that number seriously, and for a good reason: doing so would require knowing the sales that were not counted, which is exactly the missing information. We will not quote it.
What is checkable is more modest and more useful: the blocking rule is public, you can read it, and your domain is not in it.
The fix: serve the link from your own domain
If your affiliate's link is acme.com/a7f3c2/marie, there is nothing to block
without blocking acme.com — that is, your whole site, which no list does.
The cookie that gets set is a first-party cookie, on the same domain as the page the
visitor is reading.
Two ways to get there, and a third worth knowing about so you can avoid it.
A reverse-proxy rule on your server
You add a rule that says: anything arriving on /a7f3c2/… is forwarded to the
tracking service. One line in nginx, one rule in Cloudflare, one config file in Vercel,
one form in Shopify. The visitor never sees anything but your domain, and the request has
no pattern to match.
The prefix matters. /track/ or /pixel/ on your own domain gets
caught by the second family of rules, the one that looks at patterns. An opaque prefix —
six characters that mean nothing — is in none of them.
A subdomain you delegate
One CNAME record, and go.acme.com points at the service. Nothing to install,
and the certificate is issued for you. The browser sees a subdomain of yours.
It is slightly less solid than the first option, for one specific reason: a few lists
flag subdomains whose name belongs to the tracking vocabulary. Hence the simple rule: do
not call that subdomain track, analytics, pixel,
tag or stats.
The platform's shared domain
This is the starting case, the one that gets blocked. It has one use: checking in ten minutes that everything works before touching your DNS or your server. It is not a place to stay.
What first-party does not fix
You have to be honest about the limits, or the promise falls apart within six months.
Safari caps at seven days the cookies set by a script on a delegated domain — that is ITP behaviour, and it does not care about the attribution window you chose. On a recurring commission, seven days is obviously not enough. Browsers will also keep shortening cookie lifetimes: that is the general direction, and betting against it is a bad idea.
The conclusion is not that first-party tracking is pointless. It is that attribution should stop resting on the cookie alone.
What outlasts a cookie
The cookie does one job: connecting the click to the sale that follows it a few days later. At checkout, your server knows two things at the same time — the click id, read from the cookie, and the id you give that customer in your own system. One call saying "this click belongs to this customer" is enough to turn fragile attribution into durable attribution.
After that the cookie can disappear. The renewal in month eleven, made on another device, arrives with the customer id, and the commission lands in the right place.
The cookie brings the first sale. The customer id pays for the eleven that follow.
How to check for yourself, tonight
- Install uBlock Origin in a clean browser.
- Open an affiliate link from your current program. If it does not open, or if the dashboard has not seen the click a minute later, you have your answer.
- Open the ad blocker's request log — in uBlock, the "Logger" tab. Refused requests appear there with the exact rule that refused them. That is proof, not an estimate.
- Run the same test with a link served by your own domain.
The test takes ten minutes and requires taking nobody's word for anything. It is about the only honest thing there is to say on the subject.
Meritt does what this article describes.
Tracking on your own domain, attribution by click and by identity, payouts from your own PayPal and Wise accounts, invoices and credit notes written for you. $0, $49 or $99 a month, never a percentage.
Read next
Why an affiliate platform should not take a percentage
The arithmetic, with the numbers: what a percentage really costs once the program starts working, and what incentive that model creates for whoever counts your sales.
5 August 2026 · 7 min read AccountingWho writes an affiliate's invoice, and how self-billing works
Self-billing, receipts, credit notes, gapless numbering, VAT, electronic formats: what each side has to be able to show, and why you never delete an invoice.
22 July 2026 · 9 min read PayoutsAn accepted transfer is not a transfer that arrived
PayPal answers "accepted" in two seconds and decides thirty days later. What has to happen in between, and the five things to undo when the funds come back.
8 July 2026 · 7 min read