Facebook Pixel
Fit'DistanceDocumentation
Ouvrir l'app
Sur cette page

Un formulaire rempli → une note sur la fiche de l'élève

Chaque réponse à un formulaire Tally devient une note privée sur la fiche de l'élève, avec n8n ou Make.

Chaque fois qu'un élève remplit ton formulaire Tally, ses réponses deviennent une note privée sur sa fiche. Ce cas pratique écrit en ton nom, sans prévenir l'élève : il lui faut une clé avec Élèves › Écrire (students:write) et une offre qui inclut les écritures. Crée la clé dans l'app, conditions d'usage acceptées.

Ce que fait ce cas pratique

  1. Le lien : dans le formulaire, tape /hidden pour insérer un bloc de champ caché, et nomme-le student_id : sans lui, la réponse n'a pas d'identifiant. Tu envoies ensuite le formulaire à l'élève, par exemple https://tally.so/r/<form>?student_id=123. L'id de l'élève se lit dans l'adresse de sa fiche dans l'app, ou dans GET /students. Le nom student_id s'écrit exactement ainsi. La valeur de student_id se lit et se change dans l'adresse : ajoute une question « Ton prénom », qui s'écrira dans la note, pour voir d'un coup d'œil qui a répondu.
  2. Tally : à chaque réponse, il envoie à n8n un événement avec data.responseId, data.formName et data.fields. Chaque champ a un label, un type et une value ; le champ caché est de type HIDDEN_FIELDS.
  3. La note : un POST /operations/students.note_create écrit Formulaire <nom> du <date> :, puis une ligne question : réponse par champ répondu, hors champs cachés.
curl -X POST https://api.fitdistance.io/api/partner/v1/operations/students.note_create \
  -H "Authorization: Bearer fd_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: note-2wgx4n" \
  -d '{"studentId": 123, "content": "Formulaire Bilan de mi-parcours du 2026-10-26 :\nComment tu te sens ? : Bien"}'

L'Idempotency-Key vaut note-<responseId>, l'identifiant de la réponse : une réponse que Tally renvoie ne s'écrit qu'une fois et ne coûte rien de plus, tant que la clé est gardée, de 24 à 48 heures. Voir Écritures et idempotence.

Ce qui se lit dans l'app

La note apparaît dans la fiche de l'élève, onglet notes, comme une note écrite à la main. Elle reste privée : l'élève ne la voit pas.

Ce que ça coûte

Une note coûte un crédit, débité avant l'appel : une par réponse. Un argument que le schéma de l'opération refuse est remboursé ; un 401, un 403 ou un 429 ne coûtent rien ; un rejeu est remboursé. Un student_id qui n'est pas celui d'un de tes élèves donne un 404 NOT_FOUND, facturé.

Un lien sans student_id

Dans n8n, un lien collé sans student_id, ou avec autre chose qu'un nombre entier positif, ne casse rien : Has a student id? envoie la réponse vers No student id. Le workflow s'arrête sans écrire, et rien n'est facturé. La réponse reste dans Tally. Dans Make, c'est le filtre de l'étape 2 qui joue ce rôle.

Dans n8n

  1. Choisis Import from URL… et colle https://fitdistance.io/documentation/api/cas-pratiques/formulaire-note-eleve.n8n.json, ou télécharge le workflow et choisis Import from File…. Choisis l'identifiant Fit'Distance API de Brancher n8n dans le nœud HTTP Request.
  2. Remplace le chemin fitdistance-form du Webhook par un nom que toi seul connais, et change-this-secret dans Secret matches? par un long texte au hasard, puis active le workflow. L'adresse du webhook est un mot de passe : si elle fuite, change le chemin, car avec l'adresse et le secret, chaque appel falsifié écrirait une note pour un crédit.
  3. Dans Tally, publie le formulaire, ouvre Integrations, choisis Connect sur Webhooks et colle https://<ton-n8n>/webhook/<chemin>. Avec Add HTTP headers, ajoute l'en-tête X-Webhook-Secret, avec le même texte : sans lui, le workflow n'écrit rien.
  4. Remplis le formulaire avec ton lien ?student_id=<id> et lis la fiche de l'élève.

Le webhook répond tout de suite à Tally, qui attend un 2xx en moins de 10 secondes : un secret faux reçoit la même réponse, mais rien n'est écrit. Le titre de la note est en haut du code de Format the note : change-le. Les réponses à choix y apparaissent en texte, pas en identifiant.

Avec Calendly

Dans n8n, le nœud Calendly Trigger remplace le Webhook et Secret matches?, et rend le corps de Calendly sans body. Le lien devient ?utm_content=123. Format the note lit payload : l'élève dans payload.tracking.utm_content, une chaîne, et la clé note- suivie de l'identifiant de l'invité, la fin de payload.uri, que la garde vérifie à la place de responseId. La note devient « Rendez-vous réservé le … ».

Dans Make

  1. Tally › Watch New Responses.
  2. Un filtre : student_id n'est pas vide. Sans lui, une réponse sans student_id appelle l'API et coûte un crédit.
  3. HTTP › Make a request : POST sur https://api.fitdistance.io/api/partner/v1/operations/students.note_create, Idempotency-Key = note- suivi de l'identifiant de la réponse, Body content type application/JSON, Body input method Data structure : une structure à deux champs, studentId de type nombre, avec le champ caché student_id, et content de type texte, avec les réponses. Make y échappe lui-même guillemets et retours à la ligne.

Tally › Watch New Responses crée lui-même l'adresse de son webhook chez Tally, par ta connexion Tally : il n'y a pas d'en-tête à ajouter, et cette adresse, que ton formulaire ne montre jamais, joue le rôle du secret.

Référence : ajout d'une note.

Page suivanteLe récap du lundi, sur Telegram ou WhatsAppChaque lundi à 8 h, reçois sur Telegram le récap de ta semaine : nouveaux élèves, séances, bilans et habitudes, avec n8n ou Make.