Naar de hoofdinhoud

Analytics – Je rapporten altijd up-to-date: stuur elke Survio-respons automatisch naar Google Sheets

Stuur elke voltooide Survio-respons direct naar een Google Sheet en maak daar eenvoudig een live grafiek of draaitabel van je resultaten. Volg het stappenplan met n8n en gebruik onze kant-en-klare workflow om direct te starten.

Geschreven door Success Team Survio

Wat is jouw situatie?

Situatie A – makkelijk en voor iedereen: één grafiek van je antwoorden die automatisch ververst na elke nieuwe respons.

Situatie B – voor teams die groepen vergelijken: een draaitabel die je kunt filteren op kanaal, taal of elke andere kolom.

Elke respons die je enquête ophaalt, verschijnt direct als een nieuwe rij in een Google Sheet zodra deze is ingestuurd. Je maakt éénmalig een grafiek of draaitabel en je rapport is altijd up-to-date: geen gedoe meer met exports, kopiëren of wachten tot iemand de cijfers bijwerkt.
​

Dit is het rapport bij situatie A: een grafiek die automatisch wordt bijgewerkt bij elke nieuwe respons:
​

The report tab with response counts and a column chart


​

En hier zie je de draaitabel uit situatie B, gefilterd op kanaal met een slicer:
​

Pivot table with a slicer on the Channel column

Zo werkt het. Survio stuurt elke voltooide respons naar jouw webhook-URL. Een automatiseringstool (in deze handleiding gebruiken we n8n) vangt het op en schrijft één rij in je sheet. Survio verstuurt de data, n8n schrijft het weg en de sheet maakt automatisch je rapport.

Nieuw met webhooks in Survio? Start met Webhooks: stuur responsen realtime naar je andere tools en kom daarna hier terug.
​

Dit ga je maken

Beide rapporten werken volgens dezelfde aanpak: elke voltooide respons wordt één rij op het tabblad responses.

Kort overzicht

Situatie A: één grafiek

Situatie B: verslag per segment

Resultaat

Een grafiek van de verdeling van antwoorden, automatisch bijgewerkt na elke nieuwe respons

Een draaitabel die je kunt filteren op kanaal, taal of een andere kolom

Tools

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (met draaitabel en slicer)

Ideaal voor

Een kleine organisatie die één duidelijke en actuele grafiek wil

Een team dat groepen wil vergelijken, bijvoorbeeld online versus klanten in de winkel

Voordat je begint

  • Een Survio-enquête met een betaald abonnement. Webhooks zijn niet beschikbaar in het Free-abonnement en per abonnement geldt een limiet op het aantal webhooks per enquête (zie het webhooks-artikel).

  • Een n8n-account, n8n Cloud of zelf-hosted.

  • Een Google-account voor Google Sheets.

We laten dit stappenplan zien aan de hand van een korte klanttevredenheidsenquête: een sterbeoordeling, een keuzevraag "Hoe tevreden ben je in het algemeen?", een keuzevraag "Hoe heb je deze keer bij ons gewinkeld?", een open veld voor feedback en eventueel een e-mailvraag. Jouw enquête mag anders zijn; je koppelt in stap 5 je eigen vragen.

Stap 1 — Bereid je sheet voor

  1. Maak een nieuw Google Sheet aan en hernoem het eerste tabblad naar responses.

  2. Typ in rij 1 de kolomkoppen. Wij gebruiken Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language en Source.

Laat Response ID als eerste kolom staan. Dit is het unieke Survio-id voor elke respons. n8n gebruikt het om de bestaande rij bij te werken in plaats van een duplicaat toe te voegen als een aflevering opnieuw wordt geprobeerd.

Stap 2 — Maak de webhook aan in n8n

  1. Maak in n8n een nieuwe workflow aan en voeg een Webhook-node toe als trigger.

  2. Zet HTTP Method op POST.

  3. Ga naar het Production URL-tabblad en kopieer het adres.

  4. Klik op Publiceren. Leveringen komen pas binnen nadat de workflow is gepubliceerd.

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

Gebruik altijd de Production URL, niet de Test URL. De Test URL luistert alleen zolang de editor een test event verwacht, dus Survio's leveringen mislukken zodra je het sluit. Survio probeert een mislukte aflevering ongeveer een dag opnieuw te sturen, en na 5 dagen schakelt Survio de webhook uit.

Stap 3 — Koppel de enquête in Survio

  1. Open je enquête en ga naar Antwoorden verzamelen.

  2. Klik in de linkerbalk onder Automatiseringen & integraties op Webhooks en klik op + Webhook toevoegen.

  3. Plak de n8n Production URL bij Webhook-URL en klik op Webhook opslaan. De webhook wordt direct geactiveerd.

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


​

