How Ad Sentinelle Works
This page explains the technical architecture and operating flow of Ad Sentinelle.
Overall Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Your Website │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Ad Sentinelle SDK (adwall.min.js) │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Detection │ │ A/B Testing │ │ Display │ │ │
│ │ │ Ad Block │ │ Variants │ │ Wall │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Session │ │ Event │ │ Conversion │ │ │
│ │ │ Management │ │ Tracking │ │ Handler │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ │ HTTPS (sendBeacon/fetch) │
│ ▼ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Ad Sentinelle Backend (Cloud Run) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
│ │ API Events │ │ Analytics │ │ Wall Configuration │ │
│ │ /track │ │ Dashboard │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────┐ │
│ │ PostgreSQL │ │
│ │ (Database) │ │
│ └────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Detailed User Flow
Step 1: SDK Loading
When a user visits your site, the Ad Sentinelle SDK loads:
// SDK initializes automatically
// It fetches configuration from your dashboard
Actions performed:
- Generation/retrieval of session ID
- A/B testing variant attribution
- Collection of metadata (anonymized)
Step 2: Ad Blocker Detection
The SDK uses two complementary methods:
Method 1: Element Bait 🎣
// Creation of a "bait" element
const bait = document.createElement('div');
bait.className = 'adsbox ad adsbygoogle';
// If hidden → Ad blocker detected
Method 2: Network Request 🌐
// Attempt to load an ad script
fetch('https://pagead2.googlesyndication.com/...')
// If blocked → Ad blocker detected
Step 3: Wall Display
If an ad blocker is detected AND the user is not already converted:
┌─────────────────────────────────────────┐
│ │
│ 🛡️ Blocker Detected │
│ │
│ Your ad blocker prevents our │
│ financing. Please disable it to │
│ access the content. │
│ │
│ [I've Disabled My Blocker] │
│ │
│ ❓ How to Disable? │
│ │
└─────────────────────────────────────────┘
Step 4: Verification and Conversion
When the user clicks the button:
User clicks "I've Disabled"
↓
[Verification...] ← Visual feedback
↓
New real-time detection
↓
┌─────────┴─────────┐
↓ ↓
SUCCESS FAILURE
↓ ↓
Conversion Error message
Wall removed "Still active"
Cookie set Button reset
Step 5: Event Tracking
Every action is tracked for analytics:
| Event | Trigger |
|---|---|
adblock_detected | Ad blocker detected |
adwall_displayed | Wall displayed |
adwall_help_opened | Help opened |
verification_success | Disable confirmed |
verification_failed | Ad blocker still active |
conversion_allowlist | Conversion validated |
Cookie Management
Ad Sentinelle uses only first-party cookies:
| Cookie | Duration | Description |
|---|---|---|
adwall_session_id | Session | Unique session ID |
adwall_variant | Session | Assigned A/B variant |