241 lines
15 KiB
HTML
241 lines
15 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
<head>
|
||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||
<title>WEVADS — Performance Réelle Infrastructure</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
||
<style>
|
||
:root{--bg:#0a0c14;--s1:#111827;--border:#1e293b;--t1:#f1f5f9;--t2:#94a3b8;--t3:#64748b;--accent:#7c3aed;--teal:#10b981;--amber:#f59e0b;--red:#ef4444;--blue:#3b82f6}
|
||
*{margin:0;padding:0;box-sizing:border-box}
|
||
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--t1);min-height:100vh}
|
||
.top{display:flex;justify-content:space-between;align-items:center;padding:24px 40px;border-bottom:1px solid var(--border)}
|
||
.logo{display:flex;align-items:center;gap:14px}
|
||
.logo-mark{width:40px;height:40px;background:linear-gradient(135deg,#f59e0b,#f97316);border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;font-size:18px}
|
||
.logo h1{font-size:20px;font-weight:700;letter-spacing:-.5px}
|
||
.logo h1 span{color:var(--amber)}
|
||
.logo-sub{font-size:11px;color:var(--t3);margin-top:2px}
|
||
.nav-top{display:flex;gap:8px}
|
||
.nav-top a{padding:8px 16px;border-radius:8px;font-size:13px;font-weight:500;color:var(--t2);text-decoration:none;border:1px solid var(--border);transition:all .2s}
|
||
.nav-top a:hover,.nav-top a.active{background:var(--amber);color:#000;border-color:var(--amber)}
|
||
.container{max-width:1200px;margin:0 auto;padding:32px 40px}
|
||
.tag-section{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--amber);margin-bottom:16px}
|
||
h2{font-size:22px;font-weight:700;margin-bottom:6px}
|
||
.subtitle{color:var(--t3);font-size:13px;margin-bottom:24px}
|
||
.disclaimer{background:rgba(245,158,11,.06);border:1px solid rgba(245,158,11,.2);border-radius:12px;padding:16px 20px;margin-bottom:28px;font-size:13px;color:var(--amber);line-height:1.6}
|
||
.disclaimer b{color:var(--t1)}
|
||
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:28px}
|
||
.kpi{background:var(--s1);border:1px solid var(--border);border-radius:14px;padding:20px}
|
||
.kpi .val{font-family:'JetBrains Mono',monospace;font-size:28px;font-weight:700;margin-bottom:4px}
|
||
.kpi .lbl{font-size:11px;color:var(--t3);text-transform:uppercase;letter-spacing:.06em}
|
||
.kpi .sub{font-size:11px;color:var(--t3);margin-top:4px}
|
||
.green{color:var(--teal)}.amber{color:var(--amber)}.purple{color:var(--accent)}.blue{color:var(--blue)}.red{color:var(--red)}
|
||
.card{background:var(--s1);border:1px solid var(--border);border-radius:14px;padding:24px;margin-bottom:20px}
|
||
.card h3{font-size:15px;font-weight:600;margin-bottom:16px}
|
||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||
th{text-align:left;padding:12px 16px;font-size:11px;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;font-weight:600;border-bottom:1px solid var(--border);background:rgba(255,255,255,.02)}
|
||
td{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.03);color:var(--t2)}
|
||
td:first-child{color:var(--t1);font-weight:500}
|
||
.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}
|
||
.tag-real{background:rgba(16,185,129,.15);color:var(--teal)}
|
||
.tag-note{background:rgba(245,158,11,.15);color:var(--amber)}
|
||
.tag-info{background:rgba(59,130,246,.15);color:var(--blue)}
|
||
.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:28px}
|
||
.funnel{display:flex;align-items:center;gap:0;margin-bottom:28px;overflow-x:auto}
|
||
.funnel-step{flex:1;text-align:center;padding:16px 8px;background:var(--s1);border:1px solid var(--border);border-radius:12px;min-width:120px}
|
||
.funnel-step .num{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700;margin-bottom:4px}
|
||
.funnel-step .lbl{font-size:10px;color:var(--t3);text-transform:uppercase}
|
||
.funnel-step .pct{font-size:10px;color:var(--t2);margin-top:2px}
|
||
.funnel-arrow{padding:0 6px;color:var(--t3);font-size:16px;flex-shrink:0}
|
||
.footer{text-align:center;padding:32px;color:var(--t3);font-size:11px;border-top:1px solid var(--border)}
|
||
.footer a{color:var(--amber);text-decoration:none}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="top">
|
||
<div class="logo">
|
||
<div class="logo-mark">W</div>
|
||
<div>
|
||
<h1>WEVADS <span>Performance</span></h1>
|
||
<div class="logo-sub">Données réelles infrastructure — Zéro simulation</div>
|
||
</div>
|
||
</div>
|
||
<div class="nav-top">
|
||
<a href="medreach-dashboard.html">📊 Reach HCP</a>
|
||
<a href="medreach-campaign.html">🚀 Projection Pharma</a>
|
||
<a href="wevads-performance.html" class="active">⚡ Performance Réelle</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="container">
|
||
<div class="disclaimer">
|
||
⚠️ <b>Transparence totale</b> — Cette page affiche exclusivement des données réelles extraites de la base WEVADS (PostgreSQL adx_system).
|
||
Les campagnes ci-dessous sont du <b>performance marketing</b> (cold emailing B2C) — les taux ne sont PAS comparables à du ciblage pharma HCP qui affiche typiquement 20-35% d'ouverture sur des bases consenties.
|
||
</div>
|
||
|
||
<div class="tag-section">Volume Infrastructure</div>
|
||
<h2>Capacité prouvée — Données réelles oct. 2025 → mars 2026</h2>
|
||
<div class="subtitle">Source : admin.campaign_performance + admin.unified_send_log (PostgreSQL S95)</div>
|
||
|
||
<div class="kpi-row">
|
||
<div class="kpi"><div class="val amber">1 135 921</div><div class="lbl">Emails Envoyés</div><div class="sub">Campagnes WEVADS réelles</div></div>
|
||
<div class="kpi"><div class="val green">581 564</div><div class="lbl">Délivrés</div><div class="sub">51.2% delivery rate</div></div>
|
||
<div class="kpi"><div class="val blue">4 838</div><div class="lbl">Clicks Trackés</div><div class="sub">Redirect tracking actif</div></div>
|
||
<div class="kpi"><div class="val purple">70</div><div class="lbl">Leads Générés</div><div class="sub">Conversions prouvées</div></div>
|
||
</div>
|
||
|
||
<div class="tag-section">Funnel Réel</div>
|
||
<div class="funnel">
|
||
<div class="funnel-step"><div class="num amber">1.14M</div><div class="lbl">Envoyés</div><div class="pct">100%</div></div>
|
||
<div class="funnel-arrow">→</div>
|
||
<div class="funnel-step"><div class="num green">581K</div><div class="lbl">Délivrés</div><div class="pct">51.2%</div></div>
|
||
<div class="funnel-arrow">→</div>
|
||
<div class="funnel-step"><div class="num blue">1 879</div><div class="lbl">Opens</div><div class="pct">0.32%</div></div>
|
||
<div class="funnel-arrow">→</div>
|
||
<div class="funnel-step"><div class="num purple">4 838</div><div class="lbl">Clicks</div><div class="pct">0.43%</div></div>
|
||
<div class="funnel-arrow">→</div>
|
||
<div class="funnel-step"><div class="num" style="color:var(--teal)">70</div><div class="lbl">Leads</div><div class="pct">0.006%</div></div>
|
||
</div>
|
||
|
||
<div class="g2">
|
||
<div class="card">
|
||
<h3>📋 Campagnes Réelles <span class="tag tag-real">DB LIVE</span></h3>
|
||
<table>
|
||
<thead><tr><th>Date</th><th>Campagne</th><th>Envoyés</th><th>Délivrés</th><th>Clicks</th><th>Leads</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>19 oct 2025</td><td>CAfr - Pre-Lander (CC)</td><td>499 993</td><td>498 993</td><td>847</td><td>0</td></tr>
|
||
<tr><td>19 oct 2025</td><td>CAfr - Pre-Lander (CC)</td><td>27 000</td><td>21 813</td><td>0</td><td>0</td></tr>
|
||
<tr><td>17 oct 2025</td><td>DE - Google Cloud Ext.</td><td>3 000</td><td>28 740</td><td>90</td><td>48</td></tr>
|
||
<tr><td>17 oct 2025</td><td>DE - Pre-Lander (GCL)</td><td>5 000</td><td>—</td><td>52</td><td>1</td></tr>
|
||
<tr><td>17 oct 2025</td><td>DE - Pre-Lander (GCL)</td><td>5 000</td><td>—</td><td>46</td><td>0</td></tr>
|
||
<tr><td>17 oct 2025</td><td>DE - Pre-Lander (GCL)</td><td>5 000</td><td>—</td><td>43</td><td>0</td></tr>
|
||
<tr><td>17 oct 2025</td><td>DE - Google Cloud Ext.</td><td>5 000</td><td>5 000</td><td>41</td><td>0</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<h3>🔑 Pourquoi ces taux sont normaux</h3>
|
||
<table>
|
||
<thead><tr><th>Contexte</th><th>Open Rate</th><th>Click Rate</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>Cold B2C (nos campagnes)</td><td>0.3%</td><td>0.4%</td></tr>
|
||
<tr><td style="color:var(--amber)">Pharma HCP ciblé (projection)</td><td style="color:var(--amber)">28-35%</td><td style="color:var(--amber)">4-6%</td></tr>
|
||
<tr><td>Benchmark pharma (Mailchimp)</td><td>18-22%</td><td>2.5-3%</td></tr>
|
||
<tr><td>Benchmark IQVIA</td><td>20-25%</td><td>3-4%</td></tr>
|
||
</tbody>
|
||
</table>
|
||
<p style="font-size:12px;color:var(--t3);margin-top:16px;line-height:1.6">
|
||
<b style="color:var(--amber)">⚡ Le différentiel est structurel :</b> le cold emailing B2C envoie à des inconnus non consentis (taux bas = normal).
|
||
Le pharma HCP envoie à des médecins qualifiés, vérifiés Google, avec consentement — d'où des taux 80× supérieurs.
|
||
Notre infrastructure (PMTA, IP dédiées, DKIM/SPF/DMARC) est la même — seule la qualité de la cible change.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tag-section">Infrastructure Prouvée</div>
|
||
<div class="card">
|
||
<h3>🏗️ Ce que 1.1M emails prouve</h3>
|
||
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:16px">
|
||
<div style="padding:16px;background:rgba(16,185,129,.06);border:1px solid rgba(16,185,129,.15);border-radius:12px">
|
||
<div style="font-size:14px;font-weight:600;color:var(--teal);margin-bottom:8px">✅ Scalabilité</div>
|
||
<p style="font-size:12px;color:var(--t2);line-height:1.5">1.1M emails envoyés en quelques jours. L'infra supporte les volumes Ethica (107K HCPs × 18 marques = ~1.9M emails/an).</p>
|
||
</div>
|
||
<div style="padding:16px;background:rgba(59,130,246,.06);border:1px solid rgba(59,130,246,.15);border-radius:12px">
|
||
<div style="font-size:14px;font-weight:600;color:var(--blue);margin-bottom:8px">✅ Tracking</div>
|
||
<p style="font-size:12px;color:var(--t2);line-height:1.5">4,838 clicks + 70 leads trackés en temps réel. Pixel opens + redirect clicks + landing conversion — tout le funnel est instrumenté.</p>
|
||
</div>
|
||
<div style="padding:16px;background:rgba(124,58,237,.06);border:1px solid rgba(124,58,237,.15);border-radius:12px">
|
||
<div style="font-size:14px;font-weight:600;color:var(--accent);margin-bottom:8px">✅ Souveraineté</div>
|
||
<p style="font-size:12px;color:var(--t2);line-height:1.5">Infrastructure 100% souveraine (PMTA sur S204, KumoMTA backup, IP dédiées). Zéro dépendance Mailchimp/SendGrid/Brevo.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<h3>📊 Récap Ethica vs WEVADS — Deux contextes différents</h3>
|
||
<table>
|
||
<thead><tr><th>Indicateur</th><th>WEVADS Perf Marketing (réel)</th><th>Ethica Pharma HCP (projeté)</th><th>Explication</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>Base cible</td><td>3M+ contacts cold</td><td style="color:var(--teal)">107K HCPs qualifiés</td><td><span class="tag tag-info">Ciblage précis</span></td></tr>
|
||
<tr><td>Consentement</td><td>Aucun (cold)</td><td style="color:var(--teal)">En cours de collecte</td><td><span class="tag tag-info">Opt-in requis</span></td></tr>
|
||
<tr><td>Open rate</td><td>0.32%</td><td style="color:var(--teal)">28-35% (projeté)</td><td><span class="tag tag-note">×100 avec consentement</span></td></tr>
|
||
<tr><td>Click rate</td><td>0.43%</td><td style="color:var(--teal)">4-6% (projeté)</td><td><span class="tag tag-note">×10 avec ciblage</span></td></tr>
|
||
<tr><td>Infrastructure</td><td colspan="2" style="text-align:center;color:var(--amber)"><b>Identique</b> — PMTA + DKIM/SPF/DMARC</td><td><span class="tag tag-real">Prouvé</span></td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="footer">
|
||
WEVADS Performance by <a href="https://weval-consulting.com">WEVAL Consulting</a> — Données réelles PostgreSQL adx_system<br>
|
||
Dernière mise à jour : 30 mars 2026 • Zéro simulation, zéro benchmark inventé
|
||
</div>
|
||
<!-- CARTO_REMOVED -->
|
||
|
||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||
<script>
|
||
(function(){
|
||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||
var d = document;
|
||
var m = d.createElement('div');
|
||
m.id = 'opus-udrill';
|
||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||
var inner = d.createElement('div');
|
||
inner.id = 'opus-udrill-in';
|
||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||
m.appendChild(inner);
|
||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||
(d.body || d.documentElement).appendChild(m);
|
||
|
||
function openCard(card) {
|
||
// Clone card content + show close btn + increase font-size
|
||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||
inner.innerHTML = html;
|
||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||
m.style.display = 'flex';
|
||
}
|
||
|
||
function wire(root) {
|
||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||
var cards = root.querySelectorAll(sels);
|
||
for (var i = 0; i < cards.length; i++) {
|
||
var c = cards[i];
|
||
if (c.__opusWired) continue;
|
||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||
var r = c.getBoundingClientRect();
|
||
if (r.width < 60 || r.height < 40) continue;
|
||
c.__opusWired = true;
|
||
c.style.cursor = 'pointer';
|
||
c.setAttribute('role','button');
|
||
c.setAttribute('tabindex','0');
|
||
c.addEventListener('click', function(ev){
|
||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||
if (ev.target.closest('a,button,input,select')) return;
|
||
ev.preventDefault(); ev.stopPropagation();
|
||
openCard(this);
|
||
});
|
||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||
}
|
||
}
|
||
|
||
// Initial + mutation observer
|
||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||
else initRun();
|
||
var mo = new MutationObserver(function(muts){
|
||
var newCard = false;
|
||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||
if (newCard) initRun();
|
||
});
|
||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||
})();
|
||
</script>
|
||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||
|
||
</body>
|
||
</html>
|