Stap 4 — Stuur een testrapport in en zoek je vraag-ids

  1. Open je enquête via de gewone link en vul alle vragen in tot het eind. Survio stuurt alleen voltooide responsen, dus zorg dat je doorloopt tot de laatste pagina.

  2. Ga in n8n naar het tabblad Uitvoeringen. De aflevering verschijnt normaal gesproken in enkele seconden.

  3. Open de uitvoering en klik op de Webhook-node. Klap body uit, daarna data en answers. Per antwoord zie je zijn question.id, het label en het antwoord.

  4. Noteer het id van elke vraag die je als kolom wilt. Je kunt ook Pin aanklikken om direct door te gaan met bouwen zonder opnieuw de enquête in te vullen.

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

Kies altijd antwoorden op vraag-id. Antwoorden komen als lijst. Voeg je later een vraag toe in de enquête, dan verschuift de volgorde en zouden kolommen anders stilletjes verkeerde antwoorden krijgen. Vraag-ids veranderen nooit.

Wil je het e-mailadres van de respondent? Gebruik niet data.email: dat blijft leeg als het e-mailadres via een e-mailvraag of URL-parameter komt. Haal het uit het antwoord op je e-mailvraag of uit data.parameters.

Stap 5 — Zet elke respons om in een rij

Dit gebeurt via twee nodes: Rij voorbereiden haalt de antwoorden op, Respons opslaan in sheet schrijft ze naar je sheet.

Rij voorbereiden

  1. Voeg na de Webhook-node een Velden bewerken (Set)-node toe en hernoem die naar Rij voorbereiden.

  2. Voeg bij Velden om in te stellen één veld per kolom toe, allemaal van type String. De naam moet exact overeenkomen met de kolomkop; bij waarde vul je de onderstaande expressie in.

  3. Vervang de vraag-ids (90403153, enz.) door de jouwe, en Europe/Prague door jouw tijdzone.

Veldnaam

Waarde

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


​

Respons opslaan in sheet

  1. Voeg na Rij voorbereiden een Google Sheets-node toe, geef deze de naam Respons opslaan in sheet en kies de actie Rij bijvoegen of bijwerken.

  2. Koppel je Google-account, selecteer je spreadsheet bij Document (uit de lijst of plak het ID) en het tabblad responses bij Sheet.

  3. Zet Mapping Column Mode op Map automatisch en Kolom om op te matchen op Response ID.

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

Waarom een aparte Rij voorbereiden-stap? Als je een ander spreadsheet of tabblad kiest in de Google Sheets-node, wist n8n de kolommapping. Met de expressies in Rij voorbereiden blijft alles behouden: de Google Sheets-node matcht alleen veldnamen met kolomkoppen.

Klik opnieuw op Publiceren. Wijzigingen die je na publicatie maakt, worden pas actief na opnieuw publiceren.

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

Wat achtergrondinformatie bij de expressies:

  • Keuzevragen komen als { ids, labels, value }. labels[0] is de tekst van de gekozen optie. Bij meerkeuzevragen gebruik je labels.join(', ') om alles in één cel te plaatsen. value bevat de tekst die bij "Anders" wordt opgegeven.

  • Tijden komen binnen als UTC. De Submitted-expressie zet ze om naar jouw tijdzone en Google Sheets beschouwt de kolom als datum/tijd waarmee je kunt sorteren en groeperen.

  • URL-parameters met een streepje zoals order-id gebruik je als parameters['order-id']. Survio accepteert geen underscores in parameternamen.

  • De naam van de enquête wordt niet naar je data gestuurd. Laat je meerdere enquêtes naar één sheet schrijven, voeg dan een enquêtekolom toe aan je sheet en een enquêteveld met de naam in Rij voorbereiden.

Stuur opnieuw een respons in. Binnen enkele seconden zie je een nieuwe rij in je sheet.

The responses tab in Google Sheets with one row per response


​

Situatie A — Maak een grafiek van de antwoorden

  1. Voeg een tabblad toe met de naam report.

  2. Typ Satisfaction in A1 en Responses in B1. Zet in A2 t/m A6 de antwoordopties precies zoals in je enquête.

  3. Typ in B2 =COUNTIF(responses!D:D,A2) en kopieer deze cel naar beneden tot B6.

  4. Selecteer A1:B6 en kies Invoegen → Grafiek. Google Sheets stelt een kolomdiagram voor. Om de titel aan te passen, ga je naar Aanpassen → Grafiek- & as-titels.

Elke nieuwe respons voegt een rij toe aan responses en de aantallen plus grafiek worden vanzelf bijgewerkt, precies zoals bovenaan deze pagina.
​

Situatie B — Vergelijk groepen met een draaitabel

  1. Selecteer de gegevens op het tabblad responses en kies Invoegen → Draaitabel, daarna Nieuwe sheet.

  2. Voeg onder Rijen de kolom Satisfaction toe. Kies onder Waarden Response ID en wijzig Samenvatten op van SOM naar AANTALLEN.

  3. Kies Gegevens → Slicer toevoegen en selecteer de kolom Channel. Selecteer de gewenste waarden en bevestig met OK. Het resultaat toont de draaitabel zoals bovenaan deze pagina.

