— Documentation

Objets, flows et formules

Trois notions suffisent pour construire une application sur Slamflow : des objets qui décrivent vos données, des flows qui les font vivre, et des formules qui calculent ce qui doit l'être. Cette page explique les trois, dans cet ordre.

01

Les objets

Un objet est un type de donnée que vous définissez : un client, une commande, un ticket. Il tient lieu de table, de formulaire et d'écran à la fois — vous décrivez ses champs, le reste suit.

L'enregistrement

Une occurrence de l'objet : un client précis, une commande précise. C'est ce que vos utilisateurs créent et modifient au quotidien.

Le champ

Une information portée par l'objet. Son type décide de la saisie, de l'affichage et des contrôles — une date n'est pas un texte.

La relation

Un champ qui pointe vers un autre objet : une commande appartient à un client. Les deux faces sont entretenues ensemble.

Les types de champs

Le type ne sert pas qu'à ranger : il décide de ce que l'utilisateur peut saisir, de ce qui s'affiche et de ce qui est vérifié.

TextFieldTextAreaNumberCurrencyCheckboxDateDateAndTimeEmailPhoneURLValuesListRelatedObjectIncludedObjectFileFormulaAutoNumberBarCodeAddressUserSubOrganizationHtmlContent

À retenir. Un champ de type Formula se calcule tout seul et ne se saisit jamais. Un champ AutoNumber attribue un numéro à la création, selon le motif que vous donnez. Ces deux-là vous évitent l'essentiel des saisies manuelles.

02

Les flows

Un flow est une suite de tâches qui s'exécutent dans l'ordre. C'est lui qui envoie un courriel, crée un enregistrement, appelle un service externe ou affiche un écran — sans une ligne de code.

Ce qui déclenche un flow

manualUn bouton, sur la fiche d'un enregistrement ou dans une liste.
object_after_upsertAprès la création ou la modification d'un enregistrement.
object_before_upsertAvant l'enregistrement — c'est là qu'on complète ou qu'on refuse.
scheduledÀ heure fixe, selon une planification.
webhookUn appel entrant depuis un autre logiciel.
received_mailLa réception d'un courriel sur une boîte surveillée.

Les tâches

Chaque tâche fait une chose et une seule. Voici les plus courantes ; la plateforme en compte une trentaine.

getdecisionupsert_cobjectupdate_cobjectdelete_cobjectvariable_affectationloopemailsmsscreengenerate_pdfhttp_requestgoto_task

À retenir. Une tâche publie son résultat sous son propre nom : une tâche get appelée leClient se lit ensuite leClient.raison_sociale dans les tâches suivantes. C'est ce qui permet d'enchaîner sans rien recopier.

03

Quatre flows, de bout en bout

Chaque exemple donne le déclencheur, l'enchaînement des tâches et les formules exactes. Ils se recopient tels quels, en remplaçant les noms de champs par les vôtres.

1. Accuser réception d'une demande

object_after_upsert

Dès qu'une demande est enregistrée, le client reçoit une confirmation nominative avec sa référence.

  1. 1getCharger le client rattaché à la demande.id == context.new.client[0]
  2. 2emailLui envoyer la confirmation.leClient.email

2. Alerter au-delà d'un montant

object_after_upsert

Une demande dépassant dix mille euros part en validation : le responsable est prévenu, les autres ne déclenchent rien.

  1. 1decisionNe continuer que si le montant dépasse le seuil.context.new.montant > 10000
  2. 2getCharger le responsable désigné sur la demande.id == context.new.responsable[0]
  3. 3emailLui envoyer l'alerte.leResponsable.email

3. Relancer les devis sans réponse

scheduled

Chaque matin, les devis envoyés dont la validité est passée sont relancés, un par un.

  1. 1getChercher les devis envoyés et échus.statut == 'Envoyé' && date_validite < $System.currentDate
  2. 2loopParcourir la liste obtenue.lesDevis ?? []
  3. 3emailRelancer le contact du devis courant.leDevis.contact_email

4. Envoyer le récapitulatif d'une commande

manual

Depuis un bouton sur la fiche, le récapitulatif est composé en PDF puis envoyé au client, document joint.

  1. 1getRecharger la commande complète.id == context.commande.id
  2. 2generate_pdfComposer le PDF à partir du modèle.
  3. 3emailL'envoyer au client, en pièce jointe.laCommande.client_email

Le corps du courriel

Le contenu du courriel est du HTML dans lequel vous placez des formules entre doubles accolades. Chacune est évaluée au moment de l'envoi.

<p>Bonjour {{ leClient.prenom }},</p>

<p>Nous avons bien reçu votre demande
   {{ context.new.reference }} du
   {{ context.new.date_creation }}.</p>

<p>Montant estimé : {{ context.new.montant }} €</p>

Tout ce qui est disponible dans une formule l'est ici : les champs de l'enregistrement, le résultat des tâches précédentes, les variables système.

04

Les formules

Une formule est une expression qui rend une valeur : un calcul, une condition, un texte composé. C'est le seul endroit de la plateforme où l'on écrit quelque chose qui ressemble à du code — et cela reste une ligne, pas un programme.

Où elles s'écrivent

  • Dans un champ de type Formula, pour une valeur calculée en permanence.
  • Dans une tâche decision, pour choisir la suite d'un flow.
  • Dans les valeurs d'une tâche : destinataire d'un courriel, champ à écrire.
  • Dans une règle de validation, qui refuse l'enregistrement si elle rend faux.

La syntaxe

Les opérateurs usuels fonctionnent : les quatre opérations, les comparaisons, et le et/ou logiques. Un champ s'appelle par son nom technique. Le ?? donne une valeur de repli quand la première est vide.

