Hoppa till huvudinnehåll

Analys – Dina rapporter uppdateras automatiskt: skicka varje Survio-svar till Google Sheets

Skicka varje ifyllt Survio-svar direkt till ett Google-ark och bygg smidigt ett levande diagram eller en pivottabell ovanpå. Följ vår steg-för-steg-guide med n8n och ett färdigt arbetsflöde att ladda ner.

Skrivet av Success Team Survio

Vilket scenario passar dig?

Scenario A – superenkelt, för alla: ett diagram med dina svar som automatiskt uppdateras vid varje nytt svar.

Scenario B – för team som jämför grupper: en pivottabell där du kan filtrera på kanal, språk eller någon annan kolumn.

Varje svar från din enkät landar som en ny rad i ett Google Sheet så fort det skickas in. Bygg ett diagram eller en pivottabell ovanpå – rapporten håller sig alltid uppdaterad helt själv: ingen export, ingen klipp-och-klistra, inga väntetider.

Så här ser rapporten ut i Scenario A, ett diagram som fyller på automatiskt för varje svar:

The report tab with response counts and a column chart

​

Och här ser du exempel på pivottabellen i Scenario B, filtrerad på kanal med en slicer:

Pivot table with a slicer on the Channel column

Så funkar det! Survio skickar varje inskickat svar till en webhook-URL. Ett automationsverktyg (vi använder n8n här) tar emot svaret och sparar en rad i arket. Survio skickar datan, n8n sparar det, och arket visar rapporten.

Ny på Webhooks i Survio? Börja med Webhooks: skicka svar till dina andra verktyg direkt, och kom tillbaka hit sen.
​

Det här bygger du

Båda rapporttyperna använder samma grund: varje ifyllt svar blir en rad på en flik som heter responses.

Överblick

Scenario A: diagram

Scenario B: rapport per segment

Resultat

Ett diagram som visar fördelningen av svar och hålls automatiskt aktuellt

En pivottabell där du filtrerar t.ex. på kanal, språk eller annan kolumn

Verktyg

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (pivottabell och slicer)

Bäst för

Ett mindre företag som snabbt vill se sin data visuellt och alltid uppdaterad

Ett team som jämför t.ex. online- och butikskunder eller olika kanaler

Innan du sätter igång

  • En Survio-enkät på en aktiv betalplan. Webhooks ingår inte i Free-planen och antalet Webhooks per enkät beror på plan (se webhook-artikeln).

  • n8n-konto (Cloud-variant eller självhostat).

  • Google-konto för Google Sheets.

I guiden använder vi ett enkelt kundnöjdhetsenkät: stjärnskala, “Hur nöjd är du totalt?”, “Hur handlade du denna gång?”, fritext, och en frivillig e-postfråga. Din enkät kan vara annorlunda – du mappar dina frågor i Steg 5.
​

Steg 1 — Förbered Google-arket

  1. Skapa ett nytt Google Sheet och döp den första fliken till responses.

  2. På rad 1: skriv in kolumnrubriker. Vi använder Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language och Source.

Låt Response ID vara först. Det är Survios unika id för varje svar och behövs för att n8n ska veta vilken rad som ska uppdateras vid eventuella omleveranser, så du slipper dubbletter.

Steg 2 — Skapa webhook i n8n

  1. I n8n, skapa ett nytt arbetsflöde och lägg till en Webhook-nod som trigger.

  2. Välj HTTP Method som POST.

  3. Öppna fliken Production URL och kopiera adressen.

  4. Klicka på Publish. Production URL tar bara emot svar när arbetsflödet är publicerat.

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

Använd alltid Production URL, aldrig Test URL. Test URL lyssnar bara medan editorn är öppen. Så fort du stänger editorn misslyckas Survios leveranser och webhooken stängs av efter några dagar.

Steg 3 — Anslut din enkät i Survio

  1. Gå till din Enkät och välj Få svar.

  2. I menyn till vänster under Automations & Integrationer, välj Webhooks och klicka på + Lägg till webhook.

  3. Klistra in n8n Production URL i Webhook URL och klicka på Spara webhook. Webhooken aktiveras direkt.

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

​

