Webhooks
Apprenez à intégrer des notifications en temps réel dans votre application
Que sont les webhooks ?
Les webhooks sont des messages automatiques envoyés par des applications lorsque quelque chose se produit. Ils ont un message—ou payload—et sont envoyés à une URL unique (votre endpoint).
Au lieu de vérifier constamment notre API pour de nouvelles données (polling), les webhooks envoient les données à votre application en temps réel lorsque des événements se produisent. C'est plus efficace et fournit des notifications instantanées.
Lorsqu'un utilisateur soumet une enquête ou un formulaire sur votre site web, Ask Users peut instantanément notifier votre application via webhook, vous permettant de :
- Synchroniser automatiquement les données avec votre CRM (Salesforce, HubSpot, etc.)
- Envoyer des notifications à votre équipe via Slack ou email
- Déclencher des workflows personnalisés dans votre application
- Mettre à jour votre base de données en temps réel
- Alimenter les données dans des plateformes d'analyse
Comment fonctionnent les webhooks
Événement se produit
Un utilisateur soumet une enquête ou un formulaire sur votre site web. Ask Users capture cet événement et se prépare à notifier votre application.
Webhook déclenché
Ask Users vérifie quels webhooks sont configurés pour cet événement. Si votre webhook est configuré pour recevoir ce type d'événement, nous préparons le payload avec toutes les données pertinentes.
Requête HTTP POST envoyée
Nous envoyons une requête HTTP POST à votre URL webhook avec les données de l'événement au format JSON. La requête inclut des en-têtes de sécurité (signature HMAC) pour vérifier l'authenticité.
Votre endpoint traite les données
Votre application reçoit le webhook, vérifie la signature et traite les données. Vous pouvez les stocker dans votre base de données, déclencher des notifications, mettre à jour des enregistrements ou effectuer toute logique personnalisée.
Réponse et nouvelle tentative
Votre endpoint doit répondre avec un code de statut 2xx (typiquement 200 OK) dans les 30 secondes. Si nous ne recevons pas de réponse réussie, nous réessayerons automatiquement la livraison jusqu'à 5 fois avec un backoff exponentiel :
- Tentative 1 : Immédiate
- Tentative 2 : 1 minute plus tard
- Tentative 3 : 5 minutes plus tard
- Tentative 4 : 15 minutes plus tard
- Tentative 5 : 1 heure plus tard
- Tentative 6 : 6 heures plus tard
Caractéristiques clés
Livraison sécurisée
Tous les webhooks sont signés avec des signatures HMAC-SHA256 pour vérifier l'authenticité
Nouvelles tentatives automatiques
Les livraisons échouées sont automatiquement réessayées jusqu'à 5 fois avec backoff exponentiel
Livraison en temps réel
Les webhooks se déclenchent immédiatement lorsque des événements se produisent, généralement en millisecondes
Déduplication des événements
Les IDs d'événements uniques empêchent le traitement en double même pendant les tentatives
Événements supportés
survey.response.created
Déclenché lorsqu'une nouvelle réponse d'enquête est soumise. Contient les données complètes de la réponse, y compris toutes les réponses, les informations du répondant et les métadonnées de l'enquête.
form.submission.created
Déclenché lorsqu'une nouvelle soumission de formulaire est créée. Inclut toutes les données des champs du formulaire, le statut de soumission et les détails de configuration du formulaire.
Démarrage rapide
Configurer le webhook dans le tableau de bord
1. Allez dans votre tableau de bord
2. Naviguez vers Paramètres → Webhooks
3. Cliquez sur Créer un Webhook
4. Entrez l'URL de votre endpoint et sélectionnez les types d'événements
5. Enregistrez et copiez votre clé secrète
Testez votre webhook
Soumettez une enquête ou un formulaire de test pour déclencher votre webhook et vérifier qu'il fonctionne correctement. Vérifiez les journaux de livraison dans votre tableau de bord pour voir la requête et la réponse.
Implémentation de référence webhook
Voici un exemple complet de la façon de créer et de vérifier un endpoint webhook dans votre application :
// Node.js/Express example
const crypto = require('crypto');
app.post('/webhooks/askusers', (req, res) => {
const signature = req.headers['x-webhook-signature'];
// Verify signature (see security section)
if (!verifySignature(req.body, signature)) {
return res.status(401).send('Invalid signature');
}
// Process webhook
const { event_type, data } = req.body;
// Return 200 OK immediately
res.status(200).send('OK');
// Process async
processWebhookAsync(event_type, data);
});Exemple de payload webhook
Voici un exemple de ce à quoi ressemble un payload webhook :
{
"event_type": "survey.response.created",
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2025-01-15T10:30:00.000Z",
"data": {
"response": {
"id": "response-uuid",
"survey_id": "survey-uuid",
"response_data": {
"question-id-1": "Answer 1",
"question-id-2": "Answer 2"
},
"completion_status": "completed",
"created_at": "2025-01-15T10:30:00.000Z"
},
"survey": {
"id": "survey-uuid",
"title": "Product Feedback Survey"
}
}
}Sécurité et vérification
Vérifiez toujours les signatures webhook pour vous assurer que les requêtes proviennent d'Ask Users. Chaque webhook inclut un en-tête X-Webhook-Signature avec une signature HMAC-SHA256.
Exemple de vérification (Node.js)
const crypto = require('crypto');
function verifySignature(payload, signature) {
const secret = process.env.ASKUSERS_WEBHOOK_SECRET;
const payloadString = JSON.stringify(payload);
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payloadString)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}Exemple de vérification (Python)
import hmac
import hashlib
import os
def verify_signature(payload: str, signature: str) -> bool:
secret = os.environ['ASKUSERS_WEBHOOK_SECRET']
expected_signature = hmac.new(
secret.encode('utf-8'),
payload.encode('utf-8'),
hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, expected_signature)Bonnes pratiques
1. Répondez rapidement
Retournez toujours 200 OK immédiatement, puis traitez le webhook de manière asynchrone. Gardez le temps de réponse sous 30 secondes pour éviter les timeouts.
2. Gérez les livraisons en double
Utilisez l'event_id pour dédupliquer les événements. Stockez les IDs d'événements traités pour éviter le traitement en double. C'est important car les tentatives peuvent causer la livraison du même événement plusieurs fois.
3. Utilisez HTTPS
Utilisez toujours des URLs HTTPS pour les endpoints webhook en production pour garantir la sécurité des données et prévenir les attaques man-in-the-middle.
4. Surveillez les journaux de livraison
Vérifiez vos journaux de livraison webhook dans le tableau de bord pour surveiller les taux de succès et identifier les problèmes. Les journaux montrent la requête/réponse complète pour le dépannage.
5. Implémentez une gestion appropriée des erreurs
Enveloppez votre logique de traitement webhook dans des blocs try-catch et enregistrez les erreurs. Retournez les codes de statut HTTP appropriés : 200-299 pour le succès, 4xx pour les erreurs client (qui ne seront pas réessayées), 5xx pour les erreurs serveur (qui déclencheront des tentatives).
Intégration sans code
Vous ne voulez pas écrire de code ? Utilisez les webhooks avec Zapier ou Make :
- Créez un nouveau trigger "Catch Webhook" dans Zapier ou Make
- Copiez l'URL du webhook fournie
- Créez un webhook dans Ask Users avec cette URL
- Testez-le en soumettant un formulaire ou une enquête
- Construisez votre workflow d'automatisation !
Besoin d'aide ?
Si vous avez des questions ou besoin d'assistance avec les webhooks :
- • Vérifiez les journaux de livraison dans votre tableau de bord
- • Consultez la section de dépannage ci-dessus
- • Contactez-nous à support@askusers.org