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 :
- Paramètres → Webhooks
- Cliquez sur Nouveau webhook
- Entrez votre URL :
https://votre-domaine.com/webhooks/moncreneau - Sélectionnez les événements à recevoir
- Copiez le secret généré (pour vérifier les signatures)
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énementX-Moncreneau-Signature: Signature HMAC-SHA256 du payloadX-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.