Passer au contenu principal

Analytique – Vos rapports se mettent à jour automatiquement : envoyer chaque réponse Survio vers Google Sheets

Envoyez automatiquement chaque réponse complétée Survio vers un Google Sheet, puis créez un graphique ou un tableau croisé dynamique dessus. Guide détaillé étape par étape avec n8n et un workflow prêt à l’emploi à télécharger.

Écrit par Success Team Survio

À qui s’adresse ce guide ?

Cas A – usage simple, pour tous : un graphique de vos réponses qui se met à jour à chaque nouvelle réponse.

Cas B – pour les équipes comparant des groupes : un tableau croisé dynamique que vous pouvez filtrer par canal, langue ou toute autre colonne.

Chaque réponse que votre sondage collecte s’ajoute comme une nouvelle ligne dans un Google Sheet dès qu’elle est soumise. Créez un graphique ou un tableau croisé dynamique dessus une seule fois, et vos rapports restent à jour automatiquement : pas d’export, pas de copie, pas d’attente pour que quelqu’un prépare les chiffres.
​

Voici le rapport que vous obtenez dans le cas A, un graphique qui se met à jour à chaque nouvelle réponse :
​

The report tab with response counts and a column chart


​

Et voici le tableau croisé dynamique du cas B, filtré par canal avec un segment :
​

Pivot table with a slicer on the Channel column

Fonctionnement. Survio envoie chaque réponse complétée à une URL de webhook. Un outil d’automatisation (nous utilisons n8n dans ce guide) la reçoit et écrit une ligne dans votre feuille. Survio s’occupe de l’envoi, n8n de l’écriture, et la feuille réalise le reporting.

Nouveau sur les webhooks dans Survio ? Commencez par Webhooks : envoyer les réponses vers vos autres outils en temps réel, puis revenez ici.
​

Ce que vous allez construire

Les deux rapports s’alimentent via la même configuration : chaque réponse complétée devient une ligne sur un onglet nommé responses.

En un coup d’œil

Cas A : un graphique

Cas B : rapport par segment

Résultat

Un graphique illustrant la répartition des réponses, mis à jour avec chaque nouvelle réponse

Un tableau croisé dynamique filtrable par canal, langue ou toute autre colonne

Outils

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (tableau croisé dynamique et segment)

Idéal pour

Une petite entreprise qui souhaite un graphique simple toujours actualisé

Une équipe qui compare des groupes, par exemple des clients en ligne et en magasin

Avant de commencer

  • Un sondage Survio sur un plan payant. Les webhooks ne sont pas disponibles sur le plan Free, et chaque plan autorise un nombre défini de webhooks par sondage (voir l’article sur les webhooks).

  • Un compte n8n, en Cloud ou auto-hébergé.

  • Un compte Google pour Google Sheets.

Dans ce guide, nous utilisons un court questionnaire de satisfaction client : une évaluation - classement par étoiles, une question à choix « Globalement, quel est votre niveau de satisfaction ? », une question à choix « Comment avez-vous effectué votre achat cette fois ? », un commentaire libre et une question e-mail (optionnelle). Votre sondage peut être différent ; vous ferez le mapping de vos propres questions à l’étape 5.
​

Étape 1 — Préparer la feuille

  1. Créez une nouvelle feuille Google Sheets et renommez le premier onglet en responses.

  2. En ligne 1, saisissez les en-têtes de colonnes. Nous utilisons Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language et Source.

Laissez Response ID comme première colonne. Il s’agit de l’identifiant unique Survio pour chaque réponse. n8n l’utilise pour mettre à jour la ligne existante au lieu d’ajouter un doublon lors de retentatives de livraison.

Étape 2 — Créer le webhook dans n8n

  1. Dans n8n, créez un nouveau workflow et ajoutez un nœud Webhook comme déclencheur.

  2. Définissez HTTP Method sur POST.

  3. Passez sur l’onglet Production URL et copiez l’adresse.

  4. Cliquez sur Publish. L’URL de production accepte les livraisons uniquement quand le workflow est publié.

n8n Webhook node with HTTP Method POST and the Production URL tab
Published button in the n8n editor