Steg 4 — Skicka testsvar & hitta fråge-ID

  1. Öppna din Enkät via ordinarie länk och fyll i samtliga frågor – spara hela vägen till inskick.

  2. I n8n, öppna fliken Executions. Datan syns efter några sekunder.

  3. Klicka på leveransen, öppna Webhook-noden. Veckla ut body, sedan data, sen answers. Där hittar du varje frågas question.id, label och answer.

  4. Notera id för de Frågor som du vill ha som kolumn i arket. Du kan också Pin-markera svaret för att använda det vidare i bygget utan att fylla i Enkäten igen.

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

Alltid välj svar baserat på fråge-ID. Om du senare lägger till Frågor ändras ordningen i listan, men fråge-ID ändras aldrig – så du slipper felmappade värden.

Letar du efter respondentens e-post? Använd inte data.email: det kan vara tomt om e-post samlats via fråga eller URL. Hämta e-post från svaret på din e-postfråga eller i data.parameters.

Steg 5 — Gör varje svar till en rad

Här behövs två noder: Prepare row lyfter ut svaren, Save response to sheet skriver dem i Google Sheet.

Prepare row

  1. Lägg till en Edit Fields (Set)-nod efter Webhook-noden och kalla den Prepare row.

  2. Under Fields to Set: lägg till ett fält för varje kolumn, typ String – exakt samma namn som kolumnrubriken, och som värde använder du respektive uttryck nedan.

  3. Byt ut fråge-ID (90403153 osv.) till de du skrev ner i Steg 4, samt Europe/Prague till rätt tidszon för dig.

Fältnamn

Värde

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

​

Save response to sheet

  1. Lägg till en Google Sheets-nod efter Prepare row, döp om den till Save response to sheet och välj “Append or Update Row”.

  2. Anslut till ditt Google-konto. Välj det ark som ska användas under Document (från listan eller klistra in ID) samt fliken responses under Sheet.

  3. Sätt Mapping Column Mode till Map Automatically, och Column to match on till Response ID.

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

Varför göra Prepare row separat? Om du byter ark/flik i Google Sheets-noden nollas kolumnmappningen där. Med uttrycken i Prepare row ligger all logik kvar, och Sheets-noden parar bara ihop namn mot rubriker.

Klicka på Publish igen. Alla ändringar måste publiceras för att slå igenom.

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

Några detaljer kring uttrycken ovan:

  • Valfrågor levereras som { ids, labels, value }. labels[0] är texten på det valda alternativet. Vid flervalsfråga: använd labels.join(', ') för att samla alla markerade val i en cell. value rymmer fritexten om "Övrigt" är valt.

  • Tider skickas i UTC. “Submitted”-uttrycket omvandlar till rätt tidszon, så du kan enkelt sortera och hantera datumet i Google Sheets.

  • URL-parametrar med bindestreck (som order-id) måste anges med hakparenteser: parameters['order-id']. Survio tillåter inte understreck i parameternamn.

  • Enkättiteln finns inte i datan som Survio skickar. Om flera Enkäter skriver till samma ark, lägg till en kolumn “Enkät” manuellt och lägg till Enkätens namn i Prepare row.

Skicka in ytterligare ett svar – du ser en ny rad i arket efter ett par sekunder.

The responses tab in Google Sheets with one row per response

​

Scenario A — Diagram över svaren

  1. Lägg till en flik som heter report.

  2. I A1: skriv Satisfaction, i B1: Responses. Skriv in alla svarsalternativ i A2–A6 exakt som i Enkäten.

  3. I B2: skriv =COUNTIF(responses!D:D,A2) och dra ner till B6.

  4. Markera A1:B6 och gå till Infoga → Diagram. Sheets föreslår stapeldiagram, men du kan anpassa titeln under Anpassa → Diagram- & axeltitlar.

Varje nytt svar adderar en rad till responses, och både siffror och diagram hänger alltid med – precis som i exemplet högst upp.

Scenario B — Jämför grupper med Pivottabell

  1. På responses-fliken: markera din tabell och välj Infoga → Pivottabell, sedan Ny flik.

  2. Under Rader lägger du till Satisfaction och under Värden väljer du Response ID och ändrar Sammanfatta enligt från SUM till COUNTA.

  3. Klicka på Data → Lägg till skivfilter och välj Channel-kolumnen. Kryssa för vilka värden som ska synas och bekräfta med OK. Nu får du en Pivottabell likt exemplet tidigare i artikeln.

