Passer au contenu principal

KPI personnalisé

Créez vos propres KPI avec le constructeur de formules Feedier : toutes les fonctions, les paramètres et les opérateurs, des formules prêtes à l'emploi et un guide de dépannage.

J
Écrit par Julien Chil Hagopian

Un KPI personnalisé est une formule que vous écrivez une fois et que vous réutilisez partout où un KPI peut être sélectionné dans Feedier : insights, rapports, graphiques KPI, tableaux de scores et benchmarks. Il est recalculé en direct, en tenant compte des filtres et du périmètre d'équipe de la page sur laquelle il est affiché.

Où créer un KPI personnalisé

  1. Rendez-vous dans Paramètres → Modèle de données → Formules de KPI.

  2. Cliquez sur Ajouter une formule.

  3. Renseignez le Nom, une Description facultative, puis la Formule.

  4. Choisissez un Suffixe (%, /5, min, une devise…) et un Format (0, 0.0, 0.00, 0,0, 0,00).

  5. Activez Plus bas est mieux lorsqu'une valeur plus faible est le résultat souhaité, puis définissez la Visibilité du KPI pour vos équipes.

La formule est exécutée au moment de l'enregistrement. Si elle ne peut pas être calculée, Feedier la refuse avec le message « Cette formule est invalide. »

Bonnes pratiques pour créer vos KPI

  1. Utilisez des noms simples et intuitifs, compréhensibles au premier coup d'œil. Évitez le jargon.

  2. Ajoutez une courte description dès que le périmètre du KPI n'est pas évident à la lecture de son nom. Toute personne lisant un rapport doit savoir ce que le chiffre recouvre.

  3. Renseignez toujours le suffixe et le format. Un KPI sans unité est mal interprété : % pour les pourcentages, /5 pour les notes, min ou h pour les durées, un symbole monétaire pour les montants. Il n'existe pas de champ préfixe : le suffixe est ajouté après la valeur.

  4. Activez Plus bas est mieux pour les KPI dont la baisse est une bonne nouvelle (taux de détracteurs, attrition, temps de réponse, effort client), afin que les tendances et les couleurs soient lues dans le bon sens partout sur la plateforme.

  5. Préférez un KPI clair par question. Deux formules simples sont plus faciles à maintenir qu'une formule qui fait tout.

Comprendre le constructeur de formules

Un KPI personnalisé est une expression mathématique construite à partir d'une ou plusieurs fonctions Feedier. Chaque fonction peut être restreinte à l'aide de conditions.

➡️ Une condition s'écrit toujours sous la forme d'un groupe de trois valeurs :

fonction("parametre.propriete", "operateur", "valeur")

Élément

Rôle

Exemple

Fonction

La métrique que vous voulez mesurer.

feedback()

Paramètre + propriété

Le champ sur lequel vous filtrez, écrit avec un point : le paramètre, puis la propriété.

"import.type"

Opérateur

La manière dont la valeur doit correspondre. Voir 3. Opérateurs ci-dessous.

"="

Valeur

Une valeur unique, ou un tableau de valeurs.

"trustpilot"

Assemblés :

feedback("import.type", "=", "trustpilot")

⚠️ Les guillemets droits autour du paramètre, de l'opérateur et de la valeur sont obligatoires. Seuls les booléens et les nombres placés dans un tableau peuvent s'écrire sans guillemets.

Plusieurs conditions

Répétez le groupe de trois. Les conditions sont combinées avec un ET, et le nombre total d'arguments doit toujours être un multiple de trois.

feedback("survey.id", "=", "1526", "nps.profile", "=", "promoter")

Plusieurs valeurs pour une même condition

Passez un tableau. Les valeurs d'un tableau sont combinées avec un OU.

feedback("team.id", "=", ["1234", "323", "12332"])

Aucune condition

Une fonction appelée sans argument renvoie la métrique sur l'ensemble du périmètre appliqué à la page.

feedback()

