Aller au contenu principal

Webhooks

Recevez des notifications en temps réel lorsque des événements se produisent dans votre compte moncreneau.

Introduction

Les webhooks vous permettent de recevoir des notifications HTTP POST automatiques quand des événements se produisent, comme la création ou l'annulation d'un rendez-vous. Au lieu de faire du polling régulier de l'API, les webhooks envoient les données directement à votre serveur.

Cas d'usage

  • Notifications utilisateurs : Envoyez un SMS/email quand un rendez-vous est validé
  • Synchronisation : Mettez à jour votre base de données locale en temps réel
  • Analytics : Collectez des métriques sur les rendez-vous
  • Intégrations : Connectez moncreneau à d'autres systèmes (CRM, ERP, etc.)

Configuration

1. Créer un endpoint webhook

Créez un endpoint HTTPS sur votre serveur qui accepte les POST :

// Express.js
app.post('/webhooks/moncreneau', (req, res) => {
const event = req.body;

// Vérifier la signature (voir section Sécurité)
if (!verifySignature(req)) {
return res.status(401).send('Invalid signature');
}

// Traiter l'événement
handleEvent(event);

// Répondre rapidement
res.status(200).send('OK');
});

2. Enregistrer le webhook

Important : Les webhooks doivent être configurés depuis l'interface web par un utilisateur avec le rôle STAFF (ADMIN ou OWNER).

Depuis le dashboard moncreneau :

  1. Paramètres → Webhooks
  2. Cliquez sur Nouveau webhook
  3. Entrez votre URL : https://votre-domaine.com/webhooks/moncreneau
  4. Sélectionnez les événements à recevoir
  5. Copiez le secret généré (pour vérifier les signatures)
Gestion via l'interface uniquement

La création et gestion des webhooks se fait exclusivement depuis l'interface web. Les clés API ne permettent pas de gérer les webhooks.

Format des événements

Chaque webhook contient :

{
"id": "evt_abc123",
"type": "appointment.created",
"created": "2026-01-21T14:30:00Z",
"data": {
"object": {
"id": 12345,
"departmentId": 5,
"dateTime": "2026-01-25T14:30:00",
"status": "SCHEDULED",
"name": "Jean Dupont",
"phone": "+224621234567",
"qrCode": "https://moncreneau.gn/qr/12345"
}
}
}

Headers HTTP

Chaque requête webhook inclut ces headers :

POST /webhooks/moncreneau HTTP/1.1
Host: votre-domaine.com
Content-Type: application/json
X-Moncreneau-Event: appointment.created
X-Moncreneau-Signature: sha256=5d41402abc4b2a76b9719d911017c592
X-Moncreneau-Delivery: 550e8400-e29b-41d4-a716-446655440000
User-Agent: Moncreneau-Webhooks/1.0
  • X-Moncreneau-Event : Type d'événement
  • X-Moncreneau-Signature : Signature HMAC-SHA256 du payload
  • X-Moncreneau-Delivery : ID unique de livraison

Réponse attendue

Votre endpoint doit :

  • Répondre avec un code 2xx (200, 201, 204) en moins de 5 secondes
  • Traiter l'événement de manière asynchrone si nécessaire
  • Être idempotent (même événement = même résultat)
// ✅ Bon : Réponse rapide + traitement async
app.post('/webhooks', async (req, res) => {
const event = req.body;

// Répondre immédiatement
res.status(200).send('OK');

// Traiter en arrière-plan
processEventAsync(event);
});

// ❌ Mauvais : Traitement long avant réponse
app.post('/webhooks', async (req, res) => {
const event = req.body;

await sendEmail(event); // Peut prendre >5s
await updateDatabase(event);

res.status(200).send('OK'); // Trop tard !
});

Retry Logic

Si votre endpoint ne répond pas avec 2xx :

  • Tentative 1 : Immédiatement
  • Tentative 2 : Après 1 minute
  • Tentative 3 : Après 5 minutes
  • Tentative 4 : Après 30 minutes
  • Tentative 5 : Après 2 heures
  • Abandon : Après 24 heures

Environnements

Vous pouvez utiliser des URLs de webhook différentes pour développement et production en fonction de vos besoins.

Debugging

Logs de webhooks

Consultez les logs dans Dashboard → Webhooks → Logs :

  • Statut de chaque livraison (succès, échec)
  • Payload envoyé
  • Réponse reçue
  • Temps de réponse

Rejeu manuel

Vous pouvez rejouer un webhook depuis les logs pour débugger.

Prochaines étapes