SCÉNARIO TRANSVERSE
📅

Webhook Calendly

Intégration automatique des réservations en ligne — création de séances depuis Calendly sans intervention manuelle.

Webhook HTTPSinvitee.createdSlug mappingAuto-création
7
Étapes
9
Slugs mappés
Auto
Création séance
S83
Livré
01 Étapes du scénario
01 Principe du webhook
Lorsqu'un client réserve un créneau sur Calendly, ce dernier envoie un webhook HTTP POST vers Anim'Gest qui crée automatiquement une séance en base.
  • Client réserve sur Calendly → POST /api/webhooks/calendly → Séance créée
  • Aucune ressaisie manuelle, pas d'oubli, pas de doublon
  • Disponible 24/7 — même la nuit ou le week-end
  • Traçabilité complète : log de chaque appel dans param_config
02 Copier l'URL Webhook depuis Anim'Gest
  • Paramètres → Calendly
  • Encart « URL Webhook Calendly »
  • Cliquer sur Copier pour copier l'URL complète
  • Format : https://votre-domaine.fr/api/webhooks/calendly
⚠ Attention : Le webhook Calendly nécessite que votre serveur Anim'Gest soit accessible depuis Internet (URL publique). En environnement local, utiliser un tunnel comme ngrok pour les tests.
03 Configurer le webhook dans Calendly
  • Dans Calendly.com : Settings → Integrations → Webhooks → + New Webhook
  • URL : coller l'URL copiée depuis Anim'Gest
  • Événement à écouter : invitee.created
  • Scope : Organization ou User selon votre compte
  • Sauvegarder — Calendly fournit une clé secrète (signature)
04 Tester l'intégration
  • Faire une réservation test sur Calendly
  • Vérifier dans Anim'Gest → Séances qu'une nouvelle séance apparaît
  • Vérifier la liaison client (par email principalement)
  • Vérifier le type de séance (selon mapping du slug)
  • Consulter le log dans param_config (groupe CALENDLY_LOG)
05 Mapping des types de RDV (slug)
Le système associe automatiquement le slug Calendly au type de séance Anim'Gest.
  • ec-1h30 → Bilan Comportemental (Comportementaliste)
  • suivi-1h → Séance de suivi (Comportementaliste)
  • educ-cours → Cours individuel éducation
  • toilettage → Toilettage (Toiletteur)
  • garde-visite → Visite à domicile (Pet-sitter)
  • garde-pension → Garde / Pension
  • cours-equit → Cours équitation individuel (Centre équestre)
  • balade-equit → Balade équestre
  • consult-elev → Suivi portée (Éleveur)
💡 Conseil : Le slug correspond au nom de l'event type dans l'URL Calendly (ex: calendly.com/votre-nom/ec-1h30). Nommez vos event types selon ces slugs pour un mapping automatique.
06 Comportement du système
  • Client reconnu par email → séance liée au client existant (TIE_ID)
  • Client reconnu par nom → séance liée (recherche approx.)
  • Client inconnu → séance créée sans lien client (à compléter manuellement)
  • Type RDV reconnu (slug) → STY_ID associé automatiquement
  • Type RDV inconnu → séance créée sans type (à renseigner)
  • Événement autre que invitee.created → ignoré (réponse 200 OK)
  • Toutes les séances sont en statut PLANIFIEE et FACTURABLE par défaut
07 Format API et payload
  • Route : POST /api/webhooks/calendly
  • Content-Type : application/json
  • Payload Calendly « invitee.created » : event.start_time, event.end_time, invitee.name, invitee.email, event_type.slug
  • Réponse OK : { "ok": true, "created": true }
  • Réponse ignorée : { "ok": true, "skipped": true }
  • Vérification signature HMAC SHA-256 (X-Calendly-Webhook-Signature)