Chaque fonction est toujours restreinte par les filtres, la période et le périmètre d'équipe de la page sur laquelle le KPI est affiché, en plus des conditions que vous écrivez. Une formule ne peut jamais renvoyer des données qu'un utilisateur n'a pas le droit de voir.

Combiner des fonctions

Les fonctions se combinent avec +, -, *, /, ^ (puissance), % (modulo) et des parenthèses.

feedback("nps.profile", "=", "detractor") / feedback() * 100

Une division par zéro renvoie 0 au lieu d'échouer. Un KPI bloqué à 0 vient souvent d'un dénominateur qui ne correspond à rien.

1. Fonctions

Toutes les fonctions disponibles dans le constructeur de formules, et ce qu'elles renvoient.

Fonction

Résultat

Unité / échelle

feedback()

Nombre de feedbacks correspondant aux conditions.

Compte

response()

Nombre de feedbacks ayant au moins une réponse correspondante.

Compte

push()

Nombre d'invitations envoyées (e-mail + SMS).

Compte

nps()

Net Promoter Score.

−100 à 100

satisfaction()

Taux de satisfaction.

0 à 100

sentiment()

Score de sentiment du texte analysé.

0 à 100

ces()

Customer Effort Score.

Échelle de la question

ratings()

Moyenne des questions de notation.

Échelle de la question

ratingsTable()

Moyenne des tableaux de notation.

Échelle de la question

time()

Temps moyen pour compléter une enquête.

Minutes

resolutionTime()

Temps moyen de résolution d'un feedback.

Secondes

financial()

Impact financier estimé.

Devise

attribute_avg(), attribute_sum(), attribute_min(), attribute_max(), attribute_qty()

Agrégation d'un attribut numérique.

Unité de l'attribut

url()

Une valeur lue depuis une API externe.

Libre

feedback()

Nombre de feedbacks correspondant aux conditions.

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

Formule

Résultat

feedback()

Tous les feedbacks du périmètre courant.

feedback("import.type", "=", "google_review")

Feedbacks importés depuis les avis Google.

feedback("team.id", "=", "9921")

feedback("team.id", "=", ["1234", "323", "12332"])

Feedbacks d'une équipe.

Feedbacks de plusieurs équipes.

feedback("segment.id", "=", "1234")

Feedbacks appartenant à un segment.

feedback("survey.id", "=", "1526")

Feedbacks collectés sur une source.

feedback("question.type", "=", "nps")

Feedbacks contenant une question NPS.

feedback("question.id", "=", "1526")

feedback("question.id", "=", ["1526", "1527"])

Feedbacks contenant la question 1526.

Feedbacks contenant l'une ou l'autre question.

feedback("question.option_name", "=", "Petit déjeuner")

Feedbacks dans lesquels le choix ou la ligne de tableau « Petit déjeuner » a été répondu.

feedback("topic.name", "=", "Frais de livraison")

Feedbacks associés au thème « Frais de livraison ».

feedback("attribute.name", "=", "city")

feedback("attribute.name", "=", "city:Berlin")

Feedbacks portant l'attribut city.

Feedbacks dont city vaut Berlin.

feedback("nps.profile", "=", "promoter")

Feedbacks des promoteurs.

feedback("feedback.type", "=", "completed")

Feedbacks complétés. Voir la note sur feedback.type en section 2.

⚠️ push.canal et push.status ne sont pas acceptés par feedback(). Ils ne fonctionnent que dans push(). Une formule qui les utilise dans feedback() est refusée comme invalide.

response()

Nombre de feedbacks ayant au moins une réponse correspondant aux conditions.

Contrairement à feedback(), les conditions de response() sont évaluées au niveau de la réponse, ce qui donne tout son sens à l'opérateur strict == : plusieurs conditions écrites avec == doivent être satisfaites par une seule et même réponse.

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

Formule

Résultat

response("question.id", "=", "11111")

Feedbacks dans lesquels la question 11111 a été répondue.

response("response.value", "=", [4, 5],
"question.type", "=", "ratings")

Feedbacks avec au moins une note à 4 ou 5.

