Ad blockers: understand and avoid disruptions
Overview
Ad blockers are browser extensions or built-in features designed to prevent the display of online advertising. They operate by intercepting specific network and structural elements:
- HTTP and HTTPS requests: Requests made to known ad servers or domains.
- JavaScripts: Scripts that are commonly associated with advertising.
-
HTML elements: Elements (for example,
<div>or<iframe>) with specific class names, IDs, or keywords such asad,sponsor, or specific brand names.
Popular ad blockers
Popular ad blockers include the following tools:
- AdBlock Plus
- Ghostery
- Privacy Badger: A tool from the EFF that primarily blocks trackers rather than ads.
- Surfshark One
- uBlock Origin: A highly aggressive and customizable blocker.
These tools rely on community-maintained filter lists that update frequently, such as EasyList, Fanboy’s Annoyance List, and uBlock filters.
Impact on on-site ads
When ad blockers are active, they can affect the following aspects of your integration:
Ad request blocked
Ad blockers can prevent server calls to fetch ads from Kamino endpoints if any of the following conditions are met:
- The URLs contain keywords like
ads,banner,track, orkamino. - The domains appear on ad blocker filter lists.
Ad rendering blocked
- The ad blocker can hide or remove HTML elements that contain specific keywords (for example,
id="ad-slot"orclass="kamino-banner"). - The ad blocker can intercept
<iframe>or<script>tags that load creative assets.
Event tracking blocked
- The ad blocker can intercept click, view, and impression tracking requests, or prevent them from firing.
- Server-side events triggered through client-side JavaScript might not reach the Equativ backend if they are blocked by script filters.
Workarounds and best practices
These best practices apply only to integrations that use the API delivery method.
To reduce disruption and maximize ad delivery and tracking integrity, follow these recommendations:
Use server-side ad requests
- Fetch ads server-side when possible to avoid interception by client-side blockers. Because these requests are not visible in the browser, blockers are less likely to intercept them.
- Ensure that you sanitize the response to remove keywords like
adsorkamino.
Obfuscate naming conventions
- Avoid using explicit advertising keywords like
ad,ads,advertisement,banner,sponsor,kamino, ortrack. - Apply this naming rule to the following components:
- HTML element IDs or classes (for example, rename
#kamino-ad-containerto#k-container). - URL paths (for example, rename
/api/get-adsto/api/fetch). - Script file names (for example, rename
ad-loader.jstoloader.js).
- HTML element IDs or classes (for example, rename
Implement tracking through first-party domains
- Proxy your tracking calls through the retailer’s domain to avoid third-party blocking. For example, a request to
/track-eventonclient.comcan relay the data directly to Equativ servers. - Using a first-party proxy significantly reduces blocking rates.
Test frequently with popular blockers
- Set up test environments that have uBlock Origin and AdBlock Plus enabled.
- Test your integration against various filter lists, such as EasyList and the uBlock filters, to detect potential false positives.
- Use your browser console and the DevTools Network panel to identify blocked elements or requests.
Summary
The following table provides an overview of the risks and best practices for each integration area:
| Area | Risk When Blocked | Best Practice |
|---|---|---|
| Ad Rendering | Broken or missing ads | Use dynamic element creation and obfuscate IDs or classes. |
| Ad Request | No ads returned | Use server-side fetching and neutral URLs. |
| Tracking Events | No reporting and lost metrics | Use first-party proxying. |