Přeskočit na hlavní obsah

Analýzy – Vaše reporty se aktualizují samy: posílejte každou odpověď ze Survia do Google Sheets

Každou dokončenou odpověď ze Survia odešlete automaticky do Google Sheets a nad nimi si vytvoříte živý graf nebo kontingenční tabulku. Podrobný průvodce krok za krokem s použitím n8n a hotovým workflow ke stažení.

Autor: Success Team Survio

Který scénář je vhodný právě pro vás?

Scénář A – jednoduchý, pro každého: jeden graf vašich odpovědí, který se průběžně aktualizuje s každou novou odpovědí.

Scénář B – pro týmy, které porovnávají skupiny: kontingenční tabulka, v níž lze filtrovat podle kanálu, jazyka nebo jiného sloupce.

Každá odpověď, kterou váš dotazník zaznamená, se v okamžiku odeslání objeví jako nový řádek v Google Sheets. Jednou si nad nimi vytvoříte graf nebo kontingenční tabulku a váš report se pak aktualizuje automaticky: žádné exporty, žádné kopírování, žádné čekání na data od kolegů.
​

Takto vypadá report u scénáře A, tedy graf, který se aktualizuje s každou novou odpovědí:
​

The report tab with response counts and a column chart


​

A toto je kontingenční tabulka u scénáře B, filtrovaná dle kanálu pomocí sliceru:
​

Pivot table with a slicer on the Channel column

Jak to celé funguje. Survio odešle každou dokončenou odpověď na webhook URL. Automatizační nástroj (v tomto návodu využíváme n8n) ji přijme a zapíše do vašeho Sheet jako jeden řádek. Survio odesílá, n8n zapisuje a Sheet vykresluje report.

S webhooky v Survio teprve začínáte? Projděte si nejdříve článek Webhooky: odesílání odpovědí do dalších nástrojů v reálném čase a pak se vraťte zpět.
​

Co budete vytvářet

Oba reporty vychází ze stejného principu: každá dokončená odpověď se zapíše jako jeden řádek na záložce responses.

Přehled

Scénář A: jeden graf

Scénář B: report podle segmentu

Výsledek

Graf rozložení odpovědí, který se automaticky aktualizuje při každé nové odpovědi

Kontingenční tabulka s možností filtrování dle kanálu, jazyka nebo jiného sloupce

Použité nástroje

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (kontingenční tabulka a slicer)

Ideální využití

Malá firma, která chce mít vždy aktuální přehled v jednoduchém grafu

Tým, který srovnává skupiny zákazníků, např. online a kamenné prodejny

Než se pustíte do práce

  • Dotazník v Survio s aktivním placeným tarifem. Webhooky nejsou dostupné v plánu Free a každý tarif má omezený počet webhooků na dotazník (viz článek o webhookách).

  • Účet v n8n, n8n Cloud nebo vlastní instalace.

  • Google účet pro Google Sheets.

V tomto postupu používáme krátký dotazník na spokojenost zákazníků: hvězdičkové hodnocení, otázku „Celkově, jak jste byli spokojeni?“, otázku „Jak jste u nás nakoupili tentokrát?“, volnou odpověď a volitelné pole na e-mail. Váš dotazník může být jiný; vlastní otázky namapujete v kroku 5.
​

Krok 1 – Připravte si sheet

  1. Založte nový Google Sheet a první záložku pojmenujte responses.

  2. Do prvního řádku zapište názvy sloupců. Používáme Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language a Source.

Ponechte Response ID jako první sloupec. Jde o unikátní identifikátor odpovědi ze Survia. n8n jej využívá při aktualizaci řádku, a tím zabrání duplicitám při opakovaném doručení.

Krok 2 – Vytvořte webhook v n8n

  1. V n8n založte nový workflow a přidejte uzel Webhook jako spouštěč.

  2. Nastavte HTTP Method na POST.

  3. Přejděte na záložku Production URL a zkopírujte adresu.

  4. Klikněte na Publikovat. Production URL začne přijímat data až po publikaci workflow.

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

Používejte Production URL, nikoli Test URL. Test URL je aktivní jen při čekání v editoru. Při zavřeném editoru doručení ze Survia selže. Survio opakuje odeslání přibližně den a po 5 dnech neúspěchů webhook automaticky vypíná.

Krok 3 – Propojte dotazník v Survio

  1. Otevřete dotazník a zvolte Sběr odpovědí.

  2. V levém menu v sekci Automatizace & Integrace vyberte Webhooks a klikněte na + Přidat webhook.

  3. Do pole Webhook URL vložte Production URL z n8n a potvrďte Uložit webhook. Webhook je okamžitě aktivní.

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


​

