Aperçu
Les webhooks vous permettent de recevoir des notifications HTTP POST en temps réel lorsque des événements se produisent dans InboundFlow — un appel se termine, un rendez-vous est réservé, un prospect est créé ou un appel est transféré. Utilisez les webhooks pour synchroniser les données avec votre CRM, envoyer des notifications Slack, mettre à jour des feuilles de calcul ou déclencher tout workflow personnalisé.
Intégrations Supportées
Configuration
Accédez à votre tableau de bord InboundFlow → Paramètres → Intégrations
Cliquez sur « Connecter » sur Zapier, Make ou Webhook Personnalisé
Collez votre URL de webhook (doit être HTTPS)
Sélectionnez les événements à recevoir
Cliquez sur « Tester le Webhook » pour vérifier
Enregistrer
Types d'Événements
| Événement | Déclencheur | Description |
|---|---|---|
| call.completed | Chaque appel terminé | Se déclenche après la fin d'un appel avec résumé, transcription et infos appelant |
| call.transferred | Appel transféré vers un humain | Se déclenche lorsque l'IA transfère un appel vers une destination configurée |
| appointment.booked | Réservation calendrier effectuée | Se déclenche lorsque l'IA réserve un rendez-vous pendant un appel |
| lead.created | Nouveau prospect capturé | Se déclenche lorsqu'un nouveau prospect est créé à partir d'un appel |
Format de Livraison
Toutes les livraisons de webhook sont des requêtes HTTP POST avec un corps JSON :
En-têtes
Content-Type: application/json
X-InboundFlow-Event: call.completed
X-InboundFlow-Delivery-Id: unique-uuid
X-InboundFlow-Timestamp: 1709064000
User-Agent: InboundFlow-Webhook/1.0
Si vous avez configuré un secret de signature :
X-InboundFlow-Signature: sha256=abc123...
Charges Utiles
call.completed
{
"event": "call.completed",
"timestamp": "2026-02-24T21:00:00.000Z",
"organization_id": "uuid",
"delivery_id": "unique-uuid",
"data": {
"call_id": "uuid",
"caller_phone": "+1234567890",
"caller_name": "Dave",
"caller_email": "dave@example.com",
"duration_seconds": 55,
"summary": "Called about auto repair appointment. Customer wants to bring in a 2019 Honda Civic for brake inspection.",
"intent": "book appointment",
"urgency": "medium",
"recording_url": "https://...",
"started_at": "2026-02-24T20:59:00Z",
"ended_at": "2026-02-24T21:00:00Z"
}
}
call.transferred
{
"event": "call.transferred",
"timestamp": "2026-02-24T21:00:00.000Z",
"organization_id": "uuid",
"delivery_id": "unique-uuid",
"data": {
"call_id": "uuid",
"caller_phone": "+1234567890",
"caller_name": "Dave",
"duration_seconds": 47,
"summary": "Caller requested to speak with manager about pricing.",
"transferred_to_label": "Manager",
"transferred_to_number": "+18154264329",
"urgency": "medium",
"reason": "Wants to discuss pricing for full body repair"
}
}
appointment.booked
{
"event": "appointment.booked",
"timestamp": "2026-02-24T21:00:00.000Z",
"organization_id": "uuid",
"delivery_id": "unique-uuid",
"data": {
"call_id": "uuid",
"caller_phone": "+1234567890",
"caller_name": "Sarah",
"appointment_date": "2026-02-25",
"appointment_time_start": "2026-02-25T11:00:00Z",
"appointment_time_end": "2026-02-25T12:00:00Z",
"service_type": "Auto Repair Appointment",
"calendar_event_id": "google_event_id",
"calendar_event_link": "https://calendar.google.com/..."
}
}
lead.created
{
"event": "lead.created",
"timestamp": "2026-02-24T21:00:00.000Z",
"organization_id": "uuid",
"delivery_id": "unique-uuid",
"data": {
"call_id": "uuid",
"caller_phone": "+1234567890",
"caller_name": "Dave",
"caller_email": "dave@example.com",
"intent": "pricing inquiry",
"urgency": "high",
"interest": "auto body work",
"call_summary": "Called about getting a quote for front bumper repair on a 2019 Honda Civic."
}
}
Vérification des Signatures
Si vous définissez un secret de signature lors de la configuration de votre webhook, chaque livraison inclut une signature HMAC-SHA256 pour vérification :
const crypto = require('crypto');
function verifyWebhook(body, timestamp, signature, secret) {
const signatureInput = `${timestamp}.${JSON.stringify(body)}`;
const expectedSignature = 'sha256=' +
crypto.createHmac('sha256', secret)
.update(signatureInput)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}
// In your webhook handler:
const isValid = verifyWebhook(
req.body,
req.headers['x-inboundflow-timestamp'],
req.headers['x-inboundflow-signature'],
'your_signing_secret'
);
Reprises & Fiabilité
- Délai d'attente : Les webhooks ont un délai de livraison de 10 secondes. Répondez rapidement avec un statut 2xx.
- Suivi des échecs : Les livraisons échouées sont suivies. Après 10 échecs consécutifs, le webhook est automatiquement désactivé.
- Réactiver : Si votre webhook est auto-désactivé, allez dans Paramètres → Intégrations pour vous reconnecter.
- Idempotence : Utilisez le champ
delivery_idpour dédupliquer les événements si votre gestionnaire est appelé deux fois.