response("response.value", "==", "5",
"question.option_name", "==", "Petit déjeuner")

Feedbacks où la ligne « Petit déjeuner » elle-même a été notée 5 — les deux conditions portent sur la même réponse.

response("feedback.type", "=", "incomplete",
"question.type", "=", "textarea")

Feedbacks laissés incomplets dans lesquels une question texte a été répondue.

push()

Nombre d'invitations à donner un feedback envoyées via les enquêtes Feedier (e-mails et SMS).

Accepte : push et survey uniquement. Seul l'opérateur = est supporté.

Formule

Résultat

push()

Toutes les invitations envoyées pour les sources du périmètre.

push("push.canal", "=", "sms")

Invitations envoyées par SMS.

push("push.status", "=", "bounce")

Invitations ayant rebondi.

push("push.status", "=", ["opened", "clicked"])

Invitations ouvertes ou cliquées.

push("push.includeFollowUps", "=", true,
"push.status", "=", ["scheduled", "requested"])

Toutes les invitations, relances comprises.

push("survey.id", "=", "1526")

Invitations envoyées pour une source.

push() lit les données d'envoi des enquêtes Feedier. Cette fonction nécessite une connexion Feedier Survey sur votre espace de travail et renvoie 0 en son absence, ou lorsqu'aucune source Feedier Survey n'est dans le périmètre. Les invitations n'existent que pour les feedbacks collectés via les enquêtes Feedier — jamais pour les imports CSV, API, SFTP ou avis.

nps()

Net Promoter Score = % de promoteurs − % de détracteurs, calculé uniquement sur les questions NPS.

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

Formule

Résultat

nps()

NPS du périmètre courant.

nps("survey.id", "=", "11")

NPS d'une source.

nps("team.id", "=", "9921")

NPS d'une équipe.

nps("segment.id", "=", "111")

NPS d'un segment.

nps("import.type", "=", "csv")

NPS des feedbacks importés par CSV.

nps("question.id", "=", "11")

NPS d'une question NPS précise. La question doit être de type nps.

nps("attribute.name", "=", "country:France")

NPS des feedbacks dont l'attribut country vaut France.

satisfaction()

Taux de satisfaction moyen, de 0 à 100.

Le taux de satisfaction est calculé par Feedier sur chaque feedback, à partir de tous les éléments notés qu'il contient. Les questions texte exclues du taux lors du mapping d'import ne sont pas comptées.

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

Formule

Résultat

satisfaction()

Taux de satisfaction du périmètre courant.

satisfaction("survey.id", "=", "11")

Taux de satisfaction d'une source.

satisfaction("team.id", "=", "9921")

Taux de satisfaction d'une équipe.

satisfaction("topic.name", "=", "Emballage")

Taux de satisfaction des feedbacks associés au thème « Emballage ».

satisfaction("nps.profile", "=", "detractor")

Taux de satisfaction des détracteurs.

sentiment()

Score de sentiment moyen du texte analysé, de 0 à 100.

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

sentiment() est la fonction où la différence entre opérateurs standards et stricts compte le plus, car un feedback peut contenir plusieurs verbatims associés à des thèmes différents.

Formule

Résultat

sentiment("topic.name", "=", "Emballage")

Sentiment des feedbacks entiers auxquels le thème « Emballage » est associé — y compris ce qu'ils disent du reste.

sentiment("topic.name", "==", "Emballage")

Sentiment des verbatims uniquement portant le thème « Emballage ».

sentiment("topic.name", "!=", "Emballage")

Sentiment des feedbacks auxquels le thème n'est pas associé.

sentiment("topic.name", "!==", "Emballage")

Sentiment des feedbacks, sans compter les verbatims associés à « Emballage ».

sentiment("question.name", "==", "Qu'avez-vous trouvé le plus difficile ?")

Sentiment de cette question précise uniquement, sur l'ensemble des feedbacks.

ces()

Customer Effort Score moyen, calculé uniquement sur les questions de type CES.

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

