Към основното съдържание

Анализи – Вашите отчети се обновяват автоматично: изпратете всеки отговор от Survio към Google Sheets

Изпращайте автоматично всеки попълнен отговор от Survio към Google Sheets, след което създайте динамична диаграма или сводна таблица директно върху него. Вижте подробното ръководство с готов за използване работен процес с n8n.

Написано от Success Team Survio

За кого е подходящо това?

Случай А – лесно и достъпно за всеки: една диаграма с Вашите отговори, която автоматично се обновява с всеки нов отговор.

Случай B – за екипи, които сравняват групи: сводна таблица, която може да се филтрира по канал, език или друга избрана колона.

Всеки отговор, който Вашата анкета събира, се записва като нов ред в Google Sheet в момента на изпращането му. Създайте диаграма или сводна таблица и отчетите Ви ще останат винаги актуални: без експортиране, без копиране, без чакане някой да подготви числата.
​

Това е отчетът, който ще получите при Случай А – диаграма, която се обновява с всеки нов отговор:
​

The report tab with response counts and a column chart


​

А това е сводната таблица при Случай B, филтрирана по канал с нарезник:
​

Pivot table with a slicer on the Channel column

Как работи това. Survio изпраща всеки попълнен отговор към URL адрес на Webhook. Инструментът за автоматизация (тук използваме n8n в това ръководство) го получава и записва ред във Вашия лист. Survio изпраща, n8n записва, а листът изготвя отчета.

Нямате опит с Webhooks в Survio? Започнете със Webhooks: изпращайте отговори към другите Ви инструменти в реално време, след което се върнете тук.
​

Какво ще създадете

И двата отчета ползват една и съща настройка: всеки попълнен отговор става ред на раздел responses.

Накратко

Случай А: една диаграма

Случай B: отчет по сегмент

Резултат

Диаграма, която показва как са разпределени отговорите, обновявана при всеки нов отговор

Сводна таблица, която позволява филтриране по канал, език или друга колона

Инструменти

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (сводна таблица и нарезник)

Подходящо за

Малък бизнес, който иска проста диаграма, винаги актуална

Екип, който сравнява групи, например онлайн и присъствени клиенти

Преди да започнете

  • Анкета в Survio с платен план. Webhooks не са налични във Free плана, а всеки план включва фиксиран брой Webhooks на анкета (вижте статията за webhooks).

  • Акаунт в n8n – n8n Cloud или self-hosted.

  • Google акаунт за Google Sheets.

В това ръководство използваме кратка анкета за удовлетвореност на клиентите: оценка със звезди, въпрос с избор „Като цяло, колко сте доволни?“, въпрос с избор „Как пазарувахте този път?“, свободен коментар и въпрос за имейл по желание. Вашата анкета може да изглежда различно – ще зададете собствените въпроси на стъпка 5.
​

Стъпка 1 – Подгответе листа

  1. Създайте нов Google Sheet и преименувайте първия раздел на responses.

  2. В първи ред въведете заглавия на колоните: Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language и Source.

Дръжте Response ID като първа колона. Това е уникалният идентификатор на Survio за всеки отговор. n8n го ползва, за да обнови ред вместо да добави дубликат при повторна доставка.

Стъпка 2 – Създайте Webhook в n8n

  1. В n8n създайте нов работен процес и добавете node Webhook като Trigger.

  2. Задайте HTTP метод на POST.

  3. Отидете на таб Production URL и копирайте адреса.

  4. Кликнете Публикувай. Production URL приема доставки едва след публикуване на workflow.

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

Използвайте Production URL, не Test URL. Test URL слуша само докато редакторът чака тестово събитие, затова доставките на Survio се провалят веднага щом бъде затворен. Survio прави повторни опити с неуспешен доставен webhook около ден; след 5 дни без успех изключва webhook-а.

Стъпка 3 – Свържете анкетата в Survio

  1. Отворете анкетата и изберете Получете отговори.

  2. В лявото меню под Автоматизации и интеграции изберете Webhooks и натиснете + Добавяне на webhook.

  3. Поставете Production URL от n8n в Webhook URL и натиснете Запази webhook. Webhook-ът се включва веднага.

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


​

