Pour plus d'informations, veuillez contacter votre CSM.
Digital Experience Monitoring met à votre disposition des outils pour capturer les erreurs d'API ou les erreurs JS non gérées de votre site. Par exemple : des erreurs techniques qui n'étaient pas prévues.
Néanmoins, il existe beaucoup d'autres erreurs (certaines sont attendues) qui peuvent conduire à des messages s'affichant aux utilisateurs. Par exemple : “Oops, ce produit est en rupture de stock” ou "Ce code postal n'existe pas".
Les erreurs personnalisées ("custom errors" en anglais) vous permettent de collecter et de classer n'importe quel message d'erreur qui apparaît sur votre site au cours de l'expérience utilisateur en fonction de leur impact sur le business pour pouvoir prioriser les corrections à apporter.
Les erreurs personnalisées : qu'est-ce que c'est ?
Les erreurs personnalisées collectent n'importe quel texte affiché sur l'écran de l'utilisateur. Par exemple : le texte contenu dans les bannières, les pop-ups ou dans un champ de formulaire à la suite d'une action utilisateur.
Exemple d'erreur de validation de formulaire :
Vous pouvez aussi utiliser les erreurs personnalisées pour collecter les erreurs qui n'apparaissent pas sur les écrans des utilisateurs.
Les erreurs personnalisées comportent les informations suivantes :
Information sur l'erreur | Détails |
Message obtenu | (Ex : Votre compte n'a pas pu être réactivé, veuillez nous en excuser.) |
Timestamp de l'évènement | |
Attributs optionnels | Informations aidant à spécifier les erreurs (type, sévérité) |
Collecter les erreurs personnalisées
20 erreurs personnalisées peuvent être collectées par page vue au maximum (cette limite inclut les messages de console).
Étape 1 : Implémentation de la fonction
Vous devez implémenter une fonction directement dans le code de la page web pour pouvoir collecter des erreurs personnalisées. La fonction devrait se déclencher à chaque fois que du texte devant être collecté apparaît à l'écran.
Exemple statique : Collecter une chaîne de texte spécifique (Vous devrez implémenter cette fonction pour chacune des chaînes de textes spécifiques que vous souhaitez collecter).
window._uxa.push(["trackError","140000 is not a valid postcode"])
Exemple dynamique : Collecter une chaîne générique (Vous pouvez utiliser cette option pour ne pas avoir à configurer différents extraits de code pour chaque chaîne de message d'erreur).
window._uxa.push([ "trackError", document.querySelector("div[class='newMessagesInfo newError']").textContent, ])
Le tag de tracking (ou "Tracking Tag") utilisera la commande trackError
et acheminera les données vers le point de terminaison "custom-errors".
Vous pouvez aussi utiliser la commande trackError
avec des attributs. Par ailleurs, nous vous recommandons de spécifier des attributs afin que les erreurs collectées puissent être catégorisées.
Exemple de commande trackError
avec des attributs :
window._uxa.push(["trackError", "140000 is not a valid postal code",
{type: "formValidation", severity:"minor", language: "english"}])
Étape 2 : Configurer des attributs optionnels
L'attribut est un objet JavaScript qui se retrouve dans le format suivant : "key":"value".
Note : La "Key" ne sert qu'à catégoriser, tandis que la "Value" représente le nom exacte de la catégorie.
Exemple d'attributs d'objet :
{type: "formValidation", severity: "minor", language: "english"
}
Les limites des attributs d'objet sont :
- Le nombre de propriétés, c'est-à-dire le nombre d'attributs, est limité à 5.
- La longueur maximale de la key est de 30 caractères.
- La longueur maximale de la value est de 30 caractères.
Exemples d'erreurs personnalisées et bonnes pratiques pour leur appellation
Veuillez trouvez ci-dessous des exemples d'erreurs personnalisées, ainsi qu'une présentation des conventions d'appellations pour leur implémentation, classé par cas d'usage.
Pour pouvoir filtrer et hiérarchiser facilement vos erreurs personnalisées, il est fortement recommandé d'utiliser notre guide sur l'utilisation des attributs pour spécifier un message d'erreur.
Note : La "Key" ne sert qu'à catégoriser, tandis que la "Value" représente le nom exacte de la catégorie.
Message | Type d'erreur (fortement recommandé) | Attributs optionnels complémentaires (noms des values) |
Types et exemples génériques |
Key : formValidation ("validation de formulaire") formSubmitFail ("échec de soumission de formulaire") textInfo ("texte d'informations") textError ("texte d'erreur") caughtError ("erreur perçue") httpError ("erreur HTTP") timeout ("délai dépassé") slowRequest ("requête trop lente") Exemple d’implémentation : {type: formValidation}
|
Key : critical ("critique") high ("forte") medium ("moyenne") low ("faible") ---------------------------------- Key : english ("anglais") french ("français") hebrew ("hébreu") chinese ("chinois") ---------------------------------- Key : Values suggérées : 404 500 Failed to execute ("échec d'exécution") ReferenceError ("erreur de référence") SyntaxError ("erreur de syntax") TypeError ("erreur de frappe") URLError ("erreur d'URL") EvalError ("erreur Eval") InternalError ("erreur interne") |
COMPLÉTION DE FORMULAIRE
Message | Type d'erreur (fortement recommandé) | Attributs optionnels complémentaires (noms des values) |
Échec de la soumission du formulaire |
Key : type {type: formSubmitFail} |
Key : language Value : english {language: english} |
Veuillez sélectionner une option |
Key : type {type: formValidation} |
Key : language {language: english} |
Nombre entré invalide |
Key : type {type: formValidation} |
Key : language {language: english} |
Champ de formulaire manquant |
Key : type {type: formValidation} |
Key : language {language: english} |
Délai de complétion du formulaire dépassé |
Key : type {type: timeout} |
Key : language {language: english} |
Ce champ ne peut être laissé vide |
Key : type {type: formValidation} |
Key : language {language: english} |
RECHERCHE DE RÉSULTATS
Message | Type d'erreur (fortement recommandé) | Attributs optionnels complémentaires (noms des values) |
Erreur de résultats de recherche |
Key : type {type: textInfo} |
Key : language {language: english} |
Aucun résultat trouvé pour une recherche par mot-clé |
Key : type {type: textInfo} |
Key : language {language: english} |
PAGE DE DÉTAILS PRODUIT (PDP)
Message | Type d'erreur (fortement recommandé) | Attributs optionnels complémentaires (noms des values) |
Ce produit n'est plus disponible |
Key : type {type: textInfo} |
Key : language {language: english} |
Veuillez choisir une taille |
Key : type {type: textInfo} |
Key : language Value : english {language: english} |
L'article n'a pas pu être ajouté à votre panier |
Key : type {type: textError} |
Key : language Value : english {language: english} |
Nombre d'articles dans le panier dépassé |
Key : type {type: textInfo} |
Key : language Value : english {language: english} |
CHECKOUT
Message | Type d'erreur (fortement recommandé) | Attributs optionnels complémentaires (noms des values) |
Échec du paiement |
Key : type {type: textError} |
Key : language {language: english},
{severity: critical} |
Confirmez le code de sécurité de la carte |
Key : type {type: textInfo} |
Key : language {language: english} |
L'article n'a pas pu être ajouté à votre panier |
Key : type {type: textError} |
Key : language {language: english} |
Nombre d'articles dans le panier dépassé |
Key : type {type: textInfo} |
Key : language {language: english} |
Le code promo n'a pas fonctionné |
Key : type {type: textInfo} |
Key : language {language: english} |
Format de code postal /numéro de téléphone incorrect |
Key : type {type: textInfo} |
Key : language {language: english} |
Erreur de code de bon de réduction |
Key : type {type: textError} |
Key : language {language: english} |
Cette configuration n'est plus disponible actuellement |
Key : type {type: textInfo} |
Key : language {language: english} |
Le transfert n'a pas pu être effectué |
Key : type {type: textError} |
Key : language {language: english} |
Aucun article dans le panier |
Key : type {type: textInfo} |
Key : language {language: english} |
CONNEXION
Message | Type d'erreur (fortement recommandé) | Attributs optionnels complémentaires (noms des values) |
Mot de passe incorrect |
Key : type {type: textInfo} |
Key : language {language: english} |
Échec de connexion |
Key : type {type: textError} |
Key : language {language: english} |
Il semblerait que vous possédiez déjà un compte |
Key : type {type: textInfo} |
Key : language {language: english} |
Veuillez confirmer que vous n'êtes pas un robot |
Key : type {type: textInfo} |
Key : language {language: english} |
DIVERS
Message | Type d'erreur (fortement recommandé) | Attributs optionnels complémentaires (noms des values) |
Une erreur est survenue |
Key : type {type: textError} |
Key : language {language: english} |
Page 404 / Cette page n'existe pas*
*Ce type d'erreurs peut être observé à la fois par une vue de page (dans Parcours de navigation) et par une erreur personnalisée (pour en voir l'impact dans l'Analyse des erreurs). |
Key : type {type: httpError} |
Key : language {language: english} ---------------------------------- Key : errorStatus {errorStatus: 404} |
Des informations clés manquent à votre dossier |
Key : type {type: textInfo} |
Key : language {language: english} |
Suivi de l'Adblocking |
Key : type {type: caughtError} |
Key : language Value : english {language: english} |
La vidéo n'est pas visible / pas chargée |
Key : type {type: textError} |
Key : language Value : english {language: english} |
Aucun magasin dans ce périmètre |
Key : type {type: textInfo} |
Key : language Value : english {language: english} |
Les services reposant sur une API ou un service sous-jacent ne sont pas disponibles |
Key : type {type: textError} |
Key : language Value : english {language: english} |
FAQ
1. Les erreurs personnalisées peuvent-elles être collectées rétrospectivement ?
Non, les erreurs personnalisées ne peuvent pas être collectées rétrospectivement.
2. Est-il nécessaire d'ajouter des attributs lorsqu'on configure une erreur personnalisée ?
Les attributs sont facultatifs, mais nous vous recommandons fortement d'en spécifier néanmoins. Cela permettra de catégoriser l'erreur.