Aller au contenu
Hébergé et stocké en Europe. Vos données ne partent jamais aux États-Unis.Hébergé et stocké en EuropeEn savoir plus

Deux lignes de code, côté navigateur ou serveur.

Le script dans le <head> de vos pages, la commande sur la page de confirmation. Le reste se règle dans Probant. Pour un affichage sans clignotement, l’affectation peut se faire sur votre serveur, avant le rendu.

Installation
<script async src="https://app.probant.app/sdk/v1.js" data-key="pk_…"></script>
probant.track("commande", montant);

Mise en route

  • Extrait collé sur le site
  • Premiers événements reçus
  • Premier test lancé

Chaque étape se coche d’elle-même dès que Probant la constate.

0:38 · sans son, en boucle
Lire la transcription

Combien de lignes pour commencer ? De l’extrait collé dans le <head> jusqu’aux outils de l’équipe.

Un seul extrait, dans le <head>. Le script pèse 6 487 octets compressés, sous son budget de 6,5 Ko. Il se charge en asynchrone et ne masque pas la page.

Rien ne part avant l’accord du visiteur. Avant l’accord, Probant ne pose aucun cookie, n’affecte personne et n’envoie rien. Accepté en cours de visite, la page affichée reste l’originale : la variante commence à la page suivante.

Côté serveur, la page arrive déjà modifiée. L’aide serveur affecte le visiteur avant le rendu : la variante est là dès le premier affichage, le script se contente de mesurer.

Les résultats partent vers les outils de l’équipe. Les alertes partent vers Slack ou un webhook signé. Autres sorties : export CSV, lien de partage, API de gestion, serveur MCP, outils d’analyse.

La démo est ouverte, sans inscription.

Ce qu’il faut installer, et rien de plus.

Les extraits ci-dessous sont ceux de la documentation. La clé publique de votre espace commence par pk_ ; la clé secrète ne quitte jamais votre serveur.

Le script se charge sans jamais masquer la page.

Le script affecte les visiteurs, applique les modifications de l’éditeur et mesure. Il se charge en asynchrone ; chaque modification s’applique dès que son élément existe, puis à chaque redessin de la page (React, navigation sans rechargement), avant l’affichage suivant.

  • Le premier bloc met consent et track en file d’attente avant le chargement : facultatif si vous n’appelez rien avant
  • Visez des repères stables ([data-add-to-cart], identifiants) plutôt que des classes de thème
Dans le <head> de chaque page
<script>
  window.probant = window.probant || [];
  ["consent", "track"].forEach(function (m) {
    probant[m] = probant[m] || function () { probant.push([m].concat([].slice.call(arguments))); };
  });
</script>
<script async src="https://app.probant.app/sdk/v1.js" data-key="pk_…"></script>
Poidsmoins de 6,5 Kocompressé
Chargementasynchrone
Page masquéejamais

Le consentement passe avant tout.

Si votre espace exige le consentement (réglage par défaut), le script ne pose aucun cookie, n’affecte personne et n’envoie rien tant que le visiteur n’a pas accepté. Transmettez son choix à chaque page, dès que votre outil de consentement le connaît.

Rien ne change sous les yeux du visiteur : s’il accepte en cours de lecture, la page reste telle qu’il la voit et sa variante commence à la page suivante. S’il a déjà accepté lors d’une visite passée, sa variante est là dès le chargement, et rien ne part avant que votre outil de consentement ait confirmé.

  • Cookie probant_id interne à votre site, SameSite=Lax
  • 390 jours au plus après la première visite, jamais prolongé au-delà
  • Un refus efface le cookie et les traces locales
À chaque page, dès que le choix est connu
probant.consent(true);  // accepté : affectation et mesure, sans bascule de la page affichée
probant.consent(false); // refusé ou retiré : cookie et traces locales effacés

Une conversion se mesure en une ligne.