Стъпка 4 – Изпратете тестов отговор и открийте идентификаторите на въпросите

  1. Отворете анкетата през публичния ѝ линк и изпратете един пълен отговор. Survio изпраща само попълнени отговори, така че минете до края.

  2. В n8n отворете таб Изпълнения. Доставката пристига за секунди.

  3. Oтвoрeтe изпълнението и изберете node Webhook. Разгънете body, после data, после answers. Всеки отговор включва question.id, етикет и answer.

  4. Запишете id на всеки желан за колона въпрос. Можете също да ползвате Pin, за да работите върху този отговор, без да попълвате анкетата отново.

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

Винаги избирайте отговори по question id. Отговорите пристигат като списък. Ако добавите въпрос, позициите се изместват и колоните ще се попълват погрешно. Идентификаторите не се променят.

Търсите имейла на респондента? Не използвайте data.email: то остава празно ако имейлът идва от въпрос за имейл или URL параметър. Вземете го от отговора на имейл въпроса, или от data.parameters.

Стъпка 5 – Превърнете всеки отговор в ред

Това става с два Nodes: Prepare row избира отговорите, а Save response to sheet ги записва в листа.

Prepare row

  1. Добавете node Edit Fields (Set) след Webhook-a и го кръстете Prepare row.

  2. Под Fields to Set добавете поле за всяка колона – с тип String. Името на полето трябва да съвпада напълно с името на колоната; стойностите са по-долу.

  3. Заменете question id-овете с Вашите собствени от стъпка 4 и уточнете правилната часова зона.

Име на поле

Стойност

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. Добавете node Google Sheets след Prepare row, преименувайте го на Save response to sheet и изберете операция Append or Update Row.

  2. Свържете Google акаунта си, после изберете съответния документ под Document и раздел responses под Sheet.

  3. Задайте Mapping Column Mode на Map Automatically и Column to match on на Response ID.

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

Защо отделна стъпка Prepare row? Когато смените лист или раздел в Google Sheets node, n8n изтрива съпоставянето на колоните. С изразите в Prepare row съответствията се запазват – Google Sheets node просто ги съпоставя по име.

Кликнете Публикувай отново. Промените, направени след публикуване, се изпълняват само след като отново публикувате работния процес.

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

Няколко уточнения относно тези изрази:

  • Въпросите с избор се връщат като { ids, labels, value }. labels[0] е текстът на избраната опция. За многовариантен въпрос използвайте labels.join(', ') за всички опции в една клетка. value съдържа свободния текст, ако има отговор „Друго“.

  • Датата и часът са в UTC. Изразът за Submitted ги преобразува в правилната часова зона, а Google Sheets разпознава тази стойност като дата/час и позволява сортиране или групиране.

  • URL параметри с тире като order-id трябва да се вземат с parameters['order-id']. Survio не допуска подчертавки в имена на параметрите.

  • Заглавието на анкетата не се изпраща с данните. Ако няколко анкети пишат в един лист, добавете колона Survey и поле Survey с името на анкетата в Prepare row.

Изпратете още един отговор. Нов ред ще се появи в листа Ви само след няколко секунди.

The responses tab in Google Sheets with one row per response


​

Случай А – Диаграма за отговорите

  1. Създайте таб с име report.

  2. Въведете Satisfaction в A1 и Responses в B1. В A2 до A6 избройте опциите за отговор, както са в анкетата.

  3. В B2 напишете =COUNTIF(responses!D:D,A2) и издърпайте формулата до B6.

  4. Изберете диапазона A1:B6 и стартирайте Вмъкни → Диаграма. Google Sheets ще предложи колонна диаграма. За смяна на заглавието използвайте Персонализиране → Заглавия на диаграми и оси.

Всеки нов отговор автоматично добавя ред към responses и броячът и диаграмата се обновяват от само себе си.
​

Случай B – Сравняване на групи със сводна таблица

  1. В раздел responses маркирайте таблицата и изберете Вмъкни → Сводна таблица, после Нов лист.

  2. Под Редове добавете Satisfaction. Към Стойности добавете Response ID и сменете Обобщение чрез на COUNTA.

  3. Използвайте Данни → Добавяне на нарезник и изберете колоната Channel. Изберете желаните стойности и потвърдете с OK. Ще видите резултат, подобен на горната сводна таблица.

