Direct la conținutul principal

Analytics – Rapoartele dvs. se actualizează automat: trimiteți fiecare răspuns Survio către Google Sheets

Trimiteți automat fiecare răspuns completat Survio într-un Google Sheet, apoi creați un grafic sau un tabel pivot în timp real. Ghid pas cu pas cu n8n și un workflow gata de descărcat.

Scris de Success Team Survio

Când este util acest caz pentru dvs.?

Cazul A – simplu, pentru oricine: un grafic al răspunsurilor dvs. care se actualizează cu fiecare nou răspuns primit.

Cazul B – pentru echipe care vor să compare grupuri: un tabel pivot pe care îl puteți filtra după canal, limbă sau orice altă coloană.

Fiecare răspuns pe care chestionarul dvs. îl colectează ajunge ca un rând nou într-un Google Sheet în momentul în care este trimis. Construiți o dată un grafic sau un tabel pivot peste el, iar raportul dvs. rămâne mereu actualizat: fără exporturi, fără copiere, fără să așteptați ca cineva să pregătească datele.
​

Acesta este raportul pe care îl obțineți în cazul A, un grafic ce se actualizează cu fiecare răspuns nou:
​

The report tab with response counts and a column chart


​

Iar acesta este tabelul pivot din cazul B, filtrat după canal cu un segmentator:
​

Pivot table with a slicer on the Channel column

Cum funcționează. Survio trimite fiecare răspuns completat către un URL webhook. Un instrument de automatizare (folosim n8n în acest ghid) îl primește și inserează un rând în sheet-ul dvs. Survio se ocupă de trimitere, n8n de scriere, iar sheet-ul de raportare.

Nu ați mai folosit webhooks în Survio? Începeți cu Webhooks: trimiteți răspunsuri către celelalte instrumente ale dvs. în timp real, apoi reveniți aici.
​

Ce veți construi

Ambele rapoarte sunt alimentate de aceeași configurare: fiecare răspuns completat devine un rând pe o filă numită responses.

Dintr-o privire

Cazul A: un grafic

Cazul B: raport pe segmente

Rezultat

Un grafic cu distribuția răspunsurilor, actualizat cu fiecare răspuns nou

Un tabel pivot pe care îl puteți filtra după canal, limbă sau altă coloană

Instrumente

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (tabel pivot și segmentator)

Ideal pentru

O afacere mică ce dorește un grafic simplu mereu actualizat

O echipă care compară grupuri, de exemplu clienți online și la magazin

Înainte de a începe

  • Un chestionar Survio pe un plan cu plată. Webhooks nu sunt disponibile pe planul Free, iar fiecare plan permite un număr de webhooks per chestionar (vedeți articolul despre webhooks).

  • Un cont n8n, n8n Cloud sau self-hosted.

  • Un cont Google pentru Google Sheets.

În acest ghid folosim un scurt chestionar de satisfacția clientului: o evaluare cu stele, o întrebare "Per total, cât de mulțumit sunteți?" de tip alegere, o întrebare "Cum ați cumpărat de la noi de această dată?" de tip alegere, un comentariu deschis și o întrebare opțională de e-mail. Chestionarul dvs. poate arăta diferit; veți asocia propriile întrebări la pasul 5.
​

Pasul 1 — Pregătiți sheet-ul

  1. Creați un Google Sheet nou și redenumiți prima filă în responses.

  2. În rândul 1, introduceți anteturile coloană. Noi folosim Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language și Source.

Păstrați Response ID ca prima coloană. Este identificatorul unic al Survio pentru fiecare răspuns. n8n îl folosește pentru a actualiza rândul existent în loc să adauge duplicate când are loc o retrimitere.

Pasul 2 — Creați webhook-ul în n8n

  1. În n8n, creați un workflow nou și adăugați un nod Webhook ca declanșator.

  2. Setați HTTP Method pe POST.

  3. Comutați la fila Production URL și copiați adresa.

  4. Faceți clic pe Publish. Production URL acceptă livrări doar după publicare.

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

Folosiți Production URL, nu Test URL. Test URL ascultă doar cât timp editorul așteaptă un eveniment de test, astfel încât livrările Survio eșuează imediat după ce îl închideți. Survio retrimite o livrare eșuată timp de aproximativ o zi, iar după 5 zile de eșec webhook-ul este dezactivat.

Pasul 3 — Conectați chestionarul în Survio

  1. Deschideți chestionarul și mergeți la Primiți răspunsuri.

  2. În bara laterală, sub Automatizări & Integrări, selectați Webhooks și faceți clic pe + Adăugați un webhook.

  3. Lipiți Production URL din n8n în Webhook URL și faceți clic pe Salvați webhook. Webhook-ul este activat imediat.

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


