Aller au contenu

Obj- Consulter l'avancement des objectifs d'une boutique depuis Slack

Ce use case illustre une utilisation concrète du plugin Biron dans Zapier. Si vous n’êtes pas encore familier avec son fonctionnement (authentification, structure d’une requête, gestion des variables), consultez d’abord le guide Biron × Zapier avant de continuer.


Un Zap qui se déclenche quand un utilisateur ajoute une réaction à un message Slack. Le Zap lit le contenu du message et détecte si des noms de boutiques y sont mentionnés.

  • Si aucune boutique n’est détectée : une réponse en thread explique à l’utilisateur comment formuler sa demande
  • Si au moins une boutique est détectée : le Zap récupère les résultats en cours de mois pour ces boutiques, envoie un récapitulatif en thread, puis déclenche le sous-Zap d’analyse d’écart pour chacune d’elles

Slack (réaction) → Calcul des dates → Requête liste boutiques → Détection boutiques dans le message
├── Voie 1 — Aucune boutique détectée → Réponse Slack
└── Voie 2 — Boutique(s) détectée(s) → Requête résultats → Formatage → Slack → Boucle (Sous-Zap)

Ajoutez un bloc Slack → New Reaction Added et configurez :

  • Channel : le canal sur lequel le Zap sera actif
  • Reaction : la réaction emoji qui déclenche le Zap

Les requêtes Biron nécessitent des dates explicites. Ce bloc les génère dynamiquement à chaque exécution.

Ajoutez un bloc Code by Zapier (Python). Utilisez le prompt suivant pour générer le code, puis collez le résultat dans le bloc :

Rôle : Expert Python pour Zapier.
Objectif : Créer un script de calcul de dates relatives.
Calculer les dates suivantes en gérant les spécificités du calendrier
(années bissextiles, fins de mois) :
- Début du mois en cours et N-1
- Fin du mois en cours et N-1
- Hier et hier N-1
- Il y a 3 mois et il y a 3 mois N-1
Sortie : retourner un dictionnaire "output" avec toutes les dates au format YYYY-MM-DD.

Créez dans Biron un chart récupérant uniquement les noms de boutiques actives. Copiez le NexusQL et collez-le dans le bloc Biron Query.

Cette liste servira à détecter les noms de boutiques dans le message Slack ayant déclenché le Zap.


Ajoutez un bloc Code by Zapier (Python). Utilisez le prompt suivant pour générer le code :

Rôle : Expert Python pour Zapier.
Objectif : Détecter quelles boutiques d'une liste de référence sont mentionnées dans un message texte, et préparer les résultats pour les étapes suivantes du Zap (requêtes SQL et Loop).
Inputs disponibles (via input_data) :
message — texte brut dans lequel chercher les noms de boutiques
shop_list — liste de référence des boutiques à détecter (séparée par des virgules)
Demande :
Pour chaque boutique de shop_list, détecter si elle est mentionnée dans message en utilisant une recherche insensible à la casse et en évitant les faux positifs sur les mots partiels (ex : "Paris" ne doit pas matcher "Parisian")
Pour chaque boutique trouvée, préparer deux formats :
Nom brut : Paris
Nom entre guillemets simples : 'Paris' (pour injection dans des requêtes SQL)
Retourner dans output les clés suivantes :
shop_found — booléen, True si au moins une boutique est trouvée
match_count — nombre de boutiques trouvées
matched_shops_list — boutiques trouvées séparées par des virgules (ex : Paris, Lyon)
matched_shops_quotes — idem avec guillemets simples (ex : 'Paris', 'Lyon')
first_match — première boutique trouvée, ou None si aucune
loop_shop_names — liste Python des noms bruts (pour un "Create Loop From Line Items" dans Zapier)
loop_shop_quotes — liste Python des noms avec guillemets simples (pour un "Create Loop From Line Items" dans Zapier)

Ajoutez une voie du Path avec la condition suivante :

  • Continuer uniquement si boutiques_trouvees_count est égal à 0

Ajoutez un bloc Slack et configurez :

  • Channel : le canal du trigger
  • Thread : la variable Ts du message ayant déclenché le Zap
  • Message Text : un message expliquant la bonne utilisation, par exemple :
Aucune boutique reconnue dans ce message.
Pour déclencher une analyse, assurez-vous que votre message contient
le nom exact d'une boutique (ex : Paris, Lyon, Bordeaux).

