Перейти до основного контенту

Аналітика – звіти оновлюються автоматично: надсилайте кожну відповідь Survio у Google Sheets

Автоматично передавайте кожну завершену відповідь з Survio у Google Sheets та будуйте на їх основі інтерактивні діаграми чи зведені таблиці. Покрокова інструкція для n8n з готовим до застосування робочим процесом.

Автор: Success Team Survio

Для кого це рішення?

Випадок A — універсальний, для всіх: одна інтерактивна діаграма відповідей, яка самостійно оновлюється із кожною новою відповіддю.

Випадок B — для команд, які порівнюють аудиторії: зведена таблиця з можливістю фільтрувати за каналом, мовою чи будь-якою іншою колонкою.

Кожна відповідь на ваше опитування миттєво з’являється в новому рядку Google Sheets. Створіть діаграму або зведену таблицю один раз — і ваш звіт завжди буде актуальним автоматично: без експорту, копіювання чи додаткового очікування на підготовку результатів.
​

Ось як виглядає звіт для випадку A — діаграма, що одразу оновлюється з кожною новою відповіддю:
​

The report tab with response counts and a column chart


​

А це приклад зведеної таблиці для випадку B, відфільтрованої за каналом за допомогою зрізу:
​

Pivot table with a slicer on the Channel column

Як це працює. Survio надсилає кожну завершену відповідь на URL Вебхука. Автоматизація (у цій інструкції використовується n8n) отримує відповідь і додає новий рядок у вашу таблицю. Survio надсилає, n8n фіксує — звіт формується автоматично.

Вперше стикаєтеся з Вебхуками у Survio? Почніть з Вебхуки: надсилайте відповіді у ваші інструменти в реальному часі, після чого поверніться до цієї інструкції.
​

Що ви отримаєте

Обидва типи звітів працюють за однаковим принципом: кожна завершена відповідь — окремий рядок на вкладці responses.

Загалом

Випадок A: одна діаграма

Випадок B: звіт по сегментах

Результат

Динамічна діаграма з розподілом відповідей

Зведена таблиця з фільтрами за каналом, мовою чи іншими колонками

Інструменти

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (зведена таблиця та зріз)

Рекомендовано для

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

Команди, які порівнюють аудиторії — наприклад, онлайн і офлайн клієнтів

Перед початком

  • Опитування Survio на платному тарифі. Вебхуки недоступні на Free, і обсяг доступних Вебхуків залежить від тарифного плану (див. статтю про Вебхуки).

  • Активний акаунт n8n — у хмарі або з власним хостингом.

  • Google-акаунт для доступу до Google Sheets.

У цій інструкції ми розглядаємо коротке опитування із зірковим рейтингом, питаннями на кшталт "Загалом, наскільки ви задоволені?", способом покупки, відкритим полем для коментаря та необов’язковим e-mail. Ваше опитування може відрізнятися; на кроці 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 — Створіть Вебхук у n8n

  1. У n8n створіть новий робочий процес і додайте вузол Webhook як тригер.

  2. У полі HTTP Method виберіть POST.

  3. Перейдіть на вкладку Production URL і скопіюйте адресу.

  4. Натисніть Publish. Production URL приймає дані лише коли робочий процес опубліковано.

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 ще спробує переслати невдалі повідомлення протягом доби, а якщо протягом 5 днів доставки не вдаються — Вебхук буде вимкнено.

Крок 3 — Підключіть опитування у Survio

  1. Відкрийте своє опитування й оберіть розділ Отримати відповіді.

  2. У лівому меню під Автоматизації та інтеграції натисніть Вебхуки і далі + Додати Вебхук.

  3. Вставте Production URL n8n у Webhook URL і натисніть Зберегти Вебхук. Вебхук активується одразу.

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


​

