Spring videre til hovedindholdet

Analyser – Dine rapporter opdateres automatisk: send hvert Survio-svar til Google Sheets

Få hvert indsendt Survio-svar sendt direkte til et Google Sheet, hvor du nemt kan lave et opdateret diagram eller en pivottabel. Trin-for-trin guide med n8n og en færdig workflow-fil, du kan hente.

Skrevet af Success Team Survio

Hvilken situation passer til dig?

Situation A – simpelt, for alle: ét diagram over dine svar, som opdateres med hvert nyt svar.

Situation B – til teams, der sammenligner grupper: en pivottabel, du kan filtrere efter kanal, sprog eller en hvilken som helst anden kolonne.

Hvert svar, din undersøgelse får, ryger straks ind som en ny række i et Google Sheet, så snart det er indsendt. Du sætter bare diagrammet eller pivottabellen op én gang, så holder rapporten sig selv opdateret: ingen eksporter, ingen manuel kopiering, ingen ventetid på at få tallene klar.
​

Her ser du den rapport, du får i situation A – et diagram, der automatisk opdateres for hvert nyt svar:
​

The report tab with response counts and a column chart


​

Og her er pivottabellen i situation B, filtreret med en slicer for kanal:
​

Pivot table with a slicer on the Channel column

Sådan fungerer det. Survio sender hvert fuldført svar til en webhook-URL. Et automatiseringsværktøj (vi bruger n8n i denne vejledning) tager imod det og skriver det som en række i arket. Survio sender, n8n skriver, og Google-arket klarer resten med rapporteringen.

Er du helt ny til webhooks i Survio? Start med Webhooks: send svar til dine andre værktøjer i realtid, og kom tilbage hertil bagefter.
​

Det bygger du

Begge rapporter kommer fra samme setup: hvert fuldført svar bliver til en række på fanebladet responses.

Overblik

Situation A: ét diagram

Situation B: rapport pr. segment

Resultat

Et diagram, der opdateres automatisk for hvert nyt svar

En pivottabel, du kan filtrere efter kanal, sprog eller andre kolonner

Værktøjer

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (pivottabel og slicer)

God til

Den lille virksomhed, der vil have et enkelt, altid opdateret diagram

Et team, der sammenligner grupper, f.eks. online- og butikskunder

Før du går i gang

  • En Survio-undersøgelse på et betalt abonnement. Webhooks virker ikke på Free-abonnementet, og hvert abonnement har et fast antal webhooks (se webhook-artiklen).

  • En n8n-konto, n8n Cloud eller selv-hostet.

  • En Google-konto til Google Sheets.

I denne vejledning bruger vi et kort spørgeskema om kundetilfredshed: stjernebedømmelse, et "Alt i alt, hvor tilfreds er du?"-spørgsmål, et "Hvordan handlede du hos os denne gang?"-spørgsmål, mulighed for en kommentar og evt. e-mail. Din undersøgelse kan se anderledes ud – du matcher dine egne spørgsmål i trin 5.
​

Trin 1 — Gør regnearket klar

  1. Lav et nyt Google Sheet og omdøb fanen til responses.

  2. Skriv kolonneoverskrifter i række 1. Vi bruger Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language og Source.

Response ID skal altid stå først. Det er Survios unikke id ved hvert svar. n8n bruger den til at opdatere eksisterende rækker og undgå dubletter, hvis en levering sker igen.

Trin 2 — Opret webhook i n8n

  1. Lav et nyt workflow i n8n og tilføj en Webhook-node som trigger.

  2. Sæt HTTP Method til POST.

  3. Gå til fanen Production URL og kopier adressen.

  4. Klik på Publish. Production URL modtager kun leveringer, efter workflowet er offentliggjort.

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

Brug kun Production URL, ikke Test URL. Test-URL’en lytter kun, når editoren venter på en test, og Survios leveringer fejler, så snart du lukker editoren. Survio forsøger automatisk igen i ca. et døgn og slår webhooken fra efter 5 dages fejl.

Trin 3 — Tilslut undersøgelsen i Survio

  1. Åbn din undersøgelse og gå til Få svar.

  2. I venstremenuen under Automatiseringer & integrationer, vælg Webhooks og klik på + Tilføj en webhook.

  3. Indsæt n8n Production URL i Webhook URL og klik Gem webhook. Webhooken virker med det samme.

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


​