Le nom de l’événement (« commande », « ajout-panier »…) est celui que référencent les métriques de votre espace. Avec un montant, il alimente le CA par visiteur ; sans montant, il compte pour un.

Page de confirmation, ajout au panier…
probant.track("commande", 89.9); // avec un montant
probant.track("ajout-panier");   // sans montant : compte pour 1
Chaque conversion est rattachéeaux tests vus par le visiteur, avec leur variante

Côté serveur, la page arrive déjà modifiée.

L’aide d’affectation serveur ne dépend d’aucun framework : un proxy Next.js, un worker, un middleware. La variante est connue avant le rendu, donc aucun clignotement. Le script reste sur la page pour envoyer l’exposition et les conversions.

  • Même tirage que le script : même visiteur, même variante
  • Le cookie probant_id, reposé par votre serveur avec son échéance d’origine, n’est plus coupé au bout de 7 jours par Safari
  • La configuration se garde une minute en mémoire ; si Probant ne répond pas, la précédente sert
  • Les fichiers de l’aide se copient dans votre projet
proxy.ts · affectation avant le rendu
const { setCookie, assignments } = assignRequest({
  cookieHeader: request.headers.get("cookie"),
  url: request.url,
  userAgent: request.headers.get("user-agent"),
  config, // GET /api/v1/config, gardée une minute en mémoire
  consent: request.cookies.get("consentement")?.value === "oui",
});
// assignedVariants(assignments) → { "date-livraison": "b" }

Une API pour vos serveurs.

Pour envoyer des événements depuis un serveur, par exemple les commandes de votre back-office, et pour lire la configuration publique de l’espace.

Depuis votre serveur
POST /api/v1/events
x-probant-key: pk_…

{ "events": [
  { "type": "conversion", "visitorId": "…", "metric": "commande",
    "value": 89.9, "timestamp": "2026-11-10T08:30:00Z" }
] }
Volume
500 événements et 256 Ko au plus par envoi.
Horodatage
Millisecondes Unix ou date ISO 8601 ; pas plus de 5 minutes dans le futur ni de 7 jours dans le passé.
Validation
Chaque événement est validé seul : un événement fautif n’empêche pas les autres. La réponse 202 donne le décompte des acceptés et des refusés.
Erreurs
401 pour une clé absente, inconnue ou secrète ; 413 pour un corps trop gros ; 503 si le service est indisponible.
Configuration
GET /api/v1/config renvoie les tests en cours, les déploiements, le holdout et le réglage du consentement, en cache une minute.

Shopify et les autres plateformes.

Le script fonctionne sur toute boutique où l’on peut ajouter du code dans le <head> des pages, quelle que soit la plateforme.

Shopify · layout/theme.liquid
<head>
  …
  {{ content_for_header }}
  <script async src="https://app.probant.app/sdk/v1.js" data-key="pk_…"></script>
</head>

Par le thème.

Sur Shopify, le script se colle dans le gabarit du thème, comme tout extrait à placer dans le <head>. La commande se mesure avec probant.track sur la page de confirmation, ou par l’API des événements depuis votre serveur.

Les commandes du back-office.

Les commandes peuvent aussi venir du back-office : par webhooks Shopify, ou par l’API des commandes depuis n’importe quelle boutique. Probant les rapproche des visiteurs, remboursements déduits, et calcule la marge sur le serveur avec le coût de chaque produit, lu dans Shopify ou importé en CSV : ni coût ni marge ne passent par le script. Les webhooks se configurent dans l’administration de la boutique.

Les résultats vont où travaille l’équipe.

Une alerte quand un test peut conclure ou qu’un garde-fou coupe un déploiement, un lien à envoyer à qui n’a pas de compte, et une API pour piloter Probant depuis vos outils, ou depuis un assistant IA.

Brancher Probant à Claude Code
claude mcp add --transport http probant \
  "https://app.probant.app/api/v1/mcp" \
  --header "Authorization: Bearer sk_…"