Utilisez bien l’URL de production et non celle de test. L’URL de test n’est active que lorsque l’éditeur attend un événement test ; dès que vous le fermez, Survio n’arrive plus à livrer. Survio retente une livraison échouée pendant environ une journée et après 5 jours d’échecs, le webhook est désactivé.

Étape 3 — Connecter le sondage dans Survio

  1. Ouvrez votre sondage et allez dans Collecte des réponses.

  2. Dans la barre latérale gauche, sous Automatisations & Intégrations, sélectionnez Webhooks puis cliquez sur + Ajouter un webhook.

  3. Collez l’URL de production n8n dans URL du webhook et cliquez sur Sauvegarder le webhook. Le webhook s’active immédiatement.

Add a webhook dialog in Survio with the n8n Production URL filled in
Saved webhook in Survio, switched on


​

Étape 4 — Envoyer une réponse test et trouver les id de questions

  1. Ouvrez votre sondage par son lien habituel et soumettez une réponse complète. Survio n’envoie que les réponses finalisées donc allez jusqu’au bout.

  2. Dans n8n, ouvrez l’onglet Executions. La livraison arrive en quelques secondes.

  3. Ouvrez l’exécution puis cliquez sur le nœud Webhook. Déroulez body, puis data, puis answers. Chaque réponse indique son question.id, le label de la question et la answer.

  4. Notez l’id de chaque question que vous souhaitez comme colonne. Vous pouvez aussi cliquer sur Pin pour continuer à travailler dessus sans refaire de soumission.

Executions tab in n8n with successful runs
Webhook node output in n8n: body, data, answers

Sélectionnez toujours les réponses par l’id de question. Les réponses arrivent sous forme de liste. Si vous ajoutez une question plus tard, les positions bougent et les colonnes risqueraient d’être mal remplies. Les ids de question, eux, ne changent jamais.

Vous cherchez l’e-mail du répondant ? N’utilisez pas data.email : il reste vide si l’e-mail provient d’une question ou d’un paramètre URL. Lisez-le depuis la réponse à la question e-mail ou depuis data.parameters.

Étape 5 — Transformer chaque réponse en ligne

Utilisez deux nœuds : Préparer la ligne extrait les réponses et Sauvegarder la réponse dans la feuille les écrit dans votre feuille.

Préparer la ligne

  1. Ajoutez un nœud Edit Fields (Set) après le nœud Webhook et renommez-le Prepare row.

  2. Dans Fields to Set, ajoutez un champ pour chaque colonne de votre feuille, gardez le type String. Le nom du champ doit correspondre exactement à l’en-tête de colonne ; la valeur est l’expression ci-dessous.

  3. Remplacez les ids de questions par ceux notés à l’étape 4, et Europe/Prague par votre fuseau horaire.

Nom du champ

Valeur

Response ID

{{ $json.body.data.responseId }}

Submitted

{{ DateTime.fromISO($json.body.data.submitted).setZone('Europe/Prague').toFormat('yyyy-MM-dd HH:mm') }}

Rating (1-5)

{{ $json.body.data.answers.find(a => a.question.id === 90403153)?.answer ?? "" }}

Satisfaction

{{ $json.body.data.answers.find(a => a.question.id === 90403151)?.answer?.labels?.[0] ?? "" }}

Channel

{{ $json.body.data.answers.find(a => a.question.id === 90403154)?.answer?.labels?.[0] ?? "" }}

What could we do better

{{ $json.body.data.answers.find(a => a.question.id === 90403152)?.answer ?? "" }}

E-mail

{{ $json.body.data.answers.find(a => a.question.id === 90403187)?.answer || $json.body.data.parameters?.email || "" }}

Order ID

{{ $json.body.data.parameters?.['order-id'] ?? '' }}

Language

{{ $json.body.data.langCode }}

Source

{{ $json.body.data.source }}

Prepare row node in n8n with Fields to Set and their expressions


​