Може да филтрирате по всяка колона: Channel (Ваш собствен въпрос), Language (езикът, на който е попълнена анкетата), Source (как е получен отговорът – напр. през директен линк или имейл покана) или Order ID.

Изборът в нарезника не се запазва за следващото отваряне. При всяко ново отваряне ще виждате всички стойности. За да съхраните селекция, задайте я за стандартна през менюто на нарезника.

Вземете готов работен процес

Вместо да създавате ръчно стъпки 2 и 5, изтеглете работния процес. Свалете файла survio-responses-to-google-sheets.json от прикачените материали и:

  1. В n8n създайте нов празен работен процес. В менюто (три точки до името) изберете Импортирай, след това От файл. Изберете сваления файл.

  2. Отворете Prepare row и заменете идентификаторите със собствените и часова зона.

  3. Отворете Save response to sheet. Ще се покаже червено предупреждение, докато всичко не е зададено. Свържете Google акаунта и изберете таблицата и раздел responses. n8n ще превключи Mapping Column Mode на Map Each Column Manually – върнете на Map Automatically и задайте Column to match on на Response ID.

  4. Отворете Survio Webhook, копирайте Production URL в Survio (стъпка 3) и натиснете Публикувай.

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

Тествайте пълния процес

  1. Изпратете отговор чрез анкетния линк. Нов ред ще се появи в responses за секунди.

  2. Проверете, че Response ID е попълнен. Това предотвратява дублиране.

  3. Вижте раздела Изпълнения в n8n. Всяка доставка и данни са там.

Отстраняване на проблеми

Симптом

Причина

Решение

В n8n не пристига нищо

В Survio е въведен Test URL или процесът не е публикуван

Поставете Production URL в Survio и натиснете Публикувай

Survio не приема Webhook URL от self-hosted n8n

n8n показва вътрешен, а не публичния адрес

Задайте WEBHOOK_URL с публичния https адрес и копирайте Production URL отново

"Listen for test event" не отчита нищо, макар анкетата да е попълнена

Survio изпраща към Production URL; listener гледа Test URL

Вижте таба Изпълнения

Последната промяна няма ефект

Процесът е публикуван, но промените не са (Публикувай е цветен)

Натиснете Публикувай отново

Същият отговор се дублира

Операция Append Row или не е зададена колона за съвпадение

Използвайте Append or Update Row по Response ID

Клетка е празна и се появява нова колона

Името на полето в Prepare row не съвпада с колоната

Преименувайте полето в Prepare row – идентично на заглавието. Изтрийте новата колона

Клетка показва [object Object]

Въпрос с избор е съпоставен без labels

Използвайте ?.answer?.labels?.[0]

Колоните се запълват с грешни отговори след редакция на анкетата

Отговорите се избират по позиция

Винаги избирайте по question id

Колоната за имейл е празна

Избрал е data.email

Вземете имейла от отговора на имейл въпрос или от параметър

Старите отговори липсват

Webhooks праща само нови отговори след създаване на Webhook

Експортирайте старите отговори от Survio и ги добавете

Survio изключва Webhook

Webhook URL е недостъпен 5 дни

Оправете причината и активирайте Webhook в Survio

Важно да знаете

  • Survio изпраща само попълнени отговори, по един запис, максимум за секунди.

  • Нищо не се изпраща със задна дата – липсват стари отговори и такива, подадени по време на пауза на Webhook-а.

  • Неуспешна доставка се пробва до 8 пъти в следващите 27 часа, всяка чака до 30 секунди. Съпоставянето по Response ID прави повторенията безобидни.

  • Ако 5 дни изпращанията се провалят, Survio изключва Webhook и трябва да го включите отново.

  • Пауза на Webhook запазва слота; изтриването му е окончателно.

  • Survio не пази лог на изпратеното. Използвайте таб Изпълнения в n8n.

  • Изпращането към Webhooks не намалява броя на отговорите според абонамента.

Искате да го настроим вместо Вас? В страницата Webhooks в Survio натиснете Вземете експертна настройка, опишете желаното, и нашият екип ще създаде, тества и предаде работещ Webhook.

Това отговори ли на въпроса ви?