Aide

Dépannage

Que vérifier quand le chat ne s’affiche pas, qu’un Contact n’est pas reconnu ou qu’un webhook n’arrive pas.

Mis à jour le 28 octobre 2026

Commencez par la console du navigateur ou de Metro : chaque problème d’installation y laisse un message qui commence par Zean.

Le chat ne s’affiche pas sur le site

  1. Le domaine : la page doit être sur le domaine de l’App, www. compris, ou sur localhost. Un autre sous-domaine ne l’est pas. Voir Saisir le domaine de votre site.
  2. Le code : les deux balises script, ensemble, dans cet ordre, avant </body>, sur la page testée.
  3. La clé : copiez le code depuis Paramètres de l’App > Développeurs > Démarrage plutôt que de le retaper.
  4. Une App en pause : au-delà de la limite du Plan, les Apps les plus récentes sont en pause et le chat affiche « Le chat est indisponible pour le moment ».
  5. Un bloqueur de publicité ou une extension de confidentialité : testez dans une fenêtre de navigation privée, sans extension.

Les messages de la console :

  • Zean: no App has the key "…" : la clé est fausse.
  • Zean: … is not the App’s Domain : saisissez ce domaine dans « Domaine », ou ouvrez le site sur son bon domaine.
  • Zean: … is not the App’s Bundle ID / Package name : saisissez-le dans « Bundle ID (iOS) » ou « Nom de package (Android) ».
  • Zean: the chat stays closed: this page is one of the App’s Hidden pages. : votre code a ouvert le chat sur une page de « Pages masquées », dans Paramètres de l’App > Développeurs > Domaine, apps et pages. Retirez la page de la liste pour y garder le chat.
  • Zean: set window.zean = { appKey: "…" } before loading the chat. : le premier script manque, ou vient après le second.
  • Zean: the chat could not load from … : l’adresse du chargeur est bloquée ou fausse : un bloqueur ou une politique CSP.

Sites React et Vue

  • Affichez ZeanChat une seule fois, dans le layout racine, ou installez createZean() une seule fois. Une deuxième clé sur la même page est ignorée, et la console l’indique.
  • Avec une politique CSP, autorisez l’hôte du chargeur (l’adresse du script de votre code d’installation) en script-src et en frame-src : le chat s’ouvre dans un cadre servi par ce même hôte.
  • Un en-tête Permissions-Policy qui refuse display-capture au cadre du chat empêche le navigateur de capturer l’onglet : le bouton Capture d’écran redessine alors la page, sans les vidéos, cartes et images d’autres sites. Pour une capture exacte, autorisez l’hôte du chargeur : display-capture=("https://hote-du-chargeur").
  • Un changement de locale attend le prochain chargement de la page.

Apps React Native

  • Le chat ne s’affiche pas : le Bundle ID ou le nom de package de l’application n’est pas celui saisi dans Paramètres de l’App > Développeurs > Domaine, apps et pages. La console de Metro dit lequel elle a lu. Expo Go l’affiche toujours.
  • Zean: the chat could not read this app’s Bundle ID or Package name : installez expo-application (Expo) ou react-native-device-info (React Native CLI), puis refaites une version de l’application.
  • Le chat ne s’ouvre qu’avec open() de useZean() : il n’a pas de bouton flottant. ZeanChat doit être affiché une seule fois, à la racine.
  • La conversation repart de zéro à chaque lancement, et la console de Metro dit no storage found : installez AsyncStorage, MMKV ou Expo SQLite, puis refaites un build de l’application. Le chat le trouve seul.
  • Pas de bouton photo : ni expo-image-picker ni react-native-image-picker n’est installé, ou l’app n’a pas été recompilée depuis. Ces modules sont natifs : il faut une nouvelle version de l’app. Expo Go les contient déjà.
  • L’App Store refuse la version sans texte sur les photos : ajoutez NSPhotoLibraryUsageDescription dans Info.plist avec React Native CLI, ou le plugin expo-image-picker dans app.json avec Expo.
  • Les photos HEIC de l’iPhone sont envoyées en JPEG : le SDK demande au sélecteur la version compatible. Une photo fait 10 Mo au plus.

Contacts vérifiés

  • Zean: the user was left out: it needs an id, text or a number. : user n’a pas d’id. Le Contact reste anonyme.
  • Zean: left out of the user, as they do not fit: email. : ce détail est laissé de côté, le reste passe. Un email doit être valide, un téléphone écrit en chiffres, une langue un code comme pt ou pt-BR.
  • Un deuxième appareil affiche « Déjà échangé avec nous sur un autre appareil ? » : c’est normal. La personne reçoit un code à son email enregistré et le saisit pour retrouver sa Conversation. D’ici là, cet appareil est « Non vérifié » dans le tableau de bord.
  • Pas de proposition de code sur un deuxième appareil : le Contact vérifié n’a pas d’email enregistré. Passez email dans user sur un appareil qui a déjà rejoint le Contact.
  • Un appareil connecté affiche « Vous nous avez écrit avant de vous connecter ? » : une Conversation anonyme a donné cet email. La personne saisit le code envoyé à cette adresse pour la ramener, ou choisit « Ce n’est pas moi » pour masquer l’offre sur cet appareil.
  • Un code refusé : il marche 10 minutes et 5 essais, seulement sur l’appareil qui l’a demandé. Après 3 codes en une heure, la personne attend une heure avant d’en demander un autre.
  • Pour passer d’une personne à une autre, passez le nouvel user, ou appelez signOut() entre les deux.

Un webhook n’arrive pas

Ouvrez d’abord Paramètres de l’App > Développeurs > Webhook > « Envois récents » : chaque appel y figure avec son code de réponse ou son erreur, le début de la réponse de votre serveur et son temps de réponse. « Renvoyer » le rejoue une fois le problème réglé.

  • Aucun appel dans la liste : l’adresse est-elle enregistrée ? Une réponse automatique de l’IA n’envoie aucun événement.
  • « Adresse introuvable », « Erreur de certificat » ou « Connexion refusée » : l’adresse est-elle publique, en https, avec un certificat valide, et votre serveur écoute-t-il ? localhost et les réseaux privés sont refusés : sur votre ordinateur, utilisez la CLI Zean.
  • « Délai dépassé » ou des appels répétés : répondez par un code 2xx en moins de 10 secondes, sinon l’appel est retenté. Ignorez les doublons grâce à id.
  • Un code 401 ou 403 : votre serveur refuse la signature. Calculez-la sur le corps brut, avant tout décodage JSON ; vérifiez le secret après une régénération, et l’heure de votre serveur. En développement, avec la CLI Zean, le secret est le secret d’écoute. Voir Vérifier la signature d’un webhook.
  • « Envoyer un événement de test » est grisé : aucune CLI Zean ne tourne pour l’App. Un événement de test ne va jamais à l’adresse du webhook.
  • La CLI Zean s’est arrêtée avec un message : la clé CLI a été régénérée. Relancez-le avec la nouvelle clé.

Toujours bloqué ? Lisez aussi Le chat ne s’affiche pas dans le centre d’aide, ou écrivez-nous dans le chat avec le message de la console.