Du kan filtrera på vilken kolumn du vill: Channel (ditt eget fält), Language (språket Respondenten fyllde i), Source (hur svaret kom in, t.ex. direkt- eller e-postlänk) eller Order ID.

Skivfiltrering sparas inte automatiskt. När filen öppnas igen visar filtret alltid alla värden. Vill du spara urvalet, välj “Spara som standard” i skivfiltrets meny.

Ladda ner färdig arbetsflödesfil

Vill du slippa bygga Steg 2 och 5 själv? Börja med vårt färdiga arbetsflöde. Ladda ner survio-responses-to-google-sheets.json längst ner på sidan och gör så här:

  1. I n8n, skapa ett tomt arbetsflöde. Klicka på menyn (tre prickar) vid arbetsflödets namn, välj Import → Från fil och importera filen.

  2. Gå in på Prepare row och byt ut fråge-ID mot dina egna samt rätt tidszon.

  3. Gå in på Save response to sheet. Röd varning visas tills inställningarna är klara. Koppla Google-kontot och välj ark + flik responses. n8n byter automatiskt till Map Each Column Manually: byt tillbaka till Map Automatically och välj Column to match on till Response ID.

  4. Gå in på Survio Webhook, kopiera Production URL, lägg till i Survio enligt Steg 3 och tryck Publish.

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

Testa att allt funkar

  1. Fyll i ett testsvar via enkätlänken. En rad visas på responses-fliken inom någon sekund.

  2. Kolla så Response ID är ifyllt – då slipper du dubbletter.

  3. Öppna Executions i n8n. Där ser du alla leveranser och datan i detalj.

Felsökning

Symptom

Orsak

Lösning

Inget dyker upp i n8n

Test URL lagd i Survio, eller arbetsflödet inte publicerat

Klistra in Production URL i Survio och tryck Publish

Survio sparar inte webhook-URL för självhostad n8n

n8n visar en intern adress istället för publik

Ställ in n8n:s WEBHOOK_URL till din publika https-adress, kopiera URL igen

"Listen for test event" visar inget trots att enkäten är ifylld

Survio skickar bara till Production URL; lyssnaren är kopplad till Test URL

Titta på fliken Executions istället

Senaste ändringen slår inte igenom

Arbetsflödet är publicerat men inte ändringarna (Publish-knappen är markerad)

Klicka på Publish igen

Samma svar visas två gånger

Operation står på Append Row eller matchkolumn saknas

Använd Append or Update Row samt matcha på Response ID

En kolumn blir tom och en ny kolumn dyker upp sist

Fältnamnet i Prepare row stämmer inte exakt med kolumnhuvudet

Ändra fältnamnet så att det matchar och ta bort extrakolumnen

En cell visar [object Object]

Flervalsfråga mappad utan labels

Använd ?.answer?.labels?.[0]

Kolumner får fel svar efter enkätändringar

Svar matchas efter ordning i listan

Matcha på question.id istället

E-mail-kolumnen är tom

Mapper från data.email

Läs från e-postfråga eller url-parameter

Svar från innan inställningen saknas

Webhook skickar bara inlämnade svar efter att den skapades

Exportera äldre svar från Survio, klistra in manuellt

Survio har stängt av webhooken

Webhook-URL misslyckades fem dagar i sträck

Åtgärda orsaken och slå på webhooken igen i Survio

Bra att tänka på

  • Survio skickar alltid inlämnade Svar, ett meddelande per svar, oftast på några sekunder.

  • Det skickas aldrig retroaktivt – inget från före webhooken sattes upp, och inget från en tid då den varit inaktiv.

  • Om ett försök misslyckas körs det upp till åtta gånger på ca 27 timmar. Ytterligare försök väntar upp till 30 sek. Eftersom vi matchar på Response ID får du aldrig dubbletter vid omförsök.

  • Misslyckas det fem dagar i rad stänger Survio av webhooken tills du slår på den igen.

  • En pausad Webhook sparas, men raderar du den är det permanent.

  • Survio sparar ingen leveranshistorik. Allt visas i n8n under Executions – det är din logg.

  • Att skicka svar via webhooks drar inte fler svar från din plan.

Vill du hellre ha hjälp av oss? Gå till Webhooks-sidan i Survio, klicka på Få experthjälp – berätta vad du vill automatisera, så sätter vi upp och testar klart en webhook åt dig.

Fick du svar på din fråga?