Les tests A/B existent depuis des années, mais la plupart sont encore implémentés côté client.
Ce tutoriel t’explique pas-à-pas comment implémenter un A/B test server-side complet, stable, mesurable, et optimisé pour GA4, sans utiliser d’outils payants.
Les tests A/B existent depuis des années, mais la plupart sont encore implémentés côté client : via JavaScript, Optimizely, AB Tasty ou Google Optimize (désormais fermé).
Problème : ces tests client-side sont exposés à toutes les limitations modernes :
Flicker effect (l’utilisateur voit la version A avant d’avoir B)
Blocage par les adblockers
Tracking cassé à cause des navigateurs (Safari ITP, Firefox ETP)
Perte de performance (FID/CLS)
Fiabilité réduite sur mobile
Incompatibilité progressive avec un web sans cookies
En 2025, la solution la plus robuste est claire :
👉 déplacer l’expérimentation côté serveur, directement dans Google Tag Manager Server-Side (sGTM).
C’est :
plus rapide,
plus fiable,
non bloqué par les navigateurs,
compatible RGPD,
adapté à l’attribution moderne,
et entièrement sous ton contrôle.
Ce tutoriel t’explique pas-à-pas comment implémenter un A/B test server-side complet, stable, mesurable, et optimisé pour GA4, sans utiliser d’outils payants.
Pour réussir un test A/B dans sGTM, il faut comprendre 4 notions :
assignation, variation, persistance, tracking.
Client-side
Le site charge A
JS modifie le DOM → affiche B
L’utilisateur voit un flash
Le tracking est parfois déclenché trop tôt
Mesure faussée
Server-side
La décision A/B est prise avant que la page ne soit servie
L’utilisateur charge directement la bonne variante
UX parfaite
Tracking cohérent
Résultats statistiquement plus fiables
sGTM peut :
réceptionner les requêtes web
calculer la variante (A ou B)
renvoyer une réponse modifiée
fixer un cookie variant stable
envoyer les événements A/B à GA4, Google Ads, Meta CAPI
servir une API "ab-test" pour les apps mobile / SPA
Il devient un moteur d’expérimentation complet.
Cas d’usage parfaits :
version alternative d’une landing page
test de paywall
test de pricing page
test d’un text hero
test d’un layout complet
test API (nouvel onboarding, nouvelle fonctionnalité)
test mobile → via endpoint JSON
Avant de toucher sGTM, il te faut un plan clair.
Quelques exemples SaaS :
nouvelle Landing Page (“Hero B”)
version alternative de la section pricing
un formulaire simplifié (variante B)
un nouveau paywall
activation d’une fonctionnalité via API
Toujours garder les choses simples.
Variante | Description |
|---|---|
A | version actuelle (control) |
B | nouvelle version / nouveau layout |
Tu peux aller jusqu’à 3 variantes, mais au-delà, la puissance statistique baisse.
Un test server-side doit avoir 1 KPI principal, et éventuellement des KPIs secondaires.
Exemples :
taux d’inscription
taux de conversion payante
revenue per visitor
activation d'une fonctionnalité clé
engagement sur la page
Tu dois choisir comment répartir les utilisateurs.
Méthodes :
Stable, non aléatoire, sans fluctuation.
Utile si tu veux du pur aléatoire.
Idéal pour un SaaS.
L’objectif : affecter A ou B, et stocker cette décision.
Tu dois récupérer un identifiant stable :
client_id de GA4
FPID
user_id si login
Dans sGTM → Variables → Google Analytics → “Client ID”.
Une variable custom JS :
function hashString(str) {
let hash = 0;
if (!str) return 0;
for (let i = 0; i < str.length; i++) {
hash = (hash << 5) - hash + str.charCodeAt(i);
hash = hash & hash;
}
return Math.abs(hash);
}
const clientId = data.client.clientId;
return hashString(clientId) % 100;
Cela te donne un bucket 0 à 99, stable pour chaque utilisateur.
Dans GTM SS :
Si bucket < 50 → Variante A
Sinon → Variante B
Exemple :
const bucket = data.variable.randomBucket;
if (bucket < 50) return "A";
else return "B";
Dans les paramètres de réponse → “Set-Cookie” :
Set-Cookie: experiment_variant=A; Max-Age=2592000; Path=/; SameSite=Lax; Secure;
ou :
experiment_variant=B
Durée recommandée : 30 jours.
Ainsi, un utilisateur reste dans la même variante.
Tu as 3 modèles d’implémentation. Choisis celui adapté à ton stack.
Le cas parfait pour les sites SSR / sites marketing.
Fonctionnement :
L'utilisateur visite /landing
La requête arrive dans sGTM
sGTM lit le cookie ou calcule la variante
sGTM renvoie soit landing-original.html, soit landing-b.html
C’est simple et ultra propre.
Tu exposes un endpoint :
https://sgtm.mondomaine.com/ab-test
La réponse :
{
"experiment_id": "exp_hero_v1",
"variant": "B"
}
L'app réagit en conséquence.
Méthode idéale pour React, Vue, Angular, iOS, Android.
/pricing → /pricing-b
simple à mettre en place
utile pour des tests de pages complètes
pas d’impact SEO si meta robots géré correctement
Dans GTM SS :
Mode Preview → onglet "Event Data" → vérifier :
variant assignée
cookie posé
tracking envoyé
redirection ou réponse modifiée
Pour analyser correctement, GA4 doit recevoir :
la variante
l’expérience
les conversions associées
Dans un tag event GA4 (server-side ou client-side) :
event_name: experiment_assigned
parameters:
experiment_id: exp_hero_v1
variant: A
user_properties: {
experiment_variant: "B"
}
Cela permet :
segmentation propre
exploration GA4
retours cohérents
Tu dois propager l’information variant → sur tous les events de l’utilisateur.
Côté sGTM → injecter automatiquement :
variant: A
experiment_id: exp_hero_v1
dans :
purchase
generate_lead
sign_up
etc.
Tu dois envoyer un event_id unique dans :
GA4 via sGTM
client web/app (fallback)
Cela évite les doublons.
Segment A = experiment_variant = A
Segment B = experiment_variant = B
Ensuite, compare :
taux de conversion
engagement
revenue
churn (si app)
scroll depth
clic CTA
Requête type :
SELECT
variant,
COUNTIF(event_name = 'sign_up') / COUNT(*) AS conversion_rate
FROM `myproject.analytics.events_*`
WHERE experiment_id = 'exp_hero_v1'
GROUP BY variant;
Analyse complémentaire :
device_category
traffic_source
landing_page
cohorte temporelle
Tu peux calculer :
Z-test
Bayesian uplift
p-value
intervals de confiance
Ou utiliser un outil :
GSheets “AB Test significance”
CausalImpact (R)
Statistiques BigQuery
Un test robuste doit :
durer min 1 cycle marketing complet (7 à 14 jours)
représenter min 200 conversions
montrer un uplift stable
respecter la cohérence cross-device
Si les conditions sont remplies → publier la variante gagnante.
Pour passer à l’échelle, tu peux faire de sGTM un moteur d’expérimentation.
Exemple stocké dans Cloud Storage / Firestore :
{
"exp_hero_v1": {
"allocation": {
"A": 50,
"B": 50
},
"conditions": {
"path": "/landing"
},
"status": "active"
}
}
Chaque visiteur peut participer à plusieurs tests si :
les expériences n’interfèrent pas
les conditions sont exclusives
l'ordre d'évaluation est défini
Exemples :
90% mobile → Variante B
/pricing → exclure bot
source marketing = meta ads → variante B
test uniquement entre 10h et 18h
Tout peut être scripté.
Créer un dashboard :
split A/B
uplift conversion
uplift revenue
significance
coût par variante (si paid)
Minimiser les variantes (A/B suffit)
Toujours persister la variante via cookie
Versionner les tests
Logger toutes les assignations dans sGTM
Limiter la durée d’un test à 30 jours max
Toujours effectuer un smoke test avant lancement
Garder un audit trail des résultats
Isoler les tests sensibles du reste des scripts
❌ Ne pas persister la variante → résultats invalides
❌ Mesurer uniquement côté client
❌ Ne pas envoyer experiment_id dans GA4
❌ Mélanger plusieurs tests sur la même page
❌ Début de test en plein pic marketing
❌ Oublier la déduplication server ↔ client
❌ Arrêter un test trop tôt
❌ Basculer gagnant sur un échantillon trop petit
Voici un flow très clair, utilisable dans tes formations :
UTILISATEUR → Requête HTTP → sGTM → Calcul variant → Cookie posé → Var A ou B servie
↓ ↓
GA4 <—— event experiment_assigned ————— (server-side)
↓
Conversions trackées avec variant
↓
BigQuery → Analyse → Significance → Décision finale
L’A/B testing server-side via GTM n’est pas seulement une alternative aux outils traditionnels (AB Tasty, Optimizely, VWO).
C’est une révolution méthodologique :
beaucoup plus fiable
nettement plus rapide
invisible pour l’utilisateur
compatible mobile / SPA / API
robuste face à l’ère cookieless
parfaitement mesurable et exportable
Le tout sans coût supplémentaire, simplement via GTM Server-Side et GA4.
C’est la méthode logique, moderne, et durable pour tester :
des pages
des prix
des UI
des flux d’onboarding
des paywalls
des API
des features backend
Si tu maîtrises l’assignation, la persistance, la variante server-side, et le tracking GA4/BigQuery… tu maîtrises tout le framework d’expérimentation moderne.