Je kunt op elke kolom slicen: Channel (je eigen vraag), Language (de taalversie van de enquête die de respondent invulde), Source (hoe de respons binnenkwam, bijvoorbeeld via een directe link of e-mailuitnodiging) of Order ID.

Een selectie in de slicer wordt niet onthouden bij het volgende openen. Als je het bestand opnieuw opent, staan alle waarden aangevinkt. Wil je een selectie als standaard bewaren, doe dit vanuit het slicermenu.

Gebruik de kant-en-klare workflow

In plaats van stap 2 en 5 handmatig bouwen, kun je direct onze workflow downloaden. Download het bestand survio-responses-to-google-sheets.json via de bijlage onderaan dit artikel en doe het volgende:

  1. Maak in n8n een lege workflow aan. Open het menu naast de workflownaam (drie puntjes) en kies Importeren, dan Uit bestand. Selecteer het gedownloade bestand.

  2. Open Rij voorbereiden en vervang de vraag-ids en Europe/Prague door je eigen gegevens.

  3. Open Respons opslaan in sheet. Zie je een rood waarschuwingsicoon? Koppel je Google-account en kies het juiste spreadsheet en het responses-tabblad. n8n wisselt Mapping Column Mode naar handmatig; zet deze terug naar Map automatisch en selecteer Response ID als kolom om op te matchen.

  4. Open Survio Webhook, kopieer de Production URL in Survio (zie stap 3) en klik op Publiceren.

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

Test het end-to-end

  1. Vul een respons in via de enquêtelink. Binnen enkele seconden verschijnt er een nieuwe rij op het responses-tabblad.

  2. Controleer of Response ID is ingevuld. Zo voorkom je dubbele rijen.

  3. Bekijk het tabblad Uitvoeringen in n8n. Daar zie je elke aflevering en de bijbehorende data.

Probleemoplossing

Symptoom

Oorzaak

Oplossing

Er komt niets aan in n8n

De Test URL staat in Survio of de workflow is niet gepubliceerd

Kopieer de Production URL naar Survio en klik op Publiceren

Survio accepteert de webhook-URL van je eigen n8n niet

n8n toont een intern adres in plaats van het publieke adres

Stel de instelling WEBHOOK_URL in n8n in op je publieke https-adres en kopieer de url opnieuw

"Luisteren naar test event" toont niets na het insturen van de enquête

Survio stuurt naar de Production URL, je luistert op de Test URL

Controleer het tabblad Uitvoeringen

Je laatste wijziging heeft geen effect

De workflow is gepubliceerd, maar de wijziging niet (de knop Publiceren heeft een punt)

Klik opnieuw op Publiceren

Dezelfde respons verschijnt twee keer

Actie staat op Rij toevoegen of kolom om op te matchen ontbreekt

Gebruik 'Rij bijvoegen of bijwerken' en match op Response ID

Een kolom blijft leeg en er verschijnt een extra kolom achteraan

Veldnaam in Rij voorbereiden overeenkomt niet exact met de kolomnaam

Hernoem het veld in Rij voorbereiden zodat het gelijk is aan de kolomnaam en verwijder de extra kolom

Een cel toont [object Object]

Keuzeantwoord gemapped zonder labels

Gebruik ?.answer?.labels?.[0]

Kolommen vullen met verkeerde antwoorden na wijzigen van enquête

Antwoorden gekozen op positie in de lijst

Koppel altijd op question.id

De kolom E-mail blijft leeg

Gekoppeld op data.email

Lees het e-mailadres uit de e-mailvraag of URL-parameter

Responsen vóór het instellen ontbreken

Webhooks sturen alleen responsen die na het instellen binnenkomen

Exporteer oude responsen éénmalig uit Survio en plak ze in je sheet

Survio schakelt de webhook uit

De webhook-URL is 5 dagen onafgebroken mislukt

Los het probleem op, zet daarna de webhook weer aan in Survio

Handig om te weten

  • Survio stuurt alleen voltooide responsen, één bericht per respons, binnen enkele seconden.

  • Er wordt niets achteraf verzonden: geen responsen van voor het instellen van de webhook, geen responsen ingestuurd tijdens een pauze.

  • Een mislukte aflevering wordt maximaal 8 keer opnieuw aangeboden, binnen ongeveer 27 uur, met maximaal 30 seconden wachttijd per poging. Omdat je matcht op Response ID blijven herhaalde afleveringen onschadelijk.

  • Als afleveringen 5 dagen achter elkaar mislukken, schakelt Survio de webhook uit en moet je hem zelf weer aanzetten.

  • Een webhook pauzeren behoudt de plek; verwijderen is definitief.

  • Survio houdt geen aflevergeschiedenis bij in de app. Het tabblad Uitvoeringen in n8n is jouw logboek.

  • Responsen die via webhooks worden verzonden, kosten geen extra responsen van je abonnement.

Laat je het liever door ons instellen? Klik op de Webhooks-pagina in Survio op Expert setup aanvragen, beschrijf wat je wilt laten gebeuren en ons team bouwt, test en levert een werkende webhook.

Was dit een antwoord op uw vraag?