Крок 4 — Надішліть тестову відповідь і знайдіть ідентифікатори питань

  1. Перейдіть за посиланням на опитування і заповніть його до кінця — Survio надсилає лише завершені відповіді.

  2. У n8n перейдіть до Executions. Доставка з’явиться через кілька секунд.

  3. Відкрийте виконання, натисніть Webhook, перегорніть body, потім data і answers — тут видно question.id, label та answer для кожного питання.

  4. Запишіть ідентифікатори потрібних полів; можна натиснути Pin, щоб закріпити цю відповідь та не повторювати заповнення.

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

Обирайте відповіді за ідентифікатором питання. Відповіді завжди приходять списком; якщо додати нове питання — порядок зміниться, а ідентифікатори залишатимуться незмінними.

Потрібна e-mail адреса респондента? Не використовуйте data.email: це поле буде порожнім, якщо e-mail введено як відповідь або надано через URL. Читайте адресу безпосередньо з відповіді на питання або з data.parameters.

Крок 5 — Перетворіть кожну відповідь на рядок

Треба дві ланки: Підготувати рядок витягає потрібні дані, а Зберегти відповідь до таблиці записує їх у Google Sheets.

Підготувати рядок

  1. Додайте після Webhook вузол Edit Fields (Set) і назвіть його Підготувати рядок.

  2. У Fields to Set додайте поля для кожної колонки, тип залиште String. Назва — ідентична заголовку колонки; значення — вираз (дивіться нижче).

  3. Підставте власні ідентифікатори питань та відповідний часовий пояс замість Europe/Prague.

Назва поля

Значення

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


​

Зберегти відповідь до таблиці

  1. Додайте після вузла Підготувати рядок вузол Google Sheets, назвіть його Зберегти відповідь до таблиці і оберіть Append or Update Row.

  2. Підключіть свій Google-акаунт, у Document оберіть потрібну таблицю або введіть ID вручну, а у Sheet зазначте responses.

  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

Навіщо окремий вузол Підготувати рядок? Якщо обрати іншу таблицю або вкладку у вузлі Google Sheets — n8n скидає карту колонок у цьому вузлі. Вирази, розміщені у Підготувати рядок, зберігаються: Google Sheets співставляє дані за назвами полів.

Натисніть Publish ще раз. Зміни, внесені після публікації, стануть активними лише після повторного публікування.

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 не допускає підкреслення у назвах параметрів.

  • Назва опитування не передається з Survio. Якщо кілька опитувань надсилають у ту саму таблицю — додайте колонку Survey і вкажіть її вручну у Підготувати рядок.

Відправте ще одну тестову відповідь — новий рядок з’явиться у Google Sheets за декілька секунд.

The responses tab in Google Sheets with one row per response


​

Випадок A — діаграма відповідей

  1. Створіть вкладку із назвою report.

  2. В осередку A1 напишіть Satisfaction, у B1 — Responses. У A2–A6 перелічіть можливі варіанти відповідей із вашого опитування.

  3. У B2 впишіть формулу =COUNTIF(responses!D:D,A2) і протягніть її до B6.

  4. Виділіть діапазон A1:B6 і оберіть Вставка → Діаграма. Google Sheets запропонує стовпчикову діаграму. Щоб змінити назву, використайте Налаштувати → Назви схем й осей.

Кожна нова відповідь додається у responses, а статистика і діаграма оновлюються автоматично, як показано на початку інструкції.
​

Випадок B — аналіз груп у зведеній таблиці

  1. На вкладці responses виділіть таблицю й оберіть Вставка → Зведена таблиця, далі Нова таблиця.

  2. У Рядки додайте Satisfaction, у Значення — Response ID, змініть Підсумувати за із SUM на COUNTA.

  3. Оберіть Дані → Додати зріз, зазначте Channel та підтвердьте ОК. Вийде зведена таблиця, як на початку прикладу.

Фільтруйте звіт за будь-якою колонкою: Channel (ваше питання), Language (на якій мові респондент проходив опитування), Source (наприклад, пряме посилання чи e-mail-запрошення) або Order ID.

