Chaque déclencheur et chaque étape du générateur d’automatisations, avec ses champs et son comportement
Ceci est la référence détaillée, champ par champ, du générateur d’automatisations — chaque déclencheur, chaque étape, et comment les données circulent entre elles. Pour savoir à quoi servent les automatisations, comment les exécutions sont facturées, et pour des exemples travaillés, commencez par Aperçu des automatisations.
La page de liste /automations comporte trois onglets :
Onglet
Affiche
Automations
Chaque workflow de l’espace de travail — icônes des apps connectées, nom (avec son déclencheur, et l’assistant lié si le déclencheur en a un), tags, nombre d’exécutions, dernière date de déclenchement, et statut. Recherche, filtrage par tag, et activation/pause/suppression depuis le menu de la ligne.
Runs
Chaque exécution, toutes automatisations confondues — quelle automatisation, déclencheur, statut, crédits facturés, date, et l’erreur en cas d’échec. La même liste, restreinte à une seule automatisation, se trouve aussi dans l’onglet Runs propre à cette automatisation dans l’éditeur.
Connections
Identifiants enregistrés et réutilisables pour les CRM, le SMTP et les serveurs MCP. Chaque ligne affiche une icône de fournisseur, un badge de type (API ou MCP) et une pastille de statut (ok / pending / error) — testez ou modifiez une connexion sans toucher aux automatisations qui l’utilisent.
Dans le générateur d’automatisations, On Call Completed démarre cet exemple ; utilisez le + sur la connexion pour ajouter une étape.
Chaque déclencheur part d’un événement précis. Les déclencheurs liés à un assistant (On Call Completed, On Inbound Call, Inject input variables) exigent de choisir un assistant spécifique. Les déclencheurs de réservation, de conversation et d’e-mail prennent à la place un Assistant filter optionnel ; les déclencheurs de conversation peuvent aussi être restreints à une seule connexion ou plateforme de messagerie, et les déclencheurs de réservation à une seule page de réservation.Pour les déclencheurs de conversation, Plateforme et Canal ou widget affichent uniquement les canaux actifs et connectés de l’assistant sélectionné. Sans filtre d’assistant, les canaux connectés de l’espace de travail sont affichés. Les widgets de chat web sont disponibles pour Conversation started. Choisir une connexion sélectionne automatiquement sa plateforme. Les filtres enregistrés restent visibles comme indisponibles si la connexion est supprimée, désactivée ou réaffectée ; vérifiez-les avant d’enregistrer. Un filtre de connexion vide inclut aussi les futures connexions correspondantes. REST et MCP utilisent les mêmes filtres d’assistant, de plateforme et de connexion.
Déclencheur
Se déclenche quand
On Call Completed
Un appel vocal se termine et son analyse post-appel est prête.
On Inbound Call
Un appel entrant commence à sonner, avant d’être décroché ou analysé.
Inject input variables
Un appel démarre depuis l’assistant sélectionné — ceci remplace le webhook de variables de cet assistant tant que cette automatisation est Live. À associer avec Return variables.
Conversation started
Une nouvelle conversation de messagerie ou de chat web commence, y compris dans l’aperçu du widget.
Conversation ended
Une conversation de messagerie se ferme ou expire.
Message received
Chaque message entrant sur un canal, pas seulement le premier — filtrage optionnel par plateforme.
Email received
Un e-mail entrant arrive sur une adresse de l’espace de travail.
Booking created / cancelled / rescheduled
Un événement de page de réservation se produit.
Contact created
Un nouveau contact Audience est ajouté. Choisissez les sources prises en compte — création manuelle (activée par défaut), import CSV/fichier, API, CRM sync — pour qu’un import en masse ne déclenche pas accidentellement des milliers d’exécutions.
Manual
Ne s’exécute que lorsque vous cliquez sur Run now, appelez l’API, ou demandez à Milian.
Schedule
Basé sur cron, dans un fuseau horaire (bientôt disponible — sélectionnable dès aujourd’hui pour les brouillons).
Un déclencheur webhook générique ou CRM reçoit sa propre URL entrante et son propre secret, affichés directement dans les réglages du déclencheur une fois l’automatisation enregistrée. HighLevel et les apps connectées livrent leurs événements via un point de terminaison partagé et préauthentifié à la place — configuré une fois pour l’espace de travail, pas par automatisation :
Déclencheur
Se déclenche quand
Incoming Webhook
Quelque chose envoie du JSON en POST vers l’URL entrante de cette automatisation, avec le secret de l’automatisation dans un en-tête X-Automation-Secret.
Le CRM connecté envoie un événement en POST vers l’URL entrante propre à ce déclencheur — même mécanique qu’Incoming Webhook, simplement classée sous ce fournisseur dans le catalogue.
HighLevel webhook
HighLevel envoie un événement CRM ou de rendez-vous signé depuis son app Marketplace. Une seule Marketplace webhook URL est réutilisée par toutes les automatisations HighLevel ; vous délimitez chaque automatisation en choisissant une HighLevel connection et un HighLevel event.
App event
Une app connectée livre un événement signé — un nouveau commit, un message de boîte de réception, etc. Choisissez l’app et l’événement dans le catalogue.
data.analysis.success égal à true → bifurque vers un texte de relance
Filter
Ne continue que si la condition correspond ; sinon l’exécution se termine ici, avec succès — pas comme un échec.
Identique à Condition
Ne continuer que lorsque data.status est égal à open
Switch
Compare une valeur à une liste de cas — plus de deux issues possibles.
Chemin du payload, cas (JSON), valeur par défaut
Router data.pipeline_stage vers une étape différente selon l’étape du pipeline
Random Outcome
Choisit une branche au hasard dans une liste — pratique pour un test A/B d’un message.
Issues (séparées par des virgules)
Répartir le trafic entre variant_a et variant_b
Loop on Items
Répète les étapes connectées une fois par élément d’une liste. Reliez les étapes qui doivent se répéter à sa poignée Loop, et ce qui s’exécute après la boucle à Done.
Items — un chemin vers un tableau, par ex. {{steps.step1.records}}
Boucler sur {{steps.list_records.records}} et envoyer un texte à chacun
Delay For
Met l’exécution en pause pour un nombre fixe de secondes.
Secondes
Attendre 300 secondes avant de relancer
Delay Until
Met en pause jusqu’à une date et une heure absolues.
Until (date-heure ISO)
Attendre jusqu’à la veille d’une réservation
Set variable
Écrit une valeur dans l’exécution pour que des étapes ultérieures puissent la référencer.
Chemin, valeur
Stocker {{last.text}} dans vars.summary
Run Code
Exécute un petit extrait JavaScript restreint et renvoie sa valeur — aucun import, aucun accès fichier ou processus.
Code (doit faire un return)
Mettre un numéro de téléphone en majuscules avant de le transmettre
Note
Écrit un message dans le journal d’exécution ; ne change rien.
Message
Journaliser Call from {{data.from_number}} pour un débogage ultérieur
Loop on Items traite au maximum 100 éléments par boucle, et les boucles peuvent s’imbriquer jusqu’à 5 niveaux de profondeur.
Une exécution se termine aussi proprement dès qu’une étape n’a pas de connexion sortante. Ces trois étapes la terminent explicitement, et deux d’entre elles renvoient une réponse précise.
Étape
Ce qu’elle fait
Champs clés
Exemple
Stop
Termine l’exécution avec succès, à cet endroit précis.
Motif (optionnel, journalisé)
Sortir tôt une fois qu’un cas est déjà traité
Return variables
Renvoie des variables à l’appel au moment de son démarrage — s’associe au déclencheur Inject input variables. Termine l’exécution.
Variables (correspondance clé/valeur)
Renvoyer customer_name et tier avant le début de l’appel
Respond to webhook
Répond à l’appelant d’un déclencheur Incoming Webhook avec un statut et un corps — le seul moyen pour cet appelant d’obtenir une vraie réponse plutôt qu’un simple accusé de réception générique. Termine l’exécution.
Mode (objet JSON / texte brut / transférer la dernière étape), code de statut, corps
Renvoyer { "ok": true, "id": "{{last.id}}" }
Lorsqu’un assistant appelle cette automatisation en cours de conversation, chaque chemin doit se terminer par Respond to webhook, sans étape Delay ou Loop avant.
Regroupées sous Milian AI dans le catalogue. Ces actions utilisent des crédits selon la consommation de tokens, aux tarifs de votre espace de travail. Le montant débité apparaît dans l’exécution et dans le panneau Test de l’étape.
Add Node → Milian AI présente les actions d’analyse, notamment Classify Text, Custom Prompt et Extract Fields. Sélectionnez une action pour configurer ses entrées.
Étape
Ce qu’elle fait
Champs clés
Exemple
Custom Prompt
Exécute un prompt libre sur une transcription, un message, ou la sortie de n’importe quelle étape précédente, et renvoie du texte.
Prompt, prompt système optionnel
Résumer {{data.transcript}} en deux phrases
Extract Fields
Extrait des champs nommés et typés d’un bloc de texte. Chaque champ est une ligne du panneau : nom, type (text / email / number / boolean / enum), et s’il est requis.
Données d’entrée, champs
Extraire email et budget d’une transcription de chat
Ajoutez une étape dans Automations → Milian AI pour classer un texte, vérifier une condition, évaluer un contenu, détecter plusieurs étiquettes ou créer une analyse personnalisée. Custom Prompt et Extract Fields restent disponibles.
Classify Text → Configure : définissez Input Data, Answer key, Question et Categories. Les valeurs affichées sont des exemples modifiables.
Cinq nouvelles actions. Transformez transcriptions, messages et résultats précédents en catégories, décisions oui/non, scores ou étiquettes.
Trois modèles modifiables. Commencez une analyse personnalisée avec Analyser un appel, Qualifier un prospect ou Prioriser un message, puis adaptez les questions.
Une incertitude explicite. Une information insuffisante produit une réponse incertaine. Vérifiez le statut avec une Condition avant de continuer.
Votre espace, votre workflow. Prévisualisez sans dépenser de crédits, lancez un test réel avec les crédits de l’espace de travail et utilisez la même configuration via REST ou MCP.
L’analyse consomme des crédits. Les scores suivent vos niveaux et sont affichés sur une échelle de 0 à 100.Avec Analyse personnalisée, combinez les types de questions ou utilisez un des trois modèles. Chaque réponse nécessite une clé unique. Les catégories acceptent 2–32 options décrites ; les scores, 2–10 niveaux ordonnés. Une analyse accepte jusqu’à 32 questions et 32 Ko de texte. Divisez volontairement les textes plus longs.La Probabilité minimale s’applique aux catégories et aux décisions oui/non ; la Confiance minimale, aux catégories et scores. Chaque question vérifie aussi si les informations sont suffisantes. Ces seuils ne garantissent pas l’exactitude.Chaque réponse contient une valeur et un statut. Une réponse incertaine renvoie null, un non étayé renvoie false. La liste d’étiquettes contient uniquement les correspondances acceptées ; vérifiez les résultats individuels pour les cas incertains. Une erreur technique arrête l’étape. Plusieurs questions indépendantes partagent une évaluation.Utilisez le sélecteur de variables dans les étapes suivantes. Vérifiez d’abord le statut, puis comparez la valeur avec une Condition. L’analyse ne crée pas directement de branches supplémentaires. Pour résumer, traduire ou extraire du texte libre, utilisez les actions existantes.
Identique à Send Channel Message, mais fixé à une seule plateforme. Slack et Discord peuvent aussi poster directement sur un canal plutôt que de répondre à une conversation.
Connexion de canal, conversation (ou canal, pour Slack/Discord)
Poster une alerte sur un canal Slack quand un appel nécessite un humain
Send WhatsApp Template
Envoie un modèle WhatsApp Business approuvé vers un numéro de téléphone — le seul envoi ici capable d’ouvrir une toute nouvelle conversation en dehors de la fenêtre de 24 heures.
Expéditeur WhatsApp, modèle, destinataire, mappage de variables
Envoyer un modèle de confirmation de réservation juste après Booking created
Send SMS
Envoie un texte depuis un numéro de l’espace de travail activé pour le SMS.
Numéro d’envoi, destinataire, message
Envoyer un SMS de relance d’appel manqué à {{data.from_number}}
Send Email
Envoie depuis le serveur mail de la plateforme ou une adresse d’assistant vérifiée.
Expéditeur, destinataire, objet, corps
Envoyer la transcription par e-mail à une boîte de support
Send Email (SMTP)
Envoie via votre propre relais SMTP enregistré plutôt que le serveur mail de la plateforme.
Connexion SMTP, destinataire, objet, corps
Envoyer un reçu via le propre serveur mail de votre entreprise
Rappeler automatiquement un lead après un appel entrant manqué
Call Phone Number accepte aussi des Variables facultatives sous forme d’objet JSON plat, par exemple { "auftrag": "{{data.task}}" }. Les valeurs peuvent être du texte (2000 caractères maximum), des nombres ou des booléens. Vous pouvez également reprendre un objet complet d’une étape précédente, comme {{data.inputs}}. Ces entrées concernent cet appel et ne modifient ni l’assistant ni le contact. Des valeurs résolues invalides ou trop longues font échouer l’étape avant la composition. Vérifiez séparément les entrées attendues et le résultat réel de l’appel ; sa création ne prouve pas la réussite de la tâche.
Aucune de ces deux étapes n’a besoin d’une connexion enregistrée — collez une URL et c’est parti.
Étape
Ce qu’elle fait
Champs clés
Exemple
HTTP Request
Appelle n’importe quel point de terminaison HTTPS avec le payload du déclencheur ou un corps JSON personnalisé.
URL, méthode, en-têtes, corps
Poster le résumé de l’appel vers un point de terminaison ops interne
Slack (Webhook)
Poste sur un canal Slack via une URL Incoming Webhook.
URL du webhook, message
Déposer une alerte d’une ligne dans un canal ops en cas d’échec d’exécution
Discord (Webhook)
Poste sur un canal Discord via une URL de webhook.
URL du webhook, message
Poster un avis pour chaque nouvelle réservation
Microsoft Teams (Webhook)
Poste du texte sur un Incoming Webhook Teams.
URL du webhook, titre, message
Notifier un canal Teams à l’arrivée d’un lead à forte valeur
Les actions HTTP Request réessaient jusqu’à deux fois les erreurs HTTP et de connexion temporaires dans le délai configuré, avec la même clé Idempotency-Key. Les erreurs temporaires comprennent HTTP 408, 425, 429, 5xx et les erreurs réseau. Les erreurs permanentes arrêtent immédiatement l’action. Le délai couvre toute l’action. Le destinataire doit respecter Idempotency-Key pour éviter les effets en double après une réponse perdue.
Les étapes CRM, MCP et app connectée lisent ou écrivent toutes dans un système externe via un identifiant enregistré — ajoutez-en un sous Automations → Connections avant d’en utiliser une. Chacune apparaît dans le catalogue sous la forme Provider · Action (par exemple Airtable · Create record).Fournisseurs CRM. Voir Synchronisation CRM pour la configuration de la synchronisation récurrente et le parcours d’autorisation HighLevel — ces nœuds d’action écrivent un enregistrement à la fois, indépendamment de toute planification de synchronisation.
Fournisseur
Ce que vous pouvez faire
Airtable
Lister, trouver, rechercher, trouver-ou-créer, récupérer, créer (un seul enregistrement ou jusqu’à 10 à la fois), mettre à jour et supprimer des enregistrements — les sélecteurs de base/table/champ/vue se chargent automatiquement depuis votre schéma.
HubSpot
Récupérer, créer, mettre à jour et rechercher des contacts ; créer un deal ; créer une note.
Salesforce
Exécuter une requête SOQL, ou récupérer, créer et mettre à jour n’importe quel enregistrement d’objet.
Close.io
Créer ou mettre à jour un lead, créer un contact, créer une opportunité, créer une note, et rechercher.
HighLevel
Lister/récupérer/créer/mettre à jour des contacts, créer une opportunité, créer une note, ainsi que lire les calendriers et écrire des rendez-vous — lister les calendriers, obtenir les créneaux libres, créer, mettre à jour/reprogrammer et annuler.
Pipedrive
Lister/rechercher/récupérer/créer/mettre à jour des personnes, créer un deal, ajouter une note.
Zoho CRM
Lister, rechercher, récupérer, créer et mettre à jour des enregistrements dans n’importe quel module.
Attio
Lister/filtrer, récupérer, créer et mettre à jour des personnes, entreprises ou enregistrements d’objets personnalisés.
Keap
Lister/rechercher/récupérer/créer/mettre à jour des contacts, créer une opportunité, créer une note.
Twenty CRM
Lister/filtrer, récupérer, créer et mettre à jour des enregistrements — hébergé ou auto-hébergé.
Exemple : après On Call Completed, utilisez une mise à jour HubSpot pour consigner {{data.analysis.success}} sur le contact correspondant, ou bifurquez d’abord dessus avec Condition.MCP fournisseur et générique. Plutôt que des champs fixes, ces étapes confient un prompt et le contexte de l’exécution à un agent qui choisit lui-même l’outil et les arguments adéquats — utile quand l’appel exact varie d’une exécution à l’autre. Les deux facturent des crédits IA de l’espace de travail pour le raisonnement de l’agent.
« Lister les tickets Jira en retard et noter le plus ancien »
MCP · Call tool
Le même principe d’agent choisissant l’outil, pour n’importe quel serveur MCP enregistré comme connexion.
Connexion, outils autorisés, prompt d’agent
« Ajouter {{last.email}} au CRM comme nouveau contact »
Apps connectées. Au-delà des plateformes ci-dessus, le catalogue comprend aussi chaque app que votre espace de travail a connectée via OAuth. Connectez-en une sous Connections → App marketplace, puis choisissez-la comme déclencheur ou action comme n’importe quelle plateforme intégrée. Voir App Catalog pour la liste complète et le fonctionnement de la connexion. Les apps qui proposent beaucoup d’actions en chargent davantage au fil du défilement ; saisissez un nom ou un mot-clé dans Search actions… au-dessus de la liste pour trouver n’importe quelle action, par exemple send message.
Étape
Ce qu’elle fait
Champs clés
Exemple
Execute app tool
Exécute un outil d’une app connectée ; ses champs se chargent depuis le schéma propre à l’outil.
Connexion d’app, outil
Créer une ligne dans une feuille de calcul connectée
App event(déclencheur)
Se déclenche quand une app connectée livre un événement signé.
Choisi dans le catalogue
Démarrer une exécution sur un nouveau message de boîte de réception
Chaque champ marqué d’un ⚡ accepte des modèles {{ }} puisés dans les données actuelles de l’exécution.
Modèle
Se résout en
{{data.from_number}}
Un champ du payload du déclencheur
{{steps.<nodeId>.<field>}}
Un champ de sortie d’une étape précédente spécifique
{{last.<field>}}
Un champ de sortie de l’étape immédiatement précédente
{{item}} / {{index}}
L’élément / la position actuelle à l’intérieur d’un corps Loop on Items
Extract Fields renvoie ses valeurs deux fois — imbriquées sous fields ({{steps.step1.fields.email}}) et à plat sur l’étape elle-même ({{steps.step1.email}}) — utilisez la forme la plus lisible.
Set variable écrit dans l’exécution elle-même plutôt que dans la sortie propre d’une étape — référencez ensuite le chemin choisi de la même façon, par ex. {{vars.summary}}.
Condition, Switch et Loop on Items décident aussi quel chemin connecté s’exécute ensuite — tirez des connexions distinctes depuis leurs poignées true/false, par cas, ou Loop/Done.
Utilisez Insert Variable pour parcourir ce qui est disponible plutôt que de taper les chemins à la main. Le panneau Test de chaque étape a deux niveaux : Connect Test vérifie seulement que vos champs sont valides ; Run test exécute réellement l’étape et remplit Insert Variable avec les sorties réelles pour chaque étape suivante.
Run test est une exécution réelle, pas une simulation — sur les étapes d’apps connectées, e-mail, SMS, HTTP et CRM, elle peut créer ou modifier des données réelles.
Classify Text → Test demande d’abord des données d’exemple sur le déclencheur. Vérifiez les entrées avant l’exécution ; un test réel consomme des crédits.
Pas en ligne — les déclencheurs ne démarrent jamais d’exécution. Peut être modifié sans risque.
Live
Actif — les événements déclencheurs correspondants démarrent de vraies exécutions.
Paused
Désactivé temporairement. Repassez sur Live pour reprendre.
Archived
Retiré. Réactivez-la de la même façon que Paused si vous en avez de nouveau besoin.
Une automatisation qui échoue cinq fois de suite est mise en pause automatiquement, pour qu’un graphe cassé ne puisse pas continuer à se déclencher. Consultez l’onglet Runs pour voir l’erreur, corrigez-la, puis repassez-la sur Live.
Comment une automatisation évolue entre ces statuts :
Ouvrez une automatisation et demandez à Milian, le copilote IA, de la construire ou de la modifier en langage naturel — ajouter un déclencheur et des étapes, câbler les branches vrai/faux d’une condition, la renommer ou retaguer, la passer sur Live, ou déboguer une exécution en échec, exactement ce que vous feriez à la main. Essayez « ajoute une étape e-mail après le déclencheur », « ajoute une branche de condition et câble vrai/faux », ou « débogue la dernière exécution en échec ».Lorsque Milian applique un changement directement, l’interface affiche Milian saved changes ; mettre à jour le canevas sans enregistrer affiche Milian updated the canvas — click Save to persist, et le changement reste un brouillon jusqu’à ce que vous cliquiez sur Save.