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

Un DM Instagram → un code d'activation, avec ManyChat

Quand quelqu'un t'écrit un mot-clé en message privé Instagram, ManyChat lui répond avec un code d'activation créé par Fit'Distance, avec n8n ou Make.

Quand quelqu'un t'écrit un mot-clé en message privé sur Instagram, ManyChat lui répond avec un code d'activation tout frais. Ce cas pratique écrit en ton nom, sans rien envoyer d'autre : 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. Il faut aussi l'offre Pro de ManyChat, la seule à proposer l'action External Request.

Ce que fait ce cas pratique

  1. Dans ManyChat : un déclencheur « mot-clé » en DM Instagram, par exemple PROGRAMME, ou « commentaire sur un post ». Une action External Request envoie un POST à l'adresse du webhook n8n, avec l'en-tête X-Webhook-Secret et le corps ci-dessous. Son Response mapping range $.code dans le champ personnalisé fd_code, que tu vides avant la requête : si elle échoue (secret faux, délai dépassé), ManyChat ne le remplit pas. Un message suit, seulement si fd_code est rempli : « Voici ton code : », le champ fd_code inséré avec le sélecteur de variables, puis « Installe Fit'Distance et entre-le à l'inscription. »
  2. Dans n8n : le webhook vérifie le secret, puis un POST /operations/students.create_open_code crée le code. Il répond { "code": … } à ManyChat. Un secret faux reçoit un 401, sans rien écrire.
{ "subscriber_id": "<Contact ID>", "first_name": "<First name>" }

Remplace chaque valeur entre chevrons par le champ ManyChat du même nom, inséré avec le sélecteur de variables. Crée d'abord le champ fd_code, de type texte. ManyChat attend une réponse JSON en moins de 10 secondes, sur une adresse en https.

curl -X POST https://api.fitdistance.io/api/partner/v1/operations/students.create_open_code \
  -H "Authorization: Bearer fd_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: code-1234567890-2026-10-26" \
  -d '{}'

Le code est dans data.token (et dans message) : { "data": { "token": "AB2C", … }, "message": "…", "dry_run": false }. L'Idempotency-Key vaut code-<abonné>-<AAAA-MM-JJ> : le même abonné qui redemande le même jour reçoit le même code, et le rejeu est remboursé. Voir Écritures et idempotence.

Ce que le code ouvre

Le code donne accès à ton coaching : quiconque l'entre à l'inscription devient ton élève, et n'importe qui peut écrire le mot-clé. Réserve-le à une offre que tu veux vraiment distribuer. Pour retirer un élève entré par erreur, passe par l'app.

Ce que ça coûte

Un code coûte un crédit, débité avant l'appel. 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é. students.create_open_code n'a pas d'aperçu : ne lance un test qu'avec ton propre compte Instagram, il crée un vrai code et n'envoie rien.

Dans n8n

  1. Choisis Import from URL… et colle https://fitdistance.io/documentation/api/cas-pratiques/instagram-dm-code.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. Dans Secret matches?, remplace change-this-secret par un long texte au hasard, le même que l'en-tête X-Webhook-Secret de ManyChat. Remplace aussi le chemin fitdistance-code du Webhook par un nom que toi seul connais.
  3. Active le workflow : ManyChat appelle https://<ton-n8n>/webhook/<chemin>, pas l'adresse de test.
  4. Envoie le mot-clé depuis ton compte. ManyChat ne remplit pas fd_code quand tu testes la requête dans l'éditeur : déclenche l'automatisation comme un contact, ou en aperçu.

Today garde l'identifiant de l'abonné et la date. Si ManyChat envoie une variable vide ou non résolue, il arrête le workflow avant d'écrire : tous les abonnés auraient la même clé. Pour limiter la durée du code, ajoute contractEndAt au corps de Create the code, avec une date qui ne change pas dans la journée : sinon le second appel du jour reçoit un 409 IDEMPOTENCY_MISMATCH.

Dans Make

  1. Webhooks › Custom webhook : dans Advanced settings du webhook, choisis Yes pour Get request headers, puis ajoute un filtre : l'en-tête x-webhook-secret égal à ton secret, et subscriber_id non vide, comme Today dans n8n.
  2. HTTP › Make a request : POST sur https://api.fitdistance.io/api/partner/v1/operations/students.create_open_code, Idempotency-Key = code-{{subscriber_id}}-{{formatDate(now; YYYY-MM-DD)}}, Body content type application/JSON, Body input method JSON string, corps {}, Parse response sur Yes.
  3. Webhooks › Webhook Response : Status 200, Body { "code": "{{data.token}}" }, en-tête Content-Type = application/json.

Référence : création d'un code.

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