​

Pasul 4 — Trimiteți un răspuns de test și găsiți id-urile întrebărilor

  1. Deschideți chestionarul prin linkul obișnuit și trimiteți un răspuns complet. Survio trimite doar răspunsuri finalizate, deci parcurgeți tot chestionarul până la final.

  2. În n8n, deschideți fila Executions. Livrarea ajunge în câteva secunde.

  3. Deschideți execuția și dați clic pe nodul Webhook. Extindeți body, apoi data, apoi answers. Fiecare răspuns conține question.id, label al întrebării și answer.

  4. Notați id-ul fiecărei întrebări pe care doriți să o aveți ca și coloană. Puteți și fixa răspunsul (Pin) ca să construiți pe el în continuare fără să retrimiteți chestionarul.

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

Selectați mereu răspunsurile după id-ul întrebării. Răspunsurile ajung ca listă. Dacă ulterior adăugați o întrebare, pozițiile din listă se schimbă, iar coloanele s-ar umple cu alte răspunsuri. Id-urile întrebărilor nu se modifică niciodată.

Căutați e-mailul respondentului? Nu folosiți data.email: rămâne gol dacă e-mailul vine dintr-o întrebare sau parametru URL. Citiți-l din răspunsul la întrebarea de e-mail sau din data.parameters.

Pasul 5 — Transformați fiecare răspuns într-un rând

Aveți nevoie de două noduri: Prepare row preia răspunsurile, iar Save response to sheet le scrie în sheet.

Prepare row

  1. Adăugați un nod Edit Fields (Set) după Webhook și redenumiți-l Prepare row.

  2. La Fields to Set, adăugați câte un câmp pentru fiecare coloană și lăsați tipul String. Numele câmpului trebuie să coincidă exact cu antetul coloanei; valoarea este expresia de mai jos.

  3. Înlocuiți id-urile întrebărilor cu cele notate la pasul 4 și Europe/Prague cu fusul dvs. orar.

Nume câmp

Valoare

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. Adăugați un nod Google Sheets după Prepare row, redenumiți-l Save response to sheet și alegeți operațiunea Append or Update Row.

  2. Conectați contul Google, apoi selectați spreadsheet-ul la Document (din listă sau introduceți ID-ul cu By ID) și fila responses la Sheet.

  3. Setați Mapping Column Mode pe Map Automatically și Column to match on pe Response ID.

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

De ce pas separat Prepare row? Dacă schimbați sheet-ul sau fila în nodul Google Sheets, n8n golește maparea internă. Cu expresiile din Prepare row nu se pierde nimic – nodul Google Sheets doar mapează numele câmpurilor la anteturi.

Faceți clic pe Publish din nou. Modificările după publicare devin active doar după ce publicați din nou.

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

Câteva detalii despre expresii:

  • Întrebările de tip alegere vin ca { ids, labels, value }. labels[0] e textul opțiunii selectate. Pentru alegere multiplă, folosiți labels.join(', ') pentru a pune toate opțiunile într-o celulă. value conține textul introdus la „Altă variantă”.

  • Orele sosesc în UTC. Expresia Submitted le transformă în fusul dvs. orar, și Google Sheets poate sorta/grupa data și ora.

  • Parametrii URL cu cratimă în nume (ex: order-id) trebuie accesați cu parameters['order-id']. Survio nu permite underscore în nume de parametri.

  • Titlul chestionarului nu e trimis. Dacă mai multe chestionare scriu în același sheet, adăugați o coloană Survey și câmp manual cu numele chestionarului la Prepare row.

Trimiteți un alt răspuns. Un nou rând apare în sheet în câteva secunde.

The responses tab in Google Sheets with one row per response


​

Cazul A — Graficul răspunsurilor

  1. Adăugați o filă numită report.

  2. Scrieți Satisfaction în A1 și Responses în B1. Din A2 în A6, introduceți opțiunile de răspuns exact ca în chestionar.

  3. În B2 introduceți =COUNTIF(responses!D:D,A2) și copiați în jos până la B6.

  4. Selectați A1:B6 și alegeți Insert → Chart. Pentru titlu, mergeți la Customize → Chart & axis titles.

Orice răspuns nou adaugă un rând pe responses, iar numărătoarea și graficul se actualizează automat, similar cu graficul de la începutul articolului.
​

Cazul B — Comparați grupuri cu tabel pivot

  1. Pe fila responses, selectați datele și alegeți Insert → Pivot table, apoi New sheet.

  2. La Rows, adăugați Satisfaction. La Values, adăugați Response ID și schimbați Summarize by din SUM în COUNTA.

  3. Alegeți Data → Add a slicer și selectați coloana Channel. Bifați valorile dorite și confirmați cu OK. Rezultatul va semăna cu tabelul pivot prezentat la începutul acestui articol.