Krok 4 – Odešlete testovací odpověď a zjistěte ID otázek

  1. Otevřete dotazník přes běžný odkaz a odešlete kompletní odpověď. Survio odesílá pouze dokončené odpovědi.

  2. V n8n přejděte na záložku Executions. Doručení proběhne během několika vteřin.

  3. Otevřete konkrétní spuštění a klikněte na uzel Webhook. Rozklikněte body, dále data, poté answers. U každé odpovědi najdete question.id, label otázky a answer.

  4. Poznamenejte si ID všech otázek, které chcete mít jako samostatné sloupce. Lze také využít Pin a dále s odpovědí pracovat bez znovuvyplňování dotazníku.

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

Odpovědi vždy vybírejte podle ID otázky. Odpovědi se zasílají jako seznam – při přidání nové otázky se pořadí posune a do sloupců by mohla tiše zaplňovat nesprávná data. ID otázky zůstává stálé.

Potřebujete zjistit e-mail respondenta? Nepoužívejte data.email: tato hodnota zůstává prázdná, pokud e-mail pochází z otázky nebo URL parametru. Získejte jej z odpovědi na e-mailovou otázku nebo z data.parameters.

Krok 5 – Převod každé odpovědi na řádek

K tomu využijete dva uzly: Prepare row vybere správné hodnoty, Save response to sheet je zapíše do vašeho Sheet.

Prepare row

  1. Za uzel Webhook přidejte uzel Edit Fields (Set) a pojmenujte jej Prepare row.

  2. Pod Fields to Set přidejte pole pro každý sloupec Sheet a ponechte typ String. Název pole musí přesně odpovídat hlavičce sloupce, hodnotu určují výrazy uvedené níže.

  3. ID otázek (např. 90403153) nahraďte vašimi a časové pásmo Europe/Prague upravte dle svého pásma.

Název pole

Hodnota

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. Za Prepare row přidejte uzel Google Sheets, pojmenujte jej Save response to sheet a nastavte operaci Append or Update Row.

  2. Připojte svůj Google účet, poté vyberte svůj Spreadsheet pod Document (ze seznamu nebo vložte ID pod By ID) a v Sheet záložku responses.

  3. Nastavte Mapping Column Mode na Map Automatically a Column to match on na Response ID.

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

Proč samostatný krok Prepare row? Pokud vyberete jiný Sheet nebo záložku v uzlu Google Sheets, n8n vám v tomto uzlu smaže mapování sloupců. Díky výrazům v Prepare row o nastavení nepřijdete: uzel Google Sheets pouze přiřazuje názvy polí k hlavičkám sloupců.

Klikněte znovu na Publikovat. Změny provedené po publikování budou aktivní až po dalším publikování.

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

Několik tipů k uvedeným výrazům:

  • Výběrové otázky vrací hodnotu ve formátu { ids, labels, value }. labels[0] je text vybrané možnosti. Pro otázky s možností vícero odpovědí použijte labels.join(', ') pro zápis všech možností do jedné buňky. value obsahuje text ze zvolené volby „Jiná“.

  • Časy jsou v UTC. Výraz pro čas převede hodnotu na vaše časové pásmo a Google Sheets pak sloupec správně chápe jako datum a čas pro filtrování i agregaci.

  • URL parametry s pomlčkou v názvu, např. order-id, je třeba zapisovat parameters['order-id']. Survio umožňuje v názvech parametrů pouze pomlčku, ne podtržítko.

  • Název dotazníku není v datech, která Survio odesílá. Pokud více dotazníků zapisujete do jednoho Sheet, přidejte sloupec Dotazník a v Prepare row přidejte i pole s jeho názvem.

Vyplňte a odešlete další odpověď. Nový řádek se v Sheet objeví zpravidla během několika sekund.

The responses tab in Google Sheets with one row per response


​

Scénář A – Vykreslení odpovědí do grafu

  1. Přidejte záložku report.

  2. Do A1 napište Satisfaction a do B1 Responses. Do buněk A2 až A6 zadejte všechny možné varianty odpovědí přesně podle dotazníku.

  3. Do B2 vložte =COUNTIF(responses!D:D,A2) a zkopírujte do B6.

  4. Označte A1:B6 a zvolte Vložit → Graf. Google Sheets doporučí sloupcový graf. Titulek upravíte v Přizpůsobit → Název grafu a osy.

Každá nová odpověď přidá řádek do responses a počty i graf se automaticky aktualizují – přesně jako v ukázce na začátku článku.
​

Scénář B – Porovnávání skupin pomocí kontingenční tabulky

  1. V záložce responses označte tabulku a vyberte Vložit → Kontingenční tabulka, poté Nový list.

  2. V sekci Řádky přidejte Satisfaction. V sekci Hodnoty vložte Response ID a změňte Zobrazit jako ze SUM na COUNTA.

  3. Klikněte na Data → Přidat slicer a zvolte sloupec Channel. Vyberte požadované hodnoty a potvrďte OK. Výsledek se zobrazí podobně jako kontingenční tabulka v úvodu článku.

Filtrování je možné podle libovolného sloupce: Channel (vaše otázka), Language (jazyk dotazníku, ve kterém respondent odpovídal), Source (původ odpovědi, např. přímý odkaz či e‑mailová pozvánka) nebo Order ID.

