Ce que fait cette étape
Certains champs attendus par votre outil n'existent nulle part chez nous : ils se calculent. Une date d'effet au premier jour du mois suivant dépend du jour de l'envoi. Le nom du conjoint ne doit partir que si le prospect vit en couple. Le nœud Transformer les données réécrit des valeurs par listes ; l'étape Code couvre les cas qu'une liste ne sait pas traiter.
Vous écrivez une fonction qui reçoit les champs du lead et rend des champs nommés. Ces champs deviennent des marqueurs que le webhook, OGGO Data et Nova placés en dessous peuvent citer. La fonction calcule seulement : c'est la destination qui envoie, avec ses propres réglages.
Ce qu'il faut avoir sous la main
- Un flux déjà créé, avec au moins une destination webhook, OGGO Data ou Nova en dessous de l'étape.
- Le droit de gérer les intégrations sur votre compte, voir Que peut faire chaque rôle ?.
- Des notions de JavaScript. Une fonction de dix lignes suffit dans la plupart des cas, et l'exemple proposé couvre les deux besoins les plus courants.
Ce que reçoit et rend la fonction
La fonction reçoit un objet data et rend un objet dont chaque clé est un nom de champ :
``js (data) => { const now = new Date(); const start = new Date(now.getFullYear(), now.getMonth() + 1, 1); const dd = String(start.getDate()).padStart(2, "0"); const mm = String(start.getMonth() + 1).padStart(2, "0"); return { date_effet1: ${dd}/${mm}/${start.getFullYear()}, ...(data.subscriberType === "couple" ? { nom_conj: data.lastName } : {}), }; } ``
- Ce qu'elle reçoit : les mêmes champs que le nœud Transformer voit à cet endroit du flux, règles des étapes du dessus comprises. Les valeurs arrivent en texte.
- Ce qu'elle rend : des valeurs texte, nombre, vrai/faux ou
null. Chacune part sous forme de texte, 2 000 caractères au plus. - Une clé absente, ou valant
undefined, signifie « pas de champ ». C'est ce qui rend un champ conditionnel : dans l'exemple,nom_conjn'existe que pour un couple. - Les noms : lettres, chiffres,
_et-, en commençant par une lettre ou_, 64 caractères au plus.phoneNumberest réservé : il protège le numéro utilisé pour joindre le prospect.
Les limites
La fonction s'exécute dans un espace isolé :
- pas de réseau : ni
fetch, ni appel à un autre service ; - pas de
require, pas de module, pas d'accès aux variables d'environnement ni à aucun secret ; - 100 ms de calcul et 32 Mo de mémoire au plus ;
- 20 Ko de source et 100 champs en sortie au plus ;
- pas d'
asyncni de promesse.
new Date() fonctionne, à l'heure de nos serveurs.
Le chemin, depuis le tableau de bord
1. Ouvrez l'écran Intégration
Dans le menu de gauche, cliquez sur Intégrations, puis ouvrez le flux à régler.
2. Ajoutez l'étape « Code »
Cliquez sur le + de la toile, à l'endroit voulu. Sous Logique, choisissez Code. L'étape arrive avec l'exemple ci-dessus déjà écrit et ses deux sorties déjà déclarées.
3. Écrivez la fonction
Sous la zone de code, la liste Champs disponibles reprend les champs de ce flux. Un clic sur un champ l'insère dans la fonction, à l'endroit du curseur. La touche Tab indente ; pour quitter la zone au clavier, appuyez sur Échap puis sur Tab.
4. Déclarez les sorties
Seuls les champs listés sous Sorties déclarées passent aux destinations du dessous. Un champ rendu par la fonction mais absent de cette liste n'est pas envoyé, et l'écran le signale.
Déclarez aussi les champs qui n'apparaissent que parfois, comme nom_conj : même si votre essai porte sur un prospect seul, le champ doit être déclaré pour partir avec les couples, et pour que {{nom_conj}} soit accepté à l'activation.
5. Cliquez sur « Essayer »
La fonction s'exécute sur le dernier lead reçu dans le périmètre de ce flux, ou sur un exemple fictif si vous n'avez encore rien reçu. Rien n'est envoyé. L'écran montre les champs rendus, ce que la fonction a reçu, et les champs produits sans être déclarés, avec un bouton Ajouter aux sorties.
6. Citez les champs dans la destination
Dans le webhook, OGGO Data ou Nova placés en dessous, les sorties déclarées apparaissent parmi les champs proposés. Dans un webhook, citez-les comme n'importe quel champ : {{date_effet1}}.
Les champs conditionnels dans un webhook
Un marqueur sans valeur part vide par défaut : nom_conj= pour un prospect seul. La case Omettre les paramètres dont le marqueur est absent, dans le réglage du webhook, supprime alors le paramètre au lieu de l'envoyer vide. Elle est cochée d'office sur un webhook que vous ajoutez ; un webhook déjà enregistré garde son comportement tant que vous ne la cochez pas.
Quand la fonction échoue
L'essai et l'historique disent ce qui s'est passé, par une phrase suivie du message de la fonction :
- erreur de syntaxe : la source ne se lit pas. Le message cite souvent la ligne ; les numéros de ligne sont affichés à gauche de la zone de code ;
- plus de 100 ms de calcul : le plus souvent une boucle sans fin ;
- plus de 32 Mo de mémoire ;
- résultat refusé : la fonction n'a pas rendu un objet, ou un nom, une valeur ou le nombre de champs dépasse les limites ;
- erreur pendant l'exécution : la fonction a levé une erreur, par exemple en lisant une propriété d'une valeur absente.
Une erreur de la fonction (syntaxe, résultat refusé, erreur levée) n'est pas réessayée : l'envoi est marqué en échec dans l'historique, et les destinations du dessous ne partent pas pour ce lead. Corrigez la fonction. Un dépassement de temps ou de mémoire est réessayé automatiquement quelques fois. Sous l'erreur, l'essai vous indique quoi faire : « réessayez dans un instant » ou « corrigez la fonction ».
Ce qui bloque l'activation
Un flux avec une étape Code peut toujours être enregistré. Il ne s'active pas si :
- l'étape est vide : « L'étape Code est vide : écrivez la fonction à exécuter. » ;
- la fonction échoue sur l'exemple d'essai : ouvrez l'étape et cliquez sur Essayer pour lire l'erreur.