Sauvegarder la réponse dans la feuille

  1. Ajoutez un nœud Google Sheets après Préparer la ligne, renommez-le Sauvegarder la réponse dans la feuille et choisissez l’opération Append or Update Row.

  2. Connectez votre compte Google, puis sélectionnez votre tableur sous Document (dans la liste ou en collant son ID avec By ID) et l’onglet responses sous Sheet.

  3. Réglez Mapping Column Mode sur Map Automatically et Column to match on sur Response ID.

Google Sheets node: Append or Update Row, Map Automatically, Column to match on Response ID

Pourquoi une étape Préparer la ligne ? Lorsque vous changez de tableur ou d’onglet dans le nœud Google Sheets, n8n efface le mapping des colonnes ; les expressions dans Préparer la ligne assurent que rien n’est perdu et Google Sheets ne fait que relier le nom du champ à la colonne correspondante.

Cliquez de nouveau sur Publish. Toute modification réalisée après la publication doit être republiée pour être prise en compte.

n8n workflow: Survio Webhook, Prepare row, Save response to sheet

Quelques précisions sur les expressions :

  • Les questions à choix arrivent comme { ids, labels, value }. labels[0] est le texte de l’option choisie. Pour une question à choix multiples, labels.join(', ') met toutes les réponses dans une cellule. value correspond à l’option « Autre » si elle est renseignée.

  • Les dates sont transmises en UTC. L’expression dans la colonne Submitted les convertit pour votre fuseau horaire, ce qui rend leur tri et regroupement possible dans Google Sheets.

  • Les paramètres d’URL avec un tiret dans le nom, comme order-id, nécessitent la notation crochets parameters['order-id']. Survio n’autorise pas les underscores dans les noms de paramètres.

  • Le titre du sondage n’est pas présent dans les données envoyées par Survio. Si plusieurs sondages écrivent dans une même feuille, ajoutez une colonne Sondage dans la feuille et un champ Sondage dans Préparer la ligne avec le nom du sondage.

Envoyez une autre réponse test. Une nouvelle ligne apparaît dans la feuille dans la seconde.

The responses tab in Google Sheets with one row per response


​

Cas A — Afficher les réponses par un graphique

  1. Ajoutez un onglet nommé report.

  2. Tapez Satisfaction en A1 et Responses en B1. De A2 à A6, consignez les options exactement comme dans votre questionnaire.

  3. En B2, entrez =COUNTIF(responses!D:D,A2) puis étirez jusqu’à B6.

  4. Sélectionnez A1:B6 et via le menu choisissez Insertion → Graphique. Google Sheets propose un graphique en colonnes. Pour changer son titre, ouvrez Personnaliser → Titres du graphique et des axes.

À chaque nouvelle réponse dans responses, le décompte et le graphique sont mis à jour automatiquement, comme celui au début de l’article.
​

Cas B — Comparer les groupes avec un tableau croisé dynamique

  1. Sur l’onglet responses, sélectionnez le tableau puis Insertion → Tableau croisé dynamique, puis Nouvelle feuille.

  2. Sous Lignes, ajoutez Satisfaction. Sous Valeurs, ajoutez Response ID puis modifiez Résumer par de SOMME à NBVAL.

  3. Passez à Données → Ajouter un segment et choisissez la colonne Channel. Sélectionnez les valeurs souhaitées et confirmez avec OK. Le résultat ressemble au tableau croisé dynamique montré plus haut.

Vous pouvez segmenter par n’importe quelle colonne : Channel (votre propre question), Language (version linguistique du sondage), Source (mode d’arrivée — ex. lien direct ou invitation par e-mail) ou Order ID.

Un segment ne conserve pas la sélection à la prochaine ouverture. À la réouverture du fichier, toutes les valeurs s’affichent. Pour enregistrer une sélection, définissez-la par défaut dans le menu du segment.

Télécharger le workflow prêt à l’emploi

