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.
Ce qu’on construit
Section intitulée « Ce qu’on construit »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
Architecture du Zap
Section intitulée « Architecture du Zap »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)Étapes communes
Section intitulée « Étapes communes »Trigger — Slack “New Reaction Added”
Section intitulée « Trigger — Slack “New Reaction Added” »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
Calcul des dates
Section intitulée « Calcul des dates »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.Requête liste boutiques
Section intitulée « Requête liste boutiques »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.
Détection des boutiques — Code by Zapier
Section intitulée « Détection des boutiques — Code by Zapier »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 boutiquesshop_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 : ParisNom 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éematch_count — nombre de boutiques trouvéesmatched_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 aucuneloop_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)Voie 1 — Aucune boutique détectée
Section intitulée « Voie 1 — Aucune boutique détectée »Filtre — Paht by Zapier
Section intitulée « Filtre — Paht by Zapier »Ajoutez une voie du Path avec la condition suivante :
- Continuer uniquement si
boutiques_trouvees_countest égal à0
Réponse — Slack
Section intitulée « Réponse — Slack »Ajoutez un bloc Slack et configurez :
- Channel : le canal du trigger
- Thread : la variable
Tsdu 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 contientle nom exact d'une boutique (ex : Paris, Lyon, Bordeaux).Voie 2 — Boutique(s) détectée(s)
Section intitulée « Voie 2 — Boutique(s) détectée(s) »Filtre — Path by Zapier
Section intitulée « Filtre — Path by Zapier »Ajoutez une voie du path avec la condition suivante :
- Continuer uniquement si
boutiques_trouvees_countest supérieur à0
Requête résultats boutiques
Section intitulée « Requête résultats boutiques »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`Formatage — message de résultats
Section intitulée « Formatage — message de résultats »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 | 🔴 Compromis3. 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.Envoi — Slack
Section intitulée « Envoi — Slack »Ajoutez un bloc Slack et configurez :
- Channel : le canal du trigger
- Thread : la variable
Tsdu message ayant déclenché le Zap - Message Text : la variable
slack_message_formattedproduite par le bloc de formatage
Boucle — Looping by Zapier
Section intitulée « Boucle — Looping by Zapier »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.
Lancement du sous-Zap — analyse d’écart
Section intitulée « Lancement du sous-Zap — analyse d’écart »Pour chaque boutique de la boucle, déclenchez le sous-Zap d’analyse d’écart en lui transmettant :
| Variable | Valeur à transmettre |
|---|---|
start_date | Début du mois en cours (étape Calcul des dates) |
end_date | Hier (étape Calcul des dates) |
shop_id | Nom de la boutique (boucle en cours) |
slack_ts | TS du message Slack envoyé à l’étape précédente |
Résultat attendu
Section intitulée « Résultat attendu »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.