Výběr v sliceru se neuloží pro příště. Po opětovném otevření souboru slicer zobrazuje všechny hodnoty. Pokud chcete výběr uložit, nastavte jej jako výchozí v menu sliceru.

Stáhněte si hotový workflow

Nemusíte připravovat kroky 2 a 5 ručně; začněte s naším připraveným workflow. Stáhněte si soubor survio-responses-to-google-sheets.json z přílohy na konci článku a postupujte dále:

  1. V n8n vytvořte prázdný workflow. Otevřete menu (tři tečky) u názvu workflow a zvolte Import, poté Ze souboru. Zvolte stažený soubor.

  2. Otevřete Prepare row a doplňte svá ID otázek a časové pásmo místo Europe/Prague.

  3. Otevřete Save response to sheet. Pokud není nastaven, bude označen červeným vykřičníkem. Připojte Google účet a vyberte vhodný sheet a záložku responses. n8n automaticky přepne Mapping Column Mode na „Mapovat každý sloupec ručně“ – vraťte nastavení zpět na Map Automatically a Column to match on na Response ID.

  4. Otevřete Survio Webhook, zkopírujte Production URL do Survia (krok 3) a potvrďte Publikovat.

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

Vyzkoušejte postup od začátku do konce

  1. Odešlete odpověď přes odkaz na dotazník. V záložce responses se do pár sekund objeví nový řádek.

  2. Zkontrolujte, že je řádek vyplněn včetně Response ID. Tím zabráníte vzniku duplicit.

  3. Podívejte se do záložky Executions v n8n. Každé doručení i zpracovaná data najdete zde.

Řešení potíží

Problém

Příčina

Řešení

Do n8n není doručeno nic

V Survio je použita Test URL nebo workflow není zveřejněný

Zkopírujte Production URL do Survia a potvrďte publikaci

Survio nechce uložit webhook URL z vlastní instance n8n

n8n zobrazuje interní místo veřejné adresy

V n8n nastavte proměnnou WEBHOOK_URL na veřejnou https adresu a opět zkopírujte URL

„Listen for test event“ neukáže nic, i když byl dotazník odeslán

Survio odesílá na Production URL; naslouchání probíhá na Test URL

Podívejte se přímo do záložky Executions

Poslední úprava se neprojeví

Workflow je publikovaný, ale změna není (u tlačítka Publish je tečka)

Znovu potvrďte publikaci

Stejná odpověď se objeví dvakrát

Operace je pouze Append Row nebo není nastaven párovací sloupec

Použijte Append or Update Row a párujte podle Response ID

Sloupec zůstává prázdný/na konci Sheet vznikl nový sloupec

Název pole v Prepare row neodpovídá přesně hlavičce sloupce

Upravte název pole v Prepare row a nechtěný sloupec smažte

V buňce je [object Object]

Mapujete výběrovou hodnotu bez využití labels

Použijte ?.answer?.labels?.[0]

Po úpravě dotazníku se sloupce naplňují špatnými odpověďmi

Odpovědi jsou vybírány podle pozice v seznamu

Vybírejte podle question.id

Sloupec E-mail zůstává prázdný

Mapuje se z data.email

Získejte hodnotu ze zodpovězené e-mailové otázky nebo z URL parametru

Chybí odpovědi z doby před nastavením

Webhooky posílají pouze odpovědi vzniklé po nastavení

Starší odpovědi vyexportujte ze Survia a přidejte je do Sheet ručně

Survio webhook deaktivovalo

Webhook URL selhával 5 dní po sobě

Odstraňte příčinu a webhook v Survio znovu aktivujte

Důležité informace

  • Survio odešle pouze dokončené odpovědi, vždy jako jednu zprávu za odpověď, obvykle během několika sekund.

  • Zpětně se žádné odpovědi neposílají: neodesílají se ty, které vznikly před vytvořením webhooku ani ty, které byly přijaty během jeho deaktivace.

  • Každé neúspěšné doručení se zkouší až osmkrát v průběhu cca 27 hodin, každý pokus čeká na odpověď až 30 sekund. Díky párování podle Response ID opakované pokusy nezpůsobí duplicity.

  • Pokud doručování selhává 5 dní, Survio webhook automaticky vypne; znovu jej tedy aktivujte.

  • Pozastavení webhooku pouze rezervuje slot, smazání je nevratné.

  • Survio historii doručení přímo v aplikaci neuchovává. Najdete ji v záložce Executions v n8n.

  • Odesílání odpovědí přes webhook nezapočítává další odpovědi z vašeho tarifu navíc.

Přejete si raději odborné nastavení? V sekci Webhooky v Survio klikněte na Získat odborné nastavení, popište svůj cílový stav a náš tým vám webhook připraví, otestuje a předá jako funkční řešení.

Dostali jste odpověď na svou otázku?