Plutôt que de réaliser les étapes 2 et 5 à la main, commencez avec notre workflow clés en main. Téléchargez survio-responses-to-google-sheets.json en pièce jointe en fin d’article, puis :

  1. Dans n8n, créez un workflow vide. Ouvrez le menu (trois points) à côté du nom du workflow puis choisissez Import, puis From file. Sélectionnez le fichier téléchargé.

  2. Ouvrez Prepare row et remplacez les ids de questions et le fuseau horaire adéquats.

  3. Ouvrez Sauvegarder la réponse dans la feuille. L’avertissement rouge disparaîtra une fois configuré. Connectez votre compte Google, sélectionnez votre tableur et l’onglet responses. n8n passe le Mapping Column Mode sur Map Each Column Manually : repassez-le sur Map Automatically et mettez Column to match on sur Response ID.

  4. Ouvrez Survio Webhook, copiez l’URL de production dans Survio (étape 3) et cliquez sur Publish.

n8n workflow menu with Import and From file
Imported workflow: Survio Webhook, Prepare row, Save response to sheet

Tester de bout en bout

  1. Soumettez une réponse via le lien du sondage. Une ligne apparaît sur l’onglet responses en quelques secondes.

  2. Vérifiez que Response ID est rempli. C’est ce qui empêche les doublons.

  3. Regardez l’onglet Executions dans n8n; chaque livraison y est listée.

Dépannage

Symptôme

Cause

Solution

Rien n’arrive dans n8n

URL de test renseignée sur Survio ou workflow non publié

Collez l’URL de production dans Survio et cliquez sur Publish

Survio ne peut pas enregistrer l’URL du webhook venant de n8n auto-hébergé

n8n affiche une adresse interne au lieu de l’adresse publique

Mettez le paramètre WEBHOOK_URL de n8n sur votre adresse https publique puis copiez l’URL à nouveau

« Listen for test event » n’affiche rien même si le sondage a été soumis

Survio envoie à l’URL de production ; le test écoute l’URL de test

Regardez dans l’onglet Executions

Votre dernier changement n’a pas d’effet

Le workflow est publié mais la modification pas encore (le bouton Publish montre un point)

Cliquez sur Publish à nouveau

Une réponse apparaît deux fois

Opération réglée sur Append Row ou pas de colonne de correspondance

Utilisez Append or Update Row et faites la correspondance sur Response ID

Une colonne reste vide et une nouvelle colonne apparaît à la fin

Le nom du champ dans Préparer la ligne ne correspond pas à l’en-tête colonne

Corrigez le nom dans Préparer la ligne, puis retirez la colonne supplémentaire

Une cellule affiche [object Object]

Réponse à choix mappée sans labels

Utilisez ?.answer?.labels?.[0]

Les colonnes affichent de mauvaises réponses après modification du sondage

Réponses mappées selon la position dans la liste

Sélectionnez-les toujours via question.id

Colonne E-mail vide

Champ mappé sur data.email

Récupérez l’e-mail depuis la réponse à la question e-mail ou depuis un paramètre URL

Les réponses déjà soumises avant la configuration n’apparaissent pas

Les webhooks n’envoient que les réponses reçues après leur création

Exportez les réponses précédentes depuis Survio et copiez-les dans la feuille

Le webhook Survio est désactivé

L’URL du webhook échoue 5 jours consécutifs

Corrigez la cause puis réactivez le webhook dans Survio

À savoir

  • Survio envoie uniquement les réponses complètes, un message par réponse, en quelques secondes.

  • Aucune donnée n’est envoyée rétroactivement : ni les réponses d’avant la création du webhook ni celles réalisées pendant une pause.

  • Une livraison échouée est retentée jusqu’à 8 fois sur près de 27h, chaque tentative durant jusqu’à 30 secondes. Faire la correspondance sur Response ID empêche les doublons lors de retentatives.

  • En cas d’échec 5 jours durant, Survio désactive le webhook ; vous devrez le réactiver après correction.

  • Mettre un webhook en pause garde sa place ; le supprimer est définitif.

  • Survio ne conserve pas d’historique de livraison dans l’application. L’onglet Executions de n8n fait office de journal.

  • Envoyer des réponses via webhook n’utilise aucune réponse en plus de votre forfait Survio.

Vous souhaitez une configuration experte ? Depuis la page Webhooks de Survio, cliquez sur Obtenir une configuration experte, expliquez-nous vos attentes et notre équipe s’occupe de tout : configuration, test et remise d’un webhook fonctionnel.

Avez-vous trouvé la réponse à votre question ?