Aller au contenu

Envoyer les réponses vers votre endpoint par webhook

Envoyez chaque réponse reçue par une campagne, signée, vers une adresse HTTPS à vous, ou n’importe quelle charge utile depuis une étape de workflow. En quoi le connecteur Webhooks diffère de Paramètres → API → Webhooks.

Équipe Polzy7 min de lectureMis à jour le 31 oct. 2026À partir de Business
Sur cette page
  1. 1De quel webhook avez-vous besoin ?
  2. 2Avant de commencer
  3. 3Connecter le connecteur Webhooks
  4. 4Donner son endpoint à une campagne
  5. 5Ce que reçoit votre endpoint
  6. 6Vérifier la signature
  7. 7Envoyer un webhook depuis un workflow
  8. 8Vérifier que tout fonctionne
  9. 9Dépannage
  10. 10Bon à savoir

Le connecteur Webhooks envoie chaque réponse reçue par une campagne vers une adresse de votre propre serveur, sous forme de POST signé, quelques instants après qu’elle a été donnée. Un workflow peut aussi l’utiliser, pour envoyer tout ce que l’exécution connaît. À la fin de ce guide, vous aurez un endpoint qui reçoit les réponses, et le moyen de vérifier que chaque requête vient bien de Polzy.

Le connecteur Webhooks est inclus dans l’offre Business. Seul un Administrateur peut le connecter et choisir où vont les réponses d’une campagne.

De quel webhook avez-vous besoin ?

Polzy peut appeler votre serveur de trois façons :

Connecteur Webhooks (cet article)Paramètres → API → WebhooksÉtape Webhook sortant
Ce qui est envoyéChaque réponse d’une campagne, ou la charge utile d’une étape de workflowDes événements de l’espace de travail : une réponse créée, une campagne terminée, une action créée ou terminéeCe que dit l’étape du workflow
Où le réglerIntégrations, puis l’onglet Intégrations d’une campagne ou une étape de workflowParamètres → API → WebhooksUn workflow
OffreBusinessÉquipeÉquipe
SignéX-Polzy-Signature, sur le corpsX-Polzy-Signature, sur l’horodatage et le corpsNon
En cas d’échecTrois tentatives au totalSix tentatives sur environ une demi-heure, avec un journal de chaque essaiLa règle d’erreur de l’étape décide

Pour les événements de tout l’espace de travail, voir Envoyer et recevoir des webhooks.

Avant de commencer

Il vous faut :

  • Un espace de travail sur l’offre Business, avec le rôle Administrateur.
  • Intégrations activé pour l’espace de travail, dans Paramètres → Général → Ce que fait cet espace de travail.
  • Un endpoint sur internet, en HTTPS, qui accepte un POST avec un corps JSON et répond par un statut 2xx en moins de 10 secondes. Polzy refuse les adresses http:// et celles d’un réseau privé.

Connecter le connecteur Webhooks

La connexion conserve ce que partagent toutes les requêtes : le secret de signature, et d’éventuels en-têtes.

  1. Dans la barre latérale, sous Automatiser, ouvrez Intégrations et choisissez l’onglet Disponibles.
  2. Trouvez Webhooks et choisissez Connecter.
  3. Dans Secret de signature, saisissez une longue valeur aléatoire et gardez-en une copie pour votre serveur.
  4. Sous En-têtes HTTP, ajoutez les en-têtes à envoyer, comme Authorization. Leurs valeurs sont stockées chiffrées. Voir Bon à savoir pour savoir où ils vont.
  5. Choisissez Connecter. Le test répond Connected. Each survey and step names the endpoint it posts to.
Connecter le connecteur Webhooks : le secret de signature et d’éventuels en-têtes.

Laissé vide, le secret de signature est créé pour vous — mais il n’est jamais affiché, et vous ne pourriez pas vérifier les signatures avec. Saisissez le vôtre. Pour le changer plus tard, choisissez Configurer et tapez le nouveau par-dessus la valeur enregistrée.

Donner son endpoint à une campagne

  1. Ouvrez Campagnes, puis la campagne et son onglet Intégrations.
  2. Sous Ajouter une connexion, trouvez Webhooks et choisissez Connecter. Si le bouton indique Configurer, le connecteur n’est pas encore connecté à l’espace de travail.
  3. Dans Destination, saisissez l’adresse à laquelle les réponses de cette campagne sont envoyées.
  4. Choisissez Enregistrer les modifications.
La destination d’une campagne : l’endpoint auquel ses réponses sont envoyées.

Webhooks apparaît alors sous Connecté à cette campagne, avec Envoie vers et l’adresse, son interrupteur, Modifier la configuration, Déconnecter, et le nombre de réponses envoyées et en échec. Chaque campagne peut envoyer vers son propre endpoint.

L’onglet Intégrations d’une campagne : où part chaque réponse, et ce que vous pouvez ajouter.

Ce que reçoit votre endpoint

Chaque réponse est un POST avec ces en-têtes :

En-têteContenu
Content-Typeapplication/json
X-Polzy-Eventresponse.submitted pour une réponse de campagne ; le Nom de l'événement de l’étape depuis un workflow.
X-Polzy-SignatureLe HMAC-SHA256 du corps brut de la requête, calculé avec le secret de signature, en hexadécimal.
X-Polzy-TimestampLe timestamp du corps.
Idempotency-KeyDepuis une étape de workflow uniquement : identique lors d’une répétition de la même étape, pour que vous puissiez l’ignorer.