Обране у зрізі не зберігається після закриття файлу. Після повторного відкриття будуть показані всі варіанти. Щоб зафіксувати обране, призначте його типовим у меню зрізу.

Завантажте готовий робочий процес

Щоб не налаштовувати кроки 2 та 5 вручну, скористайтеся готовим шаблоном. Завантажте файл survio-responses-to-google-sheets.json з вкладень, далі:

  1. У n8n створіть порожній робочий процес. Відкрийте меню (три крапки біля назви), виберіть Імпорт, потім Із файлу і вкажіть завантажений файл.

  2. Відкрийте вузол Підготувати рядок і замініть ідентифікатори питань та часовий пояс на свої.

  3. Перейдіть до Зберегти відповідь до таблиці. Побачите попередження — це нормально до завершення налаштування. Підключіть акаунт 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), потім натисніть Publish.

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

Перевірте наскрізну інтеграцію

  1. Відправте відповідь через посилання на опитування — рядок з’явиться у responses за кілька секунд.

  2. Перевірте, чи Response ID заповнений — саме він захищає від дублювання.

  3. Перейдіть до Executions у n8n, щоб побачити всі події та дані.

Як усунути типові проблеми

Симптом

Причина

Рішення

У n8n нічого не приходить

У Survio вказано Test URL або робочий процес не опубліковано

Скопіюйте Production URL у Survio й натисніть Publish

Survio не приймає Вебхук із самохостингового n8n

n8n відображає внутрішню адресу, а не публічну

Додайте в n8n параметр WEBHOOK_URL із публічною https-адресою й скопіюйте URL знову

Вікно "Прослухати тестову подію" порожнє, хоча анкету заповнено

Survio надсилає на Production URL, а слухаєте Test URL

Перевірте вкладку Executions

Останні зміни не працюють

Робочий процес опубліковано, але зміни не збережено (кнопка Publish з крапкою)

Натисніть Publish ще раз

Відповідь дублюється у таблиці

Обрана дія Append Row, або не вказано співставлення по колонці

Оберіть Append or Update Row та співставте по Response ID

Колонка лишається порожньою, а наприкінці додалася зайва колонка

Назва у Підготувати рядок не співпадає із заголовком

Перейменуйте поле у Підготувати рядок згідно із заголовком і видаліть зайву колонку

У клітинці з'являється [object Object]

Відповідь із вибором додана без labels

Використовуйте ?.answer?.labels?.[0]

Після редагування анкети колонки зміщені

Відповіді взяті по позиції у списку

Орієнтуйтеся по question.id

Колонка E-mail порожня

Мапінг з data.email

Читати e-mail з відповіді або з URL-параметра

Відповіді, зібрані до налаштування, відсутні

Вебхуки працюють тільки для нових відповідей після підключення

Експортуйте попередні з Survio вручну

Survio відключив Вебхук

URL Вебхука був недоступний 5 днів

Виправте причину і знову активуйте Вебхук у Survio

Що важливо знати

  • Survio надсилає лише завершені відповіді, окремим повідомленням для кожної, практично миттєво.

  • Відповіді не надсилаються заднім числом: ні зібрані до створення Вебхука, ні під час перерви.

  • При невдачі доставка повторюється до 8 разів протягом близько 27 годин; кожна спроба чекає до 30 секунд. Перевірка по Response ID гарантує, що дублікати не з’являться.

  • Якщо жодна доставка не вдалася за 5 днів — Survio відключає Вебхук і його треба активувати знову.

  • Після паузи Вебхук зберігається; після видалення — ні.

  • Survio не зберігає історію доставок у додатку. Вся історія — на вкладці Executions у n8n.

  • Надсилання відповідей через Вебхуки не впливає на ліміти по вашому тарифу.

Потрібна допомога з налаштуванням? На сторінці Вебхуків у Survio натисніть Отримати експертне налаштування, опишіть ваші потреби — і наша команда все налаштує, перевірить і передасть готовий Вебхук вам.

Ви отримали відповідь на своє запитання?