Skip to main content

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:

EventTrigger
adblock_detectedAd blocker detected
adwall_displayedWall displayed
adwall_help_openedHelp opened
verification_successDisable confirmed
verification_failedAd blocker still active
conversion_allowlistConversion validated

Ad Sentinelle uses only first-party cookies:

CookieDurationDescription
adwall_session_idSessionUnique session ID
adwall_variantSessionAssigned A/B variant