API Webhooks
Configurer des webhooks par formulaire et globaux pour les notifications de réponses en temps réel.
Les webhooks vous permettent de recevoir des notifications HTTP POST en temps réel lorsque des formulaires reçoivent de nouvelles soumissions. NueForm prend en charge deux niveaux de webhooks :
- Webhooks de formulaire -- Une URL unique par formulaire qui reçoit les soumissions pour ce formulaire spécifique.
- Webhooks globaux -- Jusqu'à 5 URL qui reçoivent les soumissions de tous vos formulaires.
Les webhooks nécessitent un abonnement Pro ou supérieur. Toute tentative d'utilisation des points d'accès webhook avec un abonnement gratuit renverra une erreur 403.
Tous les corps de requête et de réponse utilisent des noms de champs en snake_case.
Obtenir le webhook du formulaire
/api/v1/forms/:id/webhooksRécupère l'URL webhook configurée pour un formulaire spécifique.
Paramètres de chemin
idstringrequisL'identifiant du formulaire
Si aucun webhook n'est configuré, webhook_url sera null.
Réponse
{
"webhook_url": "https://example.com/hooks/nueform"
}
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"
Configurer le webhook du formulaire
/api/v1/forms/:id/webhooksDéfinit ou supprime l'URL webhook pour un formulaire spécifique. Lorsqu'une soumission est reçue, NueForm enverra un HTTP POST à cette URL avec les données de la réponse.
Paramètres de chemin
idstringrequisL'identifiant du formulaire
Corps de la requête
urlstring or nullrequisL'URL du webhook. Doit être une URL valide. Définir à null pour supprimer le webhook.
Exemple de requête
{
"url": "https://example.com/hooks/nueform"
}
Pour supprimer un webhook :
{
"url": null
}
Réponse
{
"webhook_url": "https://example.com/hooks/nueform"
}
Exemples de code
curl -X PUT "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/hooks/nueform" }'
Lister les webhooks globaux
/api/v1/webhooksRécupère tous les webhooks globaux configurés pour votre compte. Les webhooks globaux se déclenchent pour chaque soumission de formulaire dans tous vos formulaires.
Réponse
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"
Configurer les webhooks globaux
/api/v1/webhooksRemplace tous les webhooks globaux par le tableau fourni. Vous pouvez configurer jusqu'à 5 webhooks globaux. Chaque webhook peut être activé ou désactivé individuellement.
Corps de la requête
webhooksarrayrequisTableau d'objets webhook (max 5)
Exemple de requête
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://slack-webhook.example.com/nueform",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Réponse
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://slack-webhook.example.com/nueform",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Exemples de code
curl -X PUT "https://api.nueform.io/api/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhooks": [
{ "url": "https://example.com/hooks/all-forms", "enabled": true },
{ "url": "https://backup.example.com/hooks/nueform", "enabled": false }
]
}'
Obtenir le secret webhook
/api/v1/webhooks/secretRécupère votre secret de signature webhook. Si aucun secret n'existe encore, un est automatiquement généré. Le secret est une chaîne hexadécimale de 64 caractères dérivée de 32 octets aléatoires.
Utilisez ce secret pour vérifier que les requêtes webhook entrantes proviennent réellement de NueForm en validant la signature HMAC-SHA256 dans l'en-tête X-NueForm-Signature.
Vérification des signatures
Lorsque NueForm envoie un webhook, il inclut un en-tête X-NueForm-Signature contenant un condensé hexadécimal HMAC-SHA256 du corps de la requête. Vérifiez-le dans votre gestionnaire de webhook pour garantir l'authenticité.
Réponse
{
"secret": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2"
}
Exemples de vérification de signature
const crypto = require("crypto");
function verifyWebhookSignature(body, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(body)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/webhooks/secret" \
-H "Authorization: Bearer YOUR_API_KEY"
Régénérer le secret webhook
/api/v1/webhooks/secretGénère un nouveau secret de signature webhook, remplaçant l'existant. Après régénération, toutes les livraisons de webhook seront signées avec le nouveau secret.
Après régénération, mettez à jour vos récepteurs de webhook immédiatement pour utiliser le nouveau secret. Les requêtes signées avec l'ancien secret échoueront à la vérification.
Réponse
{
"secret": "f0e1d2c3b4a5968778695a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d"
}
Exemples de code
curl -X POST "https://api.nueform.io/api/v1/webhooks/secret" \
-H "Authorization: Bearer YOUR_API_KEY"
Format de la charge utile webhook
Lorsqu'un formulaire reçoit une soumission, NueForm envoie une requête POST à vos URL webhook configurées avec la charge utile suivante.
Le champ event identifie le type d'événement, et l'objet response contient les données complètes de la soumission, y compris toutes les réponses.
En-têtes
Content-Typeapplication/jsonType de contenu du corps de la requête
X-NueForm-SignaturestringCondensé hexadécimal HMAC-SHA256 du corps de la requête
X-NueForm-EventstringEvent type (e.g., response.submitted)
Exemple de charge utile
{
"event": "response.submitted",
"form_id": "665a1b2c3d4e5f6a7b8c9d0e",
"form_title": "Customer Feedback Survey",
"response": {
"id": "667a1b2c3d4e5f6a7b8c9d01",
"submitted_at": "2026-02-27T15:42:00.000Z",
"completed_at": "2026-02-27T15:45:30.000Z",
"answers": [
{
"question_id": "66a1b2c3d4e5f6a7b8c9d001",
"question_title": "What is your name?",
"value": "Jane Smith"
}
]
}
}
Réponses d'erreur
Réponses d'erreur standard renvoyées par les points d'accès webhook.
Codes d'erreur
400Bad RequestFormat d'URL invalide, maximum de 5 webhooks globaux dépassé ou champs obligatoires manquants
401UnauthorizedClé API manquante ou invalide
403ForbiddenLes webhooks nécessitent un abonnement Pro ou supérieur
404Not FoundFormulaire introuvable
500Server ErrorErreur interne du serveur
Exemple d'erreur
{
"error": "Webhooks require a Pro plan or higher"
}