Puteți filtra după orice coloană: Channel (propria întrebare), Language (limba de răspuns a chestionarului), Source (sursa răspunsului – link direct sau invitație prin e-mail, de exemplu) sau Order ID.

O selecție în segmentator nu este salvată pentru următoarea vizită. La redeschidere, segmentatorul arată toate valorile. Pentru a salva o selecție, setați-o ca implicită din meniul segmentatorului.

Descărcați workflow-ul gata făcut

În loc să construiți pașii 2 și 5 manual, începeți de la workflow-ul nostru. Descărcați survio-responses-to-google-sheets.json din fișierele articolului, apoi:

  1. În n8n, creați un workflow gol. Deschideți meniul (trei puncte) de lângă nume și alegeți Import > From file. Selectați fișierul descărcat.

  2. Deschideți Prepare row și înlocuiți id-urile întrebărilor și fusul orar cu ale dvs.

  3. Deschideți Save response to sheet. Va apărea un avertisment roșu până configurați. Conectați contul Google și selectați sheet-ul și fila responses. n8n va schimba Mapping Column Mode în Map Each Column Manually: setați-l din nou pe Map Automatically și Column to match on pe Response ID.

  4. Deschideți Survio Webhook, copiați Production URL în Survio (pasul 3) și faceți clic pe Publish.

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

Testați cap-coadă

  1. Trimiteți un răspuns prin linkul chestionarului. Un rând apare pe fila responses în câteva secunde.

  2. Verificați ca Response ID să fie completat. Acesta previne duplicatele.

  3. Verificați fila Executions în n8n. Fiecare livrare și datele apar acolo.

Depanare

Simptom

Cauză

Remediere

Nimic nu ajunge în n8n

Test URL e introdus în Survio sau workflow-ul nu e publicat

Copiați Production URL în Survio și faceți clic pe Publish

Survio nu salvează URL-ul webhook de la n8n self-hosted

n8n afișează adresă internă în loc de publică

Setați WEBHOOK_URL la adresa dvs. https publică și copiați URL-ul din nou

„Listen for test event” nu arată nimic deși un chestionar a fost trimis

Survio trimite pe Production URL; ascultarea e pe Test URL

Verificați fila Executions

Ultima modificare nu are efect

Workflow-ul e publicat, dar schimbarea nu (butonul Publish are punct)

Faceți clic din nou pe Publish

Apare același răspuns de două ori

Setat pe Append Row sau nu s-a ales coloana de asociere

Folosiți Append or Update Row și asociați pe Response ID

O coloană rămâne goală și apare una nouă la final

Numele din Prepare row nu corespunde antetului

Redenumiți câmpul ca să corespundă și ștergeți coloana suplimentară

O celulă arată [object Object]

Întrebare alegere mapată fără labels

Folosiți ?.answer?.labels?.[0]

Coloanele preiau răspunsuri greșite după ce editați chestionarul

Ați ales răspunsurile după poziție în listă

Selectați-le după question.id

Coloana E-mail rămâne goală

Mapată din data.email

Luați e-mailul din întrebarea de e-mail sau parametru URL

Răspunsurile anterioare configurării lipsesc

Webhooks trimit doar răspunsuri transmise după creare

Exportați răspunsurile vechi din Survio și introduceți-le manual

Survio a dezactivat webhook-ul

URL-ul webhook-ului a eșuat 5 zile la rând

Remediați cauza și reactivați webhook-ul în Survio

Bine de știut

  • Survio trimite doar răspunsuri completate, un mesaj pentru fiecare, în câteva secunde.

  • Nu se trimit retroactiv răspunsuri de dinaintea webhook-ului sau din perioada cât a fost dezactivat.

  • O livrare eșuată se retrimite de până la 8 ori în circa 27 de ore, fiecare încercare așteptând până la 30 de secunde. Asocierea după Response ID face ca retrimiterile să nu dăuneze datelor.

  • Dacă livrările eșuează 5 zile la rând, Survio dezactivează webhook-ul și trebuie să îl reactivați.

  • Pauzarea unui webhook păstrează locul, ștergerea e definitivă.

  • Survio nu ține istoric de livrări în aplicație. Fila Executions din n8n ține evidența.

  • Trimiterea răspunsurilor prin webhooks nu consumă suplimentar răspunsuri din planul dvs.

Preferăți să ne ocupăm noi? Pe pagina Webhooks din Survio, faceți clic pe Primiți configurare de la un expert, spuneți-ne ce doriți să automatizați, iar echipa noastră va crea, testa și preda un webhook funcțional.

Ați primit răspuns la întrebare?