Ajoutez une voie du path avec la condition suivante :

  • Continuer uniquement si boutiques_trouvees_count est supérieur à 0

Pour chacune des boutiques détectées, récupérez les données de CA réalisé et l’objectif du mois en cours. Créez un chart dans Biron filtré sur les boutiques identifiées, copiez le NexusQL et collez-le dans le bloc Biron Query. Remplacez les dates statiques par les variables produites à l’étape de calcul des dates.

Les colonnes calculées à ajouter dans la requête sont les mêmes que celles du suivi en cours de mois — CA prévisionnel, delta et catégorie d’atteignabilité :

ROUND(
`CA HT Mois en Cours` + `CA HT (A-1) Mois restant` * `Croissance CA HT 3 derniers mois`,
2
) AS `Objectif Prévisionnel CA HT`,
ROUND(
100 * (`Objectif Prévisionnel CA HT` - `Objectif CA HT`) / `Objectif Prévisionnel CA HT`,
2
) AS `Delta Pourcent Prévisionnel CA HT`,
CASE
WHEN `CA HT Mois en Cours` >= `Objectif CA HT` THEN 'Validé'
WHEN `Delta Pourcent Prévisionnel CA HT` < -15 THEN 'Compromis'
WHEN `Delta Pourcent Prévisionnel CA HT` < -5 THEN 'Ambitieux'
WHEN `Delta Pourcent Prévisionnel CA HT` < 0 THEN 'Court'
WHEN `Delta Pourcent Prévisionnel CA HT` < 5 THEN 'Attendu'
WHEN `Delta Pourcent Prévisionnel CA HT` < 15 THEN 'Confortable'
ELSE 'Garanti'
END AS `Prévision Objectif`

Ajoutez un bloc Code by Zapier (Python) et utilisez ce prompt pour générer le code :

Rôle : Expert Python pour Zapier.
Objectif : Générer un message Slack de suivi des objectifs pour les boutiques demandées.
Inputs disponibles (via input_data) :
- shops : noms des boutiques (liste séparée par des virgules)
- labels : catégorie de chaque boutique (liste séparée par des virgules)
- billing_target : objectif de CA (liste séparée par des virgules)
- billing_real : CA réalisé depuis le début du mois (liste séparée par des virgules)
Demande :
1. Formater tous les montants en euros au format français :
séparateur de milliers = espace, décimales = virgule (ex : 12 345,67€).
2. Regrouper les boutiques par catégorie dans cet ordre, avec l'emoji associé :
✅ Validé | 🟣 Garanti | 🔵 Confortable | 🟢 Attendu | 🟡 Court | 🟠 Ambitieux | 🔴 Compromis
3. Pour chaque boutique, afficher :
• *Nom boutique* : _Réalisé_ 12 345,67€ | _Objectif_ 15 000,00€
Si la catégorie n'est pas Validé, ajouter l'écart restant : | -2 654,33€
4. Générer un message Slack slack_message_formatted avec :
- Titre en gras : *Analyse Objectifs au {JJ/MM/AAAA}*
- Les groupes de boutiques (catégories vides non affichées)
5. Retourner le résultat dans output avec la clé slack_message_formatted.

Ajoutez un bloc Slack et configurez :

  • Channel : le canal du trigger
  • Thread : la variable Ts du message ayant déclenché le Zap
  • Message Text : la variable slack_message_formatted produite par le bloc de formatage

Ajoutez un bloc Looping by Zapier en lui passant les noms de boutiques et leur Prévision Objectif issus de la requête de résultats.


Pour chaque boutique de la boucle, déclenchez le sous-Zap d’analyse d’écart en lui transmettant :

VariableValeur à transmettre
start_dateDébut du mois en cours (étape Calcul des dates)
end_dateHier (étape Calcul des dates)
shop_idNom de la boutique (boucle en cours)
slack_tsTS du message Slack envoyé à l’étape précédente

L’utilisateur ajoute une réaction à un message Slack contenant un ou plusieurs noms de boutiques. En quelques secondes, une réponse en thread affiche l’état des objectifs en cours pour ces boutiques — suivie d’une analyse d’écart détaillée pour chacune d’elles.

Si le message ne contient aucun nom de boutique reconnu, l’utilisateur reçoit un message d’aide lui indiquant comment formuler sa demande.