Formule

Résultat

ces()

CES du périmètre courant.

ces("topic.name", "=", "Livraison")

CES des feedbacks associés au thème « Livraison ».

ces("question.id", "=", "1526")

CES d'une question CES précise.

ratings()

Valeur moyenne des questions de notation (questions de notation simples uniquement).

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

Formule

Résultat

ratings()

Note moyenne du périmètre courant.

ratings("question.id", "=", "1526")

Moyenne d'une question de notation.

ratings("attribute.name", "=", "gender:female")

Note moyenne des feedbacks dont l'attribut gender vaut female.

ratingsTable()

Valeur moyenne des tableaux de notation (une question composée de plusieurs lignes à noter).

Accepte : attribute, feedback, import, nps, question, response, segment, survey, team, topic.

Formule

Résultat

ratingsTable()

Moyenne de tous les tableaux de notation du périmètre.

ratingsTable("question.option_name", "=", "Petit déjeuner")

Moyenne de la ligne « Petit déjeuner ».

ratingsTable("question.type", "=", "nps")

Moyenne des tableaux de notation, limitée aux feedbacks contenant également une question NPS.

time()

Temps moyen pour compléter une enquête, renvoyé en minutes.

Accepte : feedback, import, nps, question, segment, survey uniquement.

Formule

Résultat

time()

Temps moyen de complétion du périmètre courant, en minutes.

time("survey.id", "=", "1324")

Temps moyen de complétion de la source 1324.

time() * 60

La même valeur exprimée en secondes.

resolutionTime()

Temps moyen entre la création d'un feedback et le moment où il est marqué comme résolu, renvoyé en secondes.

Accepte : feedback, import, nps, question, segment, survey uniquement.

Formule

Résultat

resolutionTime()

Temps moyen de résolution, en secondes.

resolutionTime() / 3600

Temps moyen de résolution en heures.

resolutionTime() / 86400

Temps moyen de résolution en jours.

resolutionTime("survey.id", "=", "1324")

Temps moyen de résolution pour une source.

Seuls les feedbacks assignés à un responsable sont pris en compte. Les feedbacks non assignés n'entrent jamais dans la moyenne. Pensez à diviser le résultat et à renseigner le suffixe correspondant (h, j) sur le KPI.

financial()

Impact financier estimé des feedbacks du périmètre.

La valeur est calculée ainsi : (opportunites - risques) x valeur moyenne du client. Un feedback est classé en opportunité ou en risque à partir du sentiment de ses verbatims.

Accepte : financial uniquement.

Formule

Résultat

financial()

Impact net : opportunités moins risques.

financial("financial.type", "=", "risk")

Chiffre d'affaires à risque. La valeur est négative, puisque seul le versant risque est compté.

financial("financial.type", "=", "opportunity")

Chiffre d'affaires d'opportunité.

Cette fonction utilise la Valeur moyenne du client définie dans Paramètres → Équipes → Avancé. Si cette valeur n'est pas renseignée, financial() renvoie 0.

attribute_avg(), attribute_sum(), attribute_min(), attribute_max(), attribute_qty()

Agrègent les valeurs d'un attribut numérique sur les feedbacks du périmètre.

Ces cinq fonctions s'utilisent de la même manière et ne diffèrent que par l'opération : moyenne, somme, minimum, maximum et nombre de valeurs.

Accepte : aggregate_attribute (obligatoire), attribute, feedback, import, nps, response, segment, survey, team, topic. Le paramètre question n'est pas disponible ici.

Formule

Résultat

attribute_sum("aggregate_attribute.name", "=", "order_amount")

Total de l'attribut order_amount.

attribute_avg("aggregate_attribute.name", "=", "order_amount")

Montant moyen des commandes.

attribute_avg("aggregate_attribute.name", "=", "order_amount",
"nps.profile", "=", "detractor")

Montant moyen des commandes des détracteurs.

attribute_max("aggregate_attribute.id", "=", "1232")

Valeur la plus élevée de l'attribut 1232.