AlertesSlack ou webhook signé
Test décidé
Répartition anormale
Garde-fou franchi
Quota atteint
Interaction entre tests
L’effet s’estompe
Drapeau coupé
Variante au plancher
Modification qui ne s’affiche pas
Alertes
Vers Slack ou une adresse https de votre choix, en webhook signé, chaque fait envoyé une seule fois : test décidé, répartition anormale, garde-fou franchi, quota atteint, interaction entre tests, l’effet s’estompe, drapeau coupé, variante au plancher et modification qui ne s’affiche pas.
Export CSV
Une ligne par métrique et par variante : la principale, puis jusqu’à 10 secondaires et garde-fous, nombres bruts compris. Il s’ouvre tel quel dans un tableur français.
Lien de partage
En lecture seule, ouvert sans compte, valable 7, 30 ou 90 jours, ou sans échéance ; 10 liens actifs au plus par rapport, révocables à tout moment.
API de gestion
Créer, lancer, arrêter et déployer un test, gérer les métriques et les drapeaux, lire les résultats, avec une clé secrète dont les droits ne dépassent jamais ceux de son auteur. Description OpenAPI publique, 120 appels par minute et par clé.
Serveur MCP
Les mêmes opérations pour un assistant IA (Claude, ChatGPT…), avec la même clé, ou sans clé : l’assistant vous demande l’accès, jamais plus que votre rôle, et se déconnecte depuis les réglages. Lancer, arrêter, déployer ou couper un drapeau montre d’abord un aperçu et attend votre confirmation explicite.
Outils d’analyse
Sur réglage, outil par outil, le script signale chaque exposition à Google Analytics 4, Segment, Contentsquare, Piano Analytics, Amplitude et Mixpanel, déjà installés sur la page, après l’accord du visiteur seulement.

Dans le détail.

Poids
6 487 octets compressés, moins de 6,5 Ko, chargé en asynchrone.
Affichage
Page jamais masquée : 20 ms de calcul, premier affichage médian de 104 ms avec Probant et 100 ms sans (Chromium 153.0.8010.12, processeur ralenti 4 fois, médiane de 31 paires de chargements sans puis avec Probant, mesurée le 10 nov. 2026).
Clés
Clé publique pk_… dans le script et l’API des événements ; une clé secrète est refusée.
Consentement
Rien n’est posé ni envoyé avant l’accord du visiteur, si l’espace l’exige (par défaut).
Conservation
Événements conservés 13 mois, purgés chaque nuit ; cookie de 390 jours au plus.
Hébergement
Base de données et calcul en région Paris.

Questions fréquentes.

Le script ralentit-il mon site ?

Il pèse 6 487 octets compressés et se charge en asynchrone, sans masquer la page. Mesuré dans Chromium 153.0.8010.12, processeur ralenti 4 fois, médiane de 31 paires de chargements sans puis avec Probant, mesurée le 10 nov. 2026 : 20 ms de calcul sur le fil principal, premier affichage médian de 104 ms avec Probant et 100 ms sans. Chez vos visiteurs, Probant mesure aussi LCP, INP et CLS par variante, et le coût réel du script. Pour un affichage sans aucun clignotement, l’affectation peut se faire côté serveur.

Faut-il changer quelque chose pour déployer un gagnant ?

Non. Le script et l’aide serveur lisent les déploiements dans la configuration de l’espace : la part exposée monte depuis Probant, sans toucher au site.

Puis-je tester une modification rendue par mon serveur ?

Oui : l’aide serveur donne la variante avant le rendu, votre page l’affiche, et le script, sans modification à appliquer, se contente de mesurer.

Probant Ou pas encore…

Créez votre espace, ou explorez d’abord la démo avec les données d’une boutique fictive.

  • Démo ouverte, sans inscription
  • Forfait fixe, jamais de dépassement
  • Données hébergées à Paris