Trin 4 — Send et testsvar og find dine spørgsmål-id’er

  1. Klik dig igennem din undersøgelse via det sædvanlige link, og indsend et fuldført svar. Survio sender kun komplette svar, så gå helt til slut.

  2. Åbn Executions-fanen i n8n. Din levering vises efter få sekunder.

  3. Gå ind i execution, klik på Webhook-noden. Fold body ud, så data og derefter answers. Hvert svar har sit question.id, label og answer.

  4. Noter id’et på hvert spørgsmål, du skal bruge som kolonne. Du kan også klikke Pin for at bygge videre uden at sende flere testsvar.

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

Vælg altid ud fra spørgsmål-id. Svar kommer som en liste. Tilføjer du flere spørgsmål, skifter rækkefølgen, og ellers kommer svarene i de forkerte kolonner. Spørgsmål-id’er ændrer sig ikke.

Vil du have respondentens e-mail? Brug ikke data.email – det felt er tomt, hvis e-mailen kommer via et spørgsmål eller som URL-parameter. Læs e-mail fra e-mail-spørgsmålet eller fra data.parameters.

Trin 5 — Gør hvert svar til en række

Det kræver to noder: Forbered række henter svarene, og Gem svar til ark skriver dem ind i sheetet.

Forbered række

  1. Tilføj en Edit Fields (Set)-node efter Webhook-noden og omdøb til Prepare row.

  2. Under Fields to Set: tilføj ét felt for hver kolonne i dit ark – behold typen String. Feltnavnet skal matche kolonnen præcist, og værdien er udtrykket herunder.

  3. Skift spørgsmål-id’erne (90403153 osv.) til dine egne fra trin 4 og tilpas tidszonen.

Feltnavn

Værdi

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


​

Gem svar til ark

  1. Tilføj en Google Sheets-node efter Forbered række, omdøb den til Save response to sheet, og vælg Append or Update Row.

  2. Forbind din Google-konto, vælg dit ark under Document (fra listen eller ved ID), og vælg responses under Sheet.

  3. Sæt Mapping Column Mode til Map Automatically, og Column to match on til Response ID.

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

Hvorfor et separat Forbered række-trin? Skifter du ark eller fane i Google Sheets-noden, nulstiller n8n kolonnerne. Med udtryk i Forbered række mister du intet – Google Sheets-noden matcher navne og kolonner automatisk.

Klik Publish igen. Ændringer virker kun, når du publicerer på ny.

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

Et par detaljer:

  • Enkeltvalgsspørgsmål og Flervalgsspørgsmål vises som { ids, labels, value }. labels[0] er teksten på det valgte. For flervalgsspørgsmål: brug labels.join(', ') for at få alle i én celle. value viser evt. "Andet"-felter.

  • Tid vises i UTC. Submitted-feltet konverteres automatisk til din tidszone, og Sheets kan sortere eller gruppere på det.

  • URL-parametre med bindestreg, fx order-id, kræver bracket-syntaks: parameters['order-id']. Du kan ikke bruge underscore i parameternavne.

  • Undersøgelsestitel sendes ikke i data. Hvis flere undersøgelser skriver til samme ark, så lav en kolonne til navn og tilføj det manuelt i Forbered række.

Send et testsvar mere. En ny række dukker op i arkets “responses” indenfor få sekunder.

The responses tab in Google Sheets with one row per response


​

Situation A — diagram over dine svar

  1. Tilføj et faneblad, kald det report.

  2. Skriv Satisfaction i A1 og Responses i B1. I A2–A6 sætter du svarkategorier, som de står i din undersøgelse.

  3. Brug =COUNTIF(responses!D:D,A2) i B2 og kopier den ned.

  4. Markér A1:B6, vælg Indsæt → Diagram. Google Sheets foreslår typisk et søjlediagram. Vil du ændre titel, gå til Tilpas → Diagram- & aksetitler.

Hver ny svar tilføjer en række til responses, så graf og tal opdateres automatisk, præcis som diagrammet længere oppe.
​

Situation B — Sammenlign grupper i en pivottabel

  1. Markér tabellen på responses-fanen og vælg Indsæt → Pivottabel. Opret på et nyt faneblad.

  2. Under Rækker: tilføj Satisfaction. Under Værdier: tilføj Response ID og skift Sammenfat efter fra SUM til COUNTA.

  3. Vælg Data → Tilføj slicer og vælg kolonnen Channel. Vælg de værdier, du vil se og tryk OK. Resultatet ligner pivottabellen øverst i artiklen.