prix_ht * 1.2
quantite > 0 && statut == 'Validé'
prenom + ' ' + nom
date_fin ?? $System.currentDate

Les fonctions

Huit fonctions sont disponibles, sans préfixe et en majuscules.

FonctionCe qu'elle fait
NOW()L'instant présent, pour horodater.
ISBLANK(texte)Vrai si le texte est vide ou absent.
ADD(a, b)L'addition de deux entiers.
MROUND(valeur, multiple)Arrondit au multiple le plus proche — au quart d'heure, à la dizaine.
ROUNDUP(valeur, multiple)Arrondit au multiple supérieur, jamais en dessous.
ROUND_HALFUP(valeur, décimales)Arrondit à un nombre de décimales, la moitié vers le haut.
GETOBJECT('type', identifiant)Charge un enregistrement par son identifiant et rend ses champs.
DEBUG(valeur)Écrit une valeur dans les journaux, le temps de comprendre un calcul.

Cette liste s'enrichira : d'autres fonctions — texte, dates, cumuls sur plusieurs enregistrements — sont prévues, et nous en ajoutons au fil des besoins. En attendant, concaténez avec + et faites poser un cumul par un flow.

Les variables disponibles

En plus des champs de l'enregistrement, trois variables sont toujours là :

$User.id$User.organization$System.currentDate

Dans un flow, la donnée d'entrée se lit sous context, suivi du nom que vous avez donné à la variable. Dans un flow déclenché par un enregistrement, context.new désigne l'enregistrement qui vient d'être écrit.

context.demande.montant
context.new.email
GETOBJECT('client', context.demande.client[0]).raison_sociale

Quatre pièges à connaître

Une relation est une liste

Même quand elle ne pointe que vers un enregistrement. Écrivez context.demande.client[0], jamais context.demande.client seul.

L'apostrophe dans un texte

Utilisez l'apostrophe typographique ’ ou échappez-la avec \'. Deux apostrophes simples à la suite rendent l'expression ambiguë et la font échouer.

Le préfixe context

Dans un flow manuel, l'enregistrement d'entrée n'est accessible que sous context. Oublier le préfixe rend une valeur vide, sans message d'erreur.

Les valeurs vides

Concaténer un champ vide donne un résultat vide. Protégez avec (mon_champ ?? ') dès qu'un champ peut ne pas être renseigné.

05

Donner un accès à une IA

Slamflow expose un serveur MCP : un assistant comme Claude peut lire et configurer votre organisation — créer des objets, écrire des flows, chercher des enregistrements. L'accès passe par une clé, rattachée à un utilisateur.

Créer la clé

  1. 1

    Dans l'administration, ouvrez Utilisateurs puis la fiche de la personne qui portera l'accès. Il faut être administrateur de l'organisation.

  2. 2

    Dans le bloc « Clé d'API », cliquez sur Générer une clé d'API.

  3. 3

    Copiez la clé affichée. Elle commence par sk- et n'est montrée qu'une fois.

  4. 4

    Collez la configuration proposée par l'écran dans votre client IA, puis redémarrez-le.

La clé n'est affichée qu'une fois. Aucun écran ne permet de la relire ensuite. Si elle est perdue, régénérez-la — l'ancienne est alors immédiatement invalidée.

La configuration du client

Vous n'avez rien à composer ni à adapter : l'écran qui génère la clé vous demande quel outil vous utilisez, et affiche la configuration qui lui convient — URL de votre instance comprise — avec un bouton pour la copier. Il n'y a plus qu'à la coller dans le fichier indiqué.

{
  "mcpServers": {
    "slamflow-mon-organisation": {
      "type": "http",
      "url": "https://<votre-instance>/mcp",
      "headers": { "x-api-key": "sk-…" }
    }
  }
}

Les outils reconnus

Choisissez le vôtre sur l'écran de génération : la configuration prend alors la forme qu'il attend, et le fichier où la coller est indiqué juste au-dessus.

  • Claude Code

    .mcp.json

    Relancez, puis approuvez le serveur quand il vous le demande.

  • Cursor

    ~/.cursor/mcp.json

  • VS Code (Copilot)

    .vscode/mcp.json

  • Claude Desktop

    claude_desktop_config.json

    Il ne sait pas encore joindre un serveur distant avec un en-tête ; l'écran vous donne alors une configuration qui passe par le pont mcp-remote.

  • ChatGPT

    Réglages → Connecteurs (mode développeur)

    Il se configure dans son interface, sans fichier : l'écran vous donne l'URL et la clé à y reporter, en choisissant l'authentification par clé d'API.

Votre premier échange

Une fois le client branché, décrivez ce que vous voulez, en français. Il n'y a rien d'autre à apprendre :

Sur mon organisation Slamflow, crée une application de gestion des interventions : clients, sites, interventions avec date, technicien, statut et temps passé ; une liste des interventions à planifier et un tableau de bord par technicien.

L'assistant crée les objets, les champs, les listes et les écrans, puis vous rend la main. Vous ouvrez votre application et vous corrigez ce qui ne vous convient pas, en le demandant.

Ce que la clé permet, et ne permet pas

  • Elle ne donne accès qu'à l'organisation de son utilisateur, jamais à une autre.
  • Elle agit avec les droits de cet utilisateur : son rôle, sa sécurité par champ. Une clé portée par un compte non administrateur ne peut pas modifier la configuration.
  • Elle s'utilise uniquement pour le serveur MCP, et se révoque depuis le même écran, avec effet immédiat.

Prêt à mettre en place votre solution ?

Contactez-nous, ou lancez votre essai gratuit dès aujourd'hui.

Slamflow© 2026 · Qui sommes-nous · slamflow.com