À retenir
- Un exit intent Shopify popup se déclenche au moment où un acheteur semble sur le point de partir, vous donnant une dernière chance de capter un e-mail ou d’offrir une réduction.
- Sur desktop, il se déclenche lorsque le curseur se dirige vers le chrome du navigateur. Sur mobile, il n’y a pas de vraie sortie de souris, on se rabat donc sur le bouton retour, un scroll rapide vers le haut, ou un timeout.
- Le code est léger : un détecteur de mouseout, une modale, et un capping (limitation de fréquence) dans le localStorage pour qu’il se déclenche une fois par session et ne revienne pas après avoir été fermé.
- Les règles de Google sur les interstitiels intrusifs visent principalement les popups qui bloquent le contenu à l’arrivée depuis une recherche sur mobile. Un popup d’exit intent qui se déclenche lorsque l’utilisateur part est généralement moins risqué, mais les règles de design restent importantes.
- Fudge intègre le popup en tant que code natif du thème avec les bons déclencheurs et le bon capping, ce qui vous évite d’utiliser une app tierce trop lourde.
Un popup Shopify d’exit intent est un pop-up qui apparaît lorsqu’un visiteur signale qu’il est sur le point d’abandonner la page. C’est l’un des rares moyens de s’adresser à un acheteur au moment exact où il part, avant que l’onglet ne se ferme et que la session ne soit perdue pour de bon.
Ce guide explique ce qu’est l’exit intent, son intérêt pour le CRO, comment l’intégrer de manière native sur desktop et mobile, et les règles de pénalité de Google que vous devez respecter pour que le popup booste vos conversions sans nuire à votre référencement.
Pourquoi vous pouvez nous faire confiance
Nous travaillons dans l’écosystème Shopify depuis plus de quatre ans et avons aidé des centaines de marques à optimiser leurs boutiques. Nous développons Fudge, un éditeur de boutique IA noté 5.0 sur le Shopify App Store, nous travaillons donc sur la même couche de thème où vit un pop-up et voyons exactement ce qui casse quand il est mal codé.
Qu’est-ce qu’un pop-up d’intention de sortie ?
Un pop-up d’intention de sortie est une modale qui reste dormante jusqu’à ce que le visiteur montre son intention de partir, puis s’affiche une fois. C’est un déclencheur basé sur le comportement, pas un minuteur qui s’active dès la première seconde.
Sur ordinateur, “l’intention de partir” est lue depuis la souris. Quand le curseur se déplace vers le haut et sort de la zone d’affichage en direction de la barre d’adresse, du bouton retour ou d’un autre onglet, le navigateur déclenche un événement mouseout ou mouseleave avec le pointeur au-dessus de la page. Cette sortie par le haut est le signal classique de l’intention de sortie.1
Le contenu est généralement une seule offre ciblée : un code promo pour une première commande, une inscription à la newsletter ou un rappel des articles qui attendent encore dans le panier.
L’intérêt pour le CRO
La valeur réside dans le timing. Un pop-up classique interrompt un acheteur en pleine navigation. Un pop-up de sortie n’interrompt personne, car il n’apparaît que lorsque le visiteur a déjà décidé de partir.
Cela en fait une couche de récupération à bas coût. Un visiteur qui allait partir les mains vides laisse finalement une adresse e-mail, ou change d’avis grâce à une réduction. Vous ne volez pas l’attention d’un acheteur engagé, vous en rattrapez un sur le pas de la porte.
L’intention de sortie est une tactique au sein d’une stratégie de conversion plus large. Pour une vue d’ensemble, consultez notre guide du CRO sur Shopify. Pour la partie capture d’e-mails en particulier, découvrez comment ajouter un pop-up e-mail sur Shopify.
Comment créer un pop-up d’intention de sortie sur Shopify
Vous n’avez pas besoin d’une application dédiée. Une implémentation native comporte trois parties : le détecteur de sortie, la modale, et la limite de fréquence qui l’empêche de devenir agaçant.
1. Détecter la sortie sur ordinateur
Sur desktop, le signal le plus fiable est le curseur quittant le bord supérieur du document. Écoutez l’événement mouseleave sur le document et vérifiez que le pointeur est au niveau ou au-dessus du haut du viewport.
document.addEventListener('mouseleave', (event) => {
// clientY <= 0 signifie que le curseur est sorti par le bord supérieur
if (event.clientY <= 0) {
showExitPopup()
}
})
Vérifier clientY <= 0 est important. Sans cela, vous déclencheriez le popup chaque fois que le curseur quitte la page dans n’importe quelle direction, y compris en descendant vers la barre des tâches, ce qui n’est pas un signal de sortie.
2. Gérer le problème du mobile
Le mobile n’a pas de curseur, il n’y a donc pas de véritable mouseout à détecter. Un script d’exit-intent pour desktop ne sert à rien sur un téléphone, et la majorité du trafic Shopify est mobile.
Pour être honnête, l’exit intent sur mobile est une approximation. À la place, vous choisissez un signal indirect (proxy) :
| Signal | Comment cela se traduit par un “départ” | Attention à |
|---|---|---|
| Bouton retour | history.pushState puis un écouteur popstate capte l’appui sur retour | Peut sembler manipulateur si cela bloque la navigation |
| Scroll rapide vers le haut | Un scroll rapide vers le haut suggère qu’on se dirige vers la barre d’adresse | Déclenchement intempestif facile lors d’une navigation normale |
| Timeout d’inactivité | Aucune interaction pendant N secondes implique un désengagement | Pas vraiment une sortie, juste de l’inactivité |
Aucun n’est aussi propre que le signal sur desktop. L’approche du bouton retour est la plus proche de la véritable intention, mais traitez-la avec précaution : ne piégez jamais complètement l’acheteur sur la page, et laissez l’action de retour du navigateur fonctionner.
3. Limiter la fréquence pour un affichage unique
Un popup d’exit intent qui réapparaît sur chaque page, à chaque session, est un excellent moyen de générer un rebond (bounce). Stockez un flag pour qu’il ne se déclenche qu’une seule fois et respecte la fermeture.
const SEEN_KEY = 'exit_popup_seen'
function showExitPopup() {
// déjà affiché ou fermé lors de cette session, on ne fait rien
if (localStorage.getItem(SEEN_KEY)) return
openModal()
localStorage.setItem(SEEN_KEY, '1')
}
Utilisez localStorage pour un capping qui persiste d’une visite à l’autre, ou sessionStorage si vous voulez uniquement le bloquer pour la session en cours. Lorsque l’acheteur ferme ou convertit sur le popup, ce même flag l’empêche de revenir.
La règle est simple : respectez la fermeture. Si quelqu’un ferme le popup, il a donné sa réponse. Ne lui redemandez pas au prochain chargement de la page.
Les pop-ups d’intention de sortie nuisent-ils au SEO ?
C’est le point sur lequel la plupart des guides se trompent, voici donc la version exacte.
Google a publié des directives sur les interstitiels intrusifs qui peuvent rendre le contenu plus difficile d’accès. Cela s’applique principalement aux pages où l’on accède au contenu depuis une recherche sur mobile, où un pop-up bloque le contenu principal soit au chargement de la page, soit juste après.2
Ce que les directives signalent comme un problème :
- Un pop-up qui recouvre le contenu principal dès que le visiteur arrive d’un résultat de recherche.
- Un interstitiel autonome que l’utilisateur doit fermer avant de pouvoir lire quoi que ce soit.
- Une mise en page où la zone au-dessus de la ligne de flottaison est principalement l’interstitiel plutôt que le contenu.
Ce que Google décrit comme étant généralement moins risqué :
- Les interstitiels requis par la loi, comme le consentement aux cookies ou la vérification de l’âge.
- Les boîtes de dialogue de connexion sur des contenus qui ne sont pas censés être indexés publiquement.
- Les bannières qui occupent un espace raisonnable et sont faciles à fermer.
Un pop-up d’intention de sortie se situe plutôt du côté sûr, car il se déclenche quand l’utilisateur part, pas quand il arrive d’une recherche. Il ne bloque pas le contenu à l’entrée, ce qui est le comportement visé par les directives.
Considérez cela comme de bonnes pratiques de design, pas comme une chute garantie dans les classements. Il n’y a pas de pourcentage de pénalité officiel publié, et méfiez-vous de tout guide qui en invente un. Configurez le pop-up pour qu’il se déclenche à la sortie, gardez-le facile à fermer, et vous resterez bien dans l’esprit des règles.
Règles de design et d’UX pour les pop-ups de sortie
Un pop-up qui convertit et un pop-up qui agace ne sont séparés que par quelques détails.
- Ne le déclenchez jamais à l’entrée. Tout l’intérêt est qu’il s’active sur l’intention de sortie, pas sur un minuteur dès le chargement de la page.
- Rendez la fermeture évidente. Un bouton de fermeture clair, un clic sur l’arrière-plan et la touche
Échap(Escape) devraient tous le fermer. Un acheteur piégé est un acheteur perdu. - Ne bloquez le focus que pendant qu’il est ouvert. Une modale doit retenir le focus du clavier tant qu’elle est visible pour que la navigation par tabulation reste à l’intérieur, puis rendre le focus à la page à la fermeture. C’est le seul endroit où un “focus trap” est justifié, et il doit relâcher le focus dès que le pop-up se ferme.
- Ajoutez le bon ARIA. Utilisez
role="dialog"avecaria-modal="true"et un label pour que les lecteurs d’écran l’annoncent comme une boîte de dialogue. - N’empilez pas les pop-ups. Si une bannière de cookies, un widget de chat et une modale de newsletter s’affichent tous en même temps, vous obtenez un mur de pop-ups. Vérifiez ce qui s’affiche déjà avant d’en ajouter un autre.
Faites ça bien et le pop-up sera perçu comme une dernière offre utile plutôt que comme un obstacle. Pour une variante axée sur la newsletter avec le même fonctionnement, consultez notre guide sur le pop-up de newsletter Shopify.
App vs natif : le compromis
Vous pouvez ajouter un pop-up de sortie avec une application en quelques clics, et pour une boutique sans compétences techniques, c’est un bon point de départ. Les compromis sont connus : un abonnement mensuel, du JavaScript supplémentaire sur chaque page, un pop-up qui risque de ne pas correspondre à votre thème, et une dépendance qui supprime le pop-up avec elle lors de la désinstallation.
Le code natif évite ces quatre problèmes. Le hic, c’est que quelqu’un doit coder correctement le détecteur, la modale, la limite de fréquence et les détails d’accessibilité. C’est ce vide que la section suivante vient combler.
La place de Fudge
Fudge est un éditeur de boutique IA qui écrit du code de thème natif. Vous décrivez le pop-up en langage clair : “ajoute un pop-up d’intention de sortie qui offre 10 % de réduction quand un visiteur sur ordinateur s’apprête à partir, avec un déclenchement via le bouton retour sur mobile, qui ne s’affiche qu’une fois par session.” Il écrit le Liquid, le CSS et le JavaScript directement dans votre thème.
Puisque le résultat est natif, il n’y a aucun widget tiers qui s’affiche par-dessus votre boutique, pas de script d’application supplémentaire sur chaque page, et pas de frais mensuels pour le pop-up. Le contrôle de la fréquence et les déclencheurs de sortie sont intégrés, pour qu’il s’affiche une fois et respecte la fermeture.
Et comme c’est du code de thème, il survit à la désinstallation. Annulez Fudge et le pop-up reste exactement où il est, à l’inverse d’un élément rendu par une app qui disparaît quand vous la supprimez. C’est la même chose pour tout le reste que vous construisez avec l’éditeur de boutique Shopify.
FAQ
Sur desktop, il écoute le curseur qui quitte le haut de la page. Un événement mouseleave sur le document avec un clientY inférieur ou égal à zéro signifie que le pointeur est remonté vers le chrome du navigateur, ce qui est le signal classique de sortie. Le mobile n'a pas de curseur, il s'appuie donc sur des signaux indirects (proxys) comme un bouton retour, un scroll rapide vers le haut ou un timeout d'inactivité.
Pas de la même manière. Les téléphones n'ont pas de souris, il n'y a donc pas de véritable mouseout à capter. Le contournement habituel consiste à surveiller l'appui sur le bouton retour via l'API history, car c'est ce qui se rapproche le plus de la véritable intention de sortie. Évitez simplement de piéger complètement le visiteur sur la page ou de bloquer la navigation normale.
Généralement, le risque est plus faible que pour les autres popups. Les règles de Google sur les interstitiels intrusifs visent principalement les popups qui bloquent le contenu dès l'arrivée depuis une recherche sur mobile. Un popup d'exit intent se déclenche lorsque le visiteur part, pas lorsqu'il arrive, il ne bloque donc pas le contenu de la manière ciblée par ces règles. Assurez-vous qu'il soit facile à fermer pour éviter tout problème.
Une fois par session maximum, et plus jamais après avoir été fermé. Stockez un flag dans le localStorage ou le sessionStorage lorsqu'il s'affiche, puis vérifiez ce flag avant de le déclencher à nouveau. Afficher le même popup à plusieurs reprises est le meilleur moyen de générer un rebond (bounce) et d'agacer les clients réguliers.
Non. Un popup d'exit intent correspond à une petite portion de code natif dans votre thème : un détecteur de mouseout, une modale avec une bonne accessibilité et un capping de fréquence. Les apps sont plus rapides à installer, mais ajoutent un abonnement mensuel, du JavaScript supplémentaire et une dépendance qui supprime le popup lors de la désinstallation. Fudge développe la même chose en code natif qui reste en place même si vous annulez.
Limitez-vous à une seule demande ciblée. Une réduction sur la première commande, une inscription à la newsletter ou un rappel des articles encore dans le panier fonctionnent bien, car cela donne à un acheteur hésitant une raison concrète de rester. Évitez d'empiler plusieurs offres ou de longs formulaires, qui ajoutent de la friction au moment où la personne est déjà sur le départ.
Footnotes
-
MDN Web Docs, “Element: mouseleave event” et “Document: mouseout event” - le pointeur quittant un élément déclenche ces événements, et lire
clientY <= 0sur le document permet d’identifier un curseur qui est sorti par le bord supérieur du viewport. https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event ↩ -
Google Search Central Blog, “Helping users easily access content on mobile” (2016) - décrit les interstitiels intrusifs qui peuvent rendre le contenu moins accessible sur les pages où l’on arrive depuis une recherche, et liste les exceptions, notamment les interstitiels requis par une obligation légale (comme pour les cookies ou la vérification de l’âge) et les bannières qui utilisent un espace d’écran raisonnable et qui peuvent être facilement fermées. https://developers.google.com/search/blog/2016/08/helping-users-easily-access-content-on ↩