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

Élève depuis 90 jours → une demande d'avis

Chaque lundi, demande un avis Google aux élèves arrivés il y a trois mois, après un premier passage sans envoi, avec n8n ou Make.

Chaque lundi à 9 h, les élèves arrivés il y a trois mois reçoivent dans l'app un message qui leur demande un avis Google. Ce cas pratique écrit en ton nom : il lui faut une clé avec Élèves › Lire (students:read) et Messages › Écrire (messaging: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. Déclencheur : chaque lundi à 9 h. La fenêtre va de J-97 à J-90 : sept jours, donc chaque élève n'est sollicité qu'une fois.
  2. Élèves : GET /students avec limit=50, toutes les pages. On garde ceux dont joined_at est dans la fenêtre, sauf si leur contrat est PAUSED ou EXPIRED.
  3. Envoi : un POST /operations/messaging.send par élève retenu.
curl -X POST https://api.fitdistance.io/api/partner/v1/operations/messaging.send \
  -H "Authorization: Bearer fd_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: avis-42-2026-10-26" \
  -d '{"text": "Salut Léa, …", "studentId": 42}'

L'Idempotency-Key vaut avis-<id>-<AAAA-MM-JJ>, avec la date du passage : un rejeu le même jour est remboursé. Voir Écritures et idempotence. Si ton outil est éteint un lundi, les élèves de cette fenêtre ne sont pas rattrapés.

Le message

Salut Léa, ça fait trois mois qu'on travaille ensemble. Si tu as deux minutes, ton avis sur Google m'aiderait beaucoup : https://g.page/r/XXXXXXXX/review. Merci !

Un avis se demande à tous les élèves de la fenêtre, jamais seulement aux satisfaits, et ne s'achète jamais : Google interdit de solliciter seulement les avis positifs et d'offrir quoi que ce soit en échange. Le message reste le tien : relis-le et change-le avant d'activer l'envoi, sans le faire dépendre de la satisfaction de l'élève. Ton lien est dans ta fiche Google Business Profile, sur ordinateur : Voir les avis, Recevoir plus d'avis, l'icône de partage, puis Copier.

Ce que ça coûte

Une page lue coûte un crédit, débité avant l'appel ; chaque message envoyé en coûte un. Avec 100 élèves : 2 pages lues avec limit=50, 1 avec limit=200, puis un message par élève de la semaine. Un paramètre refusé coûte quand même un crédit ; un 401, un 403 ou un 429 ne coûtent rien ; un rejeu est remboursé.

Un premier passage sans rien envoyer

messaging.send n'a pas d'aperçu avec studentId : dry_run: true donne un 400 DRY_RUN_UNSUPPORTED, gratuit. Le premier passage liste donc les élèves sans les prévenir, pour le seul prix des lectures.

Dans n8n

  1. Choisis Import from URL… et colle https://fitdistance.io/documentation/api/cas-pratiques/avis-google-90-jours.n8n.json, ou télécharge le workflow et choisis Import from File…. Choisis l'identifiant Fit'Distance API de Brancher n8n dans chaque nœud HTTP Request.
  2. Mets ton lien d'avis en haut du code de Students to remind : tant qu'il y reste XXXXXXXX, le nœud s'arrête. Relis le texte.
  3. Exécute le workflow et lis la sortie de Students to remind : un élément par élève, avec son texte.

L'envoi écrit à de vrais élèves

Send message est livré désactivé : active-le seulement après ce premier passage. L'Idempotency-Key porte la date du jour : un passage à la main un autre jour décale la fenêtre et peut écrire deux fois au même élève. Une fois l'envoi activé, laisse le planning travailler.

  1. Active Send message, puis active le workflow. Il envoie un message par seconde au plus.

La boucle est celle de Brancher n8n : More students? est le nœud If et Students, next page lit la page suivante. Les heures et les fenêtres suivent le fuseau horaire du workflow (Timezone dans ses paramètres, New York par défaut).

Dans Make

  1. HTTP › Make a request (planning : chaque lundi à 9 h) : GET sur https://api.fitdistance.io/api/partner/v1/students, limit = 200, Parse response sur Yes.
  2. Iterator sur data, puis un filtre : joined_at postérieur ou égal à {{addDays(now; -97)}} et antérieur à {{addDays(now; -90)}}, contract_status différent de PAUSED et de EXPIRED.
  3. Lis le résultat du filtre, puis ajoute HTTP › Make a request : POST sur /operations/messaging.send, Idempotency-Key = avis-{{id}}-{{formatDate(now; YYYY-MM-DD)}}, Body content type application/JSON, Body input method JSON string, corps {"text": "…", "studentId": {{id}}}.

Make ne lit que 200 élèves ; le workflow n8n, lui, lit toutes les pages. Référence : élèves, envoi d'un message.

Page suivanteSuivre automatiquement un groupe d'élèvesPose un tag sur un groupe d'élèves, lis chaque matin leurs bilans en attente, écris le retour et passe le bilan à fait.