Et ce corps JSON :

ChampContenu
eventresponse.submitted.
timestampLe moment où la requête a été envoyée. Pour une réponse anonyme, le jour où elle a été donnée.
survey.id, survey.titleL’identifiant et le titre de l’enquête.
response.idL’identifiant de la réponse dans Polzy. Vide pour une réponse anonyme.
response.submittedAtLe moment où la réponse a été terminée. Pour une réponse anonyme, le jour seulement.
response.answersUn élément par question répondue, chacun avec questionId, questionText et value.
response.scoreLe score global, s’il était calculé au moment de l’envoi de la requête.

Une réponse anonyme contient ce qu’elle dit, son score et son jour, et rien qui permette d’identifier ou de dater son auteur. Polzy attend la lecture de sécurité de chaque réponse, jusqu’à 10 minutes, avant de l’envoyer ; une réponse retenue pour examen de sécurité arrive sous forme de texte de remplacement. La taille minimale des groupes ne retient pas les réponses individuelles.

Vérifier la signature

  1. Lisez le corps de la requête exactement tel qu’il est arrivé, avant de l’analyser.
  2. Calculez son HMAC-SHA256 avec votre secret de signature, en hexadécimal.
  3. Comparez-le à X-Polzy-Signature, avec une comparaison à temps constant. S’ils diffèrent, refusez la requête.

L’horodatage fait partie du corps : un horodatage modifié invalide donc aussi la signature.

Envoyer un webhook depuis un workflow

  1. Ouvrez Workflows et le workflow, ou créez-en un.
  2. Sous Connecteurs dans Étapes installées, faites glisser Envoyer un webhook · Webhooks sur le canevas.
  3. Dans Point de terminaison, saisissez l’adresse vers laquelle cette étape envoie.
  4. Sous Nom de l'événement, gardez workflow.step ou nommez l’événement qu’attend votre serveur. Il est envoyé dans X-Polzy-Event.
  5. Laissez Charge utile vide pour envoyer tout ce que l’exécution connaît, ou écrivez le JSON voulu, avec {{ pour insérer des valeurs de l’exécution.
  6. Choisissez Envoyer un test pour envoyer une requête remplie à partir d’une réponse d’exemple.
L’étape Envoyer un webhook : l’endpoint, le nom de l’événement et la charge utile.

L’étape est signée avec le secret de la connexion et transmet la réponse de votre serveur sous la forme {{connector.statusCode}} et {{connector.response}}.

Vérifier que tout fonctionne

Dans l’onglet Intégrations de la campagne, la ligne d’activité compte les réponses envoyées et celles qui ont échoué. La page du connecteur liste chaque envoi dans Activité, avec Réussi ou Échec et la raison.

La page du connecteur : son état, les sept derniers jours et chaque envoi.

Dépannage

Dans Activité, un envoi en échec indique Webhook failed: suivi de la raison ; l’exécution d’un workflow affiche la même raison sans ce préfixe.

  • Webhook failed: only https endpoints are allowed. L’endpoint doit commencer par https://.
  • Webhook failed: private addresses are not allowed. L’adresse pointe vers un réseau privé, comme localhost ou 10.0.0.5. Utilisez une adresse accessible depuis internet.
  • Webhook failed: that host could not be found. Le nom dans l’adresse n’existe pas. Vérifiez son orthographe.
  • Webhook failed: suivi d’un statut, comme 500, ou timeout of 10000ms exceeded. Votre endpoint a répondu par une erreur, ou a mis plus de 10 secondes. Toute réponse autre que 2xx compte comme un échec, et l’envoi est tenté trois fois au total.
  • No endpoint for this survey. Set one on its Integrations tab. La campagne n’a pas d’endpoint. Ajoutez-en un avec Modifier la configuration dans l’onglet Intégrations de la campagne.
  • La signature ne correspond pas. Calculez-la sur le corps brut, avant toute analyse, avec le secret que vous avez saisi. Si le secret a été créé pour vous, saisissez le vôtre.
  • Votre en-tête n’arrive pas. Voir ci-dessous : les en-têtes ne partent que vers un hôte auquel la connexion elle-même envoie.

Les réponses reçues avant l’enregistrement de l’endpoint, ou pendant que l’interrupteur était coupé, ne sont pas envoyées plus tard. Exportez-les plutôt depuis l’onglet Réponses de l’enquête.

Bon à savoir

  • Où vont les en-têtes HTTP ? Seulement vers un hôte auquel la connexion elle-même envoie. Un endpoint qu’une campagne ou une étape choisit sur un autre hôte est appelé sans eux : une valeur Authorization enregistrée n’atteint jamais une adresse à laquelle elle n’était pas destinée. Comptez sur la signature pour distinguer les requêtes de Polzy de toutes les autres.
  • Les réponses inachevées sont-elles envoyées ? Non. Seules les réponses terminées le sont, une fois chacune.
  • Mon endpoint peut-il répondre avec des données ? Pour une étape de workflow, oui : la réponse est conservée sous la forme {{connector.response}} pour les étapes suivantes. Pour les réponses d’une campagne, seul son statut compte.
Cet article vous a-t-il aidé ?
Toujours bloqué ?

Les membres connectés peuvent demander à Polzy ou écrire à l’équipe depuis Support. Notre délai de réponse dépend de votre forfait.