attribute_qty("aggregate_attribute.name", "=", "order_amount")

Nombre de feedbacks portant une valeur pour cet attribut.

aggregate_attribute désigne l'attribut à agréger, tandis que attribute est un simple filtre. Dans attribute_avg("aggregate_attribute.name", "=", "order_amount", "attribute.name", "=", "city:Berlin"), Feedier calcule la moyenne de order_amount sur les feedbacks provenant de Berlin. L'attribut doit contenir des valeurs numériques.

url()

Appelle un point d'accès JSON externe et utilise l'une de ses valeurs dans votre KPI.

Accepte : link uniquement, avec la propriété link.link.

url("link.link", "=", "https://exemple.com/api/metric~data.value")

Élément

Description

L'URL

Doit commencer par http:// ou https://. Elle est appelée côté serveur, en GET.

Le chemin après ~

Tout ce qui suit le ~ est le chemin, en notation pointée, de la valeur à lire dans la réponse JSON. En son absence, Feedier lit la clé response.

{fql}

Remplacé par les filtres appliqués à la page, afin que votre point d'accès renvoie une valeur cohérente avec le tableau de bord.

{user.id}, {user.email}

Remplacés par l'identité de l'utilisateur qui consulte le KPI.

{apikey}

Remplacé par la clé d'API privée de l'espace de travail. Utile pour appeler l'API publique de Feedier elle-même.

⚠️ La requête est envoyée avec la clé d'API privée de votre espace de travail : ne pointez url() que vers des points d'accès que vous contrôlez ou en lesquels vous avez confiance. Un point d'accès lent provoque l'expiration du délai et l'échec de toute la formule.

2. Paramètres et propriétés

Un paramètre est le champ sur lequel vous filtrez. La propriété vient après le point et indique à Feedier sous quelle forme la valeur est fournie — un identifiant, un nom, un type…

Paramètre.propriété

Valeurs acceptées

Remarques

attribute.id

attribute.name

Un identifiant ou un nom d'attribut, suivi si besoin de : et d'une valeur.

"city" conserve les feedbacks portant cet attribut. "city:Berlin" ne garde que ceux dont la valeur est Berlin. Fonctionne aussi avec 1232:male.

aggregate_attribute.id

aggregate_attribute.name

Un identifiant ou un nom d'attribut.

Obligatoire pour les fonctions attribute_*(). Désigne l'attribut à agréger, ce n'est pas un filtre.

feedback.id

Un identifiant de feedback.

—

feedback.type

completed · incomplete

Ne s'applique qu'aux feedbacks des enquêtes Feedier : un feedback importé depuis une autre source n'est ni complet ni incomplet, et se trouve exclu dès que vous utilisez ce paramètre.

financial.type

risk · opportunity

Uniquement pour financial().

import.type

La source d'où provient le feedback : feedier_survey, csv, email, chat, review, document, letter, sms, whatsapp, call_center, facetoface, feedback_box, trustpilot, google_review, google_reviews_competitor, google_play_reviews, apple_app_store_reviews, amazon_reviews, avis_verifies, glassdoor, indeed, homeviews, facebook, linkedin, instagram, tiktok, hubspot, salesforce, zendesk, easiware, bigquery…

La valeur doit exister dans votre espace de travail. Il n'existe pas de valeur "all" : pour tout compter, appelez la fonction sans condition.

link.link

Une URL en http ou https.

Uniquement pour url().

nps.profile

promoter · passive · detractor

Les promoteurs notent 9–10, les passifs 7–8, les détracteurs 0–6. La valeur est passive, et non « neutral ».

push.canal

email · sms

Uniquement pour push().

push.status

scheduled · requested · processed · delivered · opened · clicked · bounce · dropped · deferred · spamreport · unsubscribe

Uniquement pour push(). Attention, le statut de rebond s'écrit bounce, et non « bounced ».

push.includeFollowUps

true · false

Uniquement pour push(). Inclut les relances en plus de la première invitation.

question.id

question.name