Du kan filtrere med en slicer for enhver kolonne: Channel (dit spørgsmål), Language (det sprog respondenten brugte), Source (hvordan svaret blev indsendt, fx link vs. e-mail-invitation) eller Order ID.

Slicer-valg gemmes ikke. Når du åbner filen igen, viser sliceren alt. For at gemme valg skal det sættes som standard i slicer-menuen.

Download færdig workflow

I stedet for at bygge trin 2 og 5 fra bunden, kan du tage vores workflow som udgangspunkt. Download survio-responses-to-google-sheets.json fra bilagene nederst og fortsæt herfra:

  1. Lav et tomt workflow i n8n. Åbn menuen (de tre prikker) ud for workflow-navnet, vælg Import, derefter From file, og vælg filen.

  2. Åbn Prepare row og ret spørgsmål-id’erne til dine egne samt tidszonen.

  3. Åbn Save response to sheet. Du ser et rødt advarselsikon, indtil den er sat op. Forbind til Google og vælg regnearket samt responses-fanen. n8n skifter Mapping Column Mode til Map Each Column Manually – sæt tilbage til Map Automatically og vælg Column to match on som Response ID.

  4. Åbn Survio Webhook, kopier Production URL ind i Survio (trin 3) og klik på Publish.

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

Test hele flowet fra start til slut

  1. Send et svar via spørgeskemalinket. Der kommer en ny række i responses på få sekunder.

  2. Tjek at Response ID er udfyldt – så undgår du dubletter.

  3. Tjek Executions-fanen i n8n. Her vises alle leveringer og deres data.

Fejlfinding

Symptom

Årsag

Løsning

Intet ankommer til n8n

Test URL er brugt i Survio, eller workflowet ikke publiceret

Brug Production URL i Survio og klik Publish

Survio vil ikke gemme webhook-URL fra selv-hostet n8n

n8n viser en intern adresse i stedet for dens offentlige

Sæt n8n’s WEBHOOK_URL-indstilling til din offentlige https-adresse og kopier så URL’en igen

"Lyt efter test-begivenhed" viser ingenting, selvom undersøgelsen er indsendt

Survio sender til Production URL, men lytningen ser kun Test URL

Tjek i stedet under Executions

Seneste ændringer har ingen effekt

Workflowet er publiceret, men ikke den nye version (Publish-knappen har en prik)

Tryk Publish igen

Samme svar vises to gange

Operationen er sat til Append Row, eller ingen kolonne valgt til matching

Brug Append or Update Row og match på Response ID

Kolonne er tom, mens en ny kolonne dukker op bagerst

Feltnavn i Forbered række stemmer ikke overens med kolonnen

Ret feltet til at matche og slet den unødvendige kolonne

En celle viser [object Object]

Et enkeltvalgsspørgsmål eller flervalgsspørgsmål er matchet uden labels

Brug ?.answer?.labels?.[0]

Kolonner får forkerte svar, efter du har ændret undersøgelsen

Svar vælges ud fra rækkefølgen i listen

Vælg dem efter question.id

E-mail-kolonnen er tom

Du har taget e-mail fra data.email

Læs e-mailen fra svar på e-mail-spørgsmålet eller URL-parameteren

Gamle svar mangler

Webhooks sender kun nye svar efter de er oprettet

Eksporter de gamle svar fra Survio og indsæt dem manuelt

Survio har slået webhooken fra

Webhooks har fejlet i 5 dage i streg

Ret fejlen og slå webhooken til igen i Survio

Godt at vide

  • Survio sender kun komplette svar – en besked pr. svar – med det samme.

  • Intet udsendes bagud: Svar fra før webhooken fandtes eller svar indsendt mens webhooken var slået fra, sendes ikke.

  • Fejlede leveringer prøves op til 8 gange over ca. 27 timer. Hvert forsøg venter op til 30 sekunder. Så længe du matcher på Response ID, får du ikke dubletter.

  • Hvis leveringer fejler i 5 dage i træk, slår Survio webhooken automatisk fra – du skal selv slå til igen.

  • Hvis du sætter en webhook på pause, beholder den sin plads; sletter du den, er det permanent.

  • Survio gemmer ikke historik for leveringer i appen. Brug Executions-fanen i n8n som log.

  • Svar sendt til webhooks tæller ikke ekstra på dit abonnements svarkvote.

Vil du have os til at sætte det op for dig? Gå til Webhooks-siden i Survio, klik Få ekspertopsætning, fortæl os hvad du ønsker – så bygger, tester og leverer vores team en færdig webhook til dig.

Besvarede dette dit spørgsmål?