Un identifiant de question, ou son libellé exact.

Le libellé doit correspondre exactement, accents et ponctuation compris.

question.type

nps · textarea · ratings · ratingsTable · ces · choices · order · smiley

Des sources anciennes peuvent encore porter les types hérités select, orderedList, dropdown ou toggle. Les questions de notation sont de type ratings — il n'existe pas de type slider.

question.option_id

question.option_name

L'identifiant ou le libellé d'un choix, ou d'une ligne de tableau de notation.

—

response.value

Une valeur, ou un tableau de valeurs : "5", [4, 5].

La réponse elle-même. À combiner avec une condition question.* pour cibler une question donnée.

segment.id

Un identifiant de segment.

—

survey.id

Un identifiant de source.

—

team.id

Un identifiant d'équipe.

—

topic.name

Le nom exact d'un thème.

Les thèmes proviennent de votre taxonomie d'analyse sémantique.

Les valeurs sont vérifiées dans votre propre espace de travail au moment de l'enregistrement. Un identifiant d'équipe, un nom de thème ou un libellé de question inconnu rend toute la formule invalide, même si le reste est correct. Le plus rapide pour récupérer un identifiant est d'ouvrir la page correspondante dans Feedier et de le lire dans l'URL.

3. Opérateurs

L'opérateur se place entre le paramètre et la valeur, et détermine à quel niveau la condition est évaluée.

Opérateur

Portée

Description

=

Feedback entier 📦

Conserve les feedbacks pour lesquels la condition est vraie au niveau du feedback.

!=

Feedback entier 🚫

Exclut les feedbacks pour lesquels la condition est vraie au niveau du feedback.

==

Élément du feedback 🎯

Strict. La condition doit être satisfaite par un seul élément — une réponse, un verbatim, une occurrence de thème. Plusieurs conditions strictes doivent porter sur le même élément.

!==

Élément du feedback 🚫

Exclusion stricte. Retire les éléments correspondants du calcul, mais conserve le reste du feedback.

Deux règles à retenir

  • Les opérateurs stricts == et !== ne sont autorisés que sur les paramètres question, response et topic. Ailleurs, la formule est refusée.

  • ===, =! et ==! n'existent pas. Les quatre opérateurs ci-dessus sont les seuls valides.

L'illustration la plus parlante est sentiment() sur un thème :

Formule

Ce qui est mesuré

sentiment("topic.name", "=", "Emballage")

Les feedbacks entiers qui mentionnent l'emballage — y compris ce qu'ils disent de tout le reste.

sentiment("topic.name", "==", "Emballage")

Uniquement les verbatims qui parlent d'emballage.

sentiment("topic.name", "!=", "Emballage")

Les feedbacks qui ne mentionnent jamais l'emballage.

sentiment("topic.name", "!==", "Emballage")

Tous les feedbacks, moins ce qu'ils disent de l'emballage.

4. Les KPI personnalisés les plus utilisés

Taux de réponse

feedback("import.type", "=", "feedier_survey") / push() * 100

Suffixe %. Les deux côtés de la division doivent provenir de la même source : les invitations ne sont générées que lorsque vous envoyez une campagne d'enquête Feedier. Les feedbacks issus de tout autre import (CSV, API, SFTP, Salesforce, avis…) ne peuvent donc pas contribuer à un taux de réponse et sont exclus du numérateur.

Exemple — une source mélangeant CSV et enquête Feedier :

  • Feedbacks collectés : 238, dont 57 issus d'une enquête Feedier et 181 d'un CSV

  • Invitations envoyées : 654

  • Taux de réponse = 57 / 654 = 8,7 % — les 181 feedbacks CSV sont exclus

Si votre périmètre ne contient aucun feedback d'enquête Feedier, ce KPI renvoie 0. C'est le comportement attendu, pas une anomalie.

Taux de détracteurs

feedback("nps.profile", "=", "detractor")
/ (feedback("nps.profile", "=", "promoter")
+ feedback("nps.profile", "=", "passive")
+ feedback("nps.profile", "=", "detractor")) * 100

Suffixe %. Activez Plus bas est mieux sur ce KPI.

Taux de promoteurs

feedback("nps.profile", "=", "promoter")
/ (feedback("nps.profile", "=", "promoter")
+ feedback("nps.profile", "=", "passive")
+ feedback("nps.profile", "=", "detractor")) * 100

Taux de satisfaction sur les questions de notation (CSAT)

feedback("response.value", "=", [4, 5], "question.type", "=", "ratings")
/ feedback("question.type", "=", "ratings") * 100

Suffixe %. Part des feedbacks dont la note est 4 ou 5, parmi ceux qui contiennent une question de notation.

Taux de réponse sur une note donnée

response("response.value", "=", [3, 4, 5], "question.id", "=", "123274")
/ feedback("question.id", "=", "123274") * 100

Part des feedbacks provenant des avis Google

feedback("import.type", "=", "google_review") / feedback() * 100

Le dénominateur est feedback() sans condition, qui couvre tout le périmètre. Il n'existe pas de type d'import "all".

Part des répondants ayant choisi une option donnée

feedback("question.option_name", "=", "Option A")
/ feedback("question.type", "=", "choices") * 100

Temps moyen de résolution en heures

resolutionTime() / 3600

Suffixe h, format 0.0, Plus bas est mieux activé.

Chiffre d'affaires à risque

financial("financial.type", "=", "risk")

Suffixe : votre devise. La valeur est négative, ce qui est bien ce que l'on attend sur une tuile « chiffre d'affaires à risque ».

Panier moyen des détracteurs

attribute_avg("aggregate_attribute.name", "=", "order_amount",
"nps.profile", "=", "detractor")

5. Résoudre les problèmes

Symptôme

Cause

Solution

« Cette formule est invalide. »

La formule est exécutée à l'enregistrement. La moindre erreur — syntaxe, valeur inconnue, paramètre non supporté — bloque la sauvegarde.

Vérifiez les trois points ci-dessous dans l'ordre : syntaxe, valeurs, paramètres supportés.

Erreur de syntaxe

Un guillemet ou une virgule manquante, des parenthèses déséquilibrées, ou un nombre d'arguments qui n'est pas un multiple de trois.

Chaque condition compte exactement trois arguments : "parametre.propriete", "operateur", "valeur".

Valeur inconnue

Un identifiant d'équipe, un nom de thème, un libellé de question ou un type d'import qui n'existe pas dans votre espace de travail.

Copiez le libellé exact, accents compris, ou récupérez l'identifiant dans l'URL de la page correspondante dans Feedier.

Paramètre non supporté

Le paramètre n'est pas accepté par cette fonction — par exemple push.canal dans feedback(), ou team.id dans time().

Consultez la ligne Accepte de la fonction en section 1.

Opérateur non supporté

== ou !== utilisé sur un paramètre autre que question, response ou topic. Ou un opérateur autre que = dans push().

Revenez à = ou !=.

Le KPI affiche 0

Une division par zéro renvoie 0. Le périmètre peut aussi simplement ne contenir aucun feedback correspondant.

Créez temporairement le numérateur et le dénominateur comme deux KPI séparés pour identifier celui qui est vide.

push() renvoie 0

Aucune connexion Feedier Survey sur l'espace de travail, ou aucune source Feedier Survey dans le périmètre courant.

Les invitations n'existent que pour les enquêtes Feedier. Vérifiez la source des feedbacks que vous mesurez.

url() échoue

Le point d'accès est trop lent et le délai expire, ou le chemin placé après le ~ n'existe pas dans la réponse JSON.

Testez l'URL en dehors de Feedier, et vérifiez le chemin exact de la clé recherchée.

La valeur semble fausse d'un facteur

Une unité n'a pas été convertie : resolutionTime() est en secondes, time() est en minutes.

Divisez le résultat et renseignez le suffixe correspondant sur le KPI.

Avez-vous trouvé la réponse à votre question ?