Dla kogo jest to rozwiązanie?
Przypadek A – prosty, dla każdego: pojedynczy wykres z Twoich odpowiedzi, który aktualizuje się automatycznie po każdej nowej odpowiedzi.
Przypadek B – dla zespołów, które porównują grupy: tabela przestawna z możliwością filtrowania po kanale, języku lub dowolnej innej kolumnie.
Każda odpowiedź Twojej ankiety trafia jako nowy wiersz do Arkuszy Google natychmiast po jej przesłaniu. Na tej podstawie budujesz wykres albo tabelę przestawną tylko raz – od tego momentu raport odświeża się sam: nie musisz nic eksportować, kopiować danych ani czekać, aż ktoś przygotuje liczby.
Tak wygląda raport z Przypadku A: wykres, który automatycznie odświeża się po każdej kolejnej odpowiedzi:
A tak wygląda tabela przestawna z Przypadku B, z filtrowaniem po kanale przez segmentator:
Jak to działa. Survio wysyła każdą wypełnioną odpowiedź na adres webhooka. Narzędzie automatyzujące (tu: n8n) odbiera ją i zapisuje jako nowy wiersz w arkuszu. Survio wysyła, n8n zapisuje, a arkusz zajmuje się raportowaniem.
Dopiero zaczynasz z webhookami w Survio? Zacznij od Webhooks: wysyłaj odpowiedzi do swoich innych narzędzi w czasie rzeczywistym, a potem wróć tutaj.
Co zbudujesz
Oba raporty są zasilane tym samym ustawieniem: każda wypełniona odpowiedź staje się jednym wierszem na zakładce responses.
W skrócie | Przypadek A: jeden wykres | Przypadek B: raport według segmentu |
Efekt | Wykres z rozkładem odpowiedzi, aktualizowany po każdej nowej odpowiedzi | Tabela przestawna z możliwością filtrowania po kanale, języku lub dowolnej kolumnie |
Narzędzia | Survio, n8n, Google Sheets | Survio, n8n, Google Sheets (tabela przestawna i segmentator) |
Najlepsze dla | Mała firma, która chce mieć prosty wykres zawsze aktualny | Zespół porównujący grupy – np. klientów internetowych i stacjonarnych |
Co przygotować na start
Ankieta Survio na płatnym planie. Webhooki nie są dostępne w planie Free, a każdy plan pozwala na określoną liczbę webhooków na ankietę (zobacz artykuł o webhookach).
Konto w n8n, n8n Cloud lub własna instalacja.
Konto Google do Google Sheets.
W tym przewodniku używamy krótkiej ankiety satysfakcji klienta: ocena gwiazdkowa, pytanie zamknięte – jedna odpowiedź „Ogólnie jak bardzo jesteś zadowolony?”, pytanie zamknięte – jedna odpowiedź „Jak tym razem robiłeś zakupy?”, pole na komentarz tekstowy i e-mail jako opcjonalne pytanie. Twoja ankieta może wyglądać inaczej – pasujące pytania podłączasz w kroku 5.
Krok 1 – Przygotuj arkusz
Utwórz nowy arkusz Google i zmień nazwę pierwszej zakładki na
responses.W pierwszym wierszu wpisz nagłówki kolumn:
Response ID,Submitted,Rating (1-5),Satisfaction,Channel,What could we do better,E-mail,Order ID,LanguageorazSource.
Trzymaj Response ID jako pierwszą kolumnę. To unikalny identyfikator odpowiedzi z Survio. n8n korzysta z niego, aby zaktualizować istniejący wiersz zamiast dodać duplikat przy ponowieniu przesyłki.
Krok 2 – Stwórz webhook w n8n
W n8n stwórz nowy workflow i dodaj węzeł Webhook jako wyzwalacz.
Ustaw HTTP Method na POST.
Przejdź do zakładki Production URL i skopiuj adres.
Kliknij Publish. Production URL będzie działać dopiero po publikacji workflow.
Korzystaj z Production URL, nie Test URL. Test URL nasłuchuje tylko podczas gdy edytor czeka na zdarzenie testowe, przez co dostawy z Survio kończą się niepowodzeniem po zamknięciu okna. Survio powtarza nieudaną próbę przez ok. dobę, a po 5 dniach awarii wyłącza webhooka.
Krok 3 – Połącz ankietę w Survio
Otwórz ankietę i przejdź do Zbieranie odpowiedzi.
W lewym panelu pod Automatyzacje i integracje wybierz Webhooks i kliknij + Dodaj webhook.
Wklej Production URL z n8n do pola Webhook URL i kliknij Zapisz webhook. Webhook aktywuje się od razu.
Krok 4 – Wyślij testową odpowiedź i znajdź id pytań
Otwórz ankietę przez jej zwykły link i prześlij całą odpowiedź (Survio przesyła tylko ukończone odpowiedzi, więc klikaj do końca).
W n8n przejdź do zakładki Executions. Dostawa pojawi się w kilka sekund.
Otwórz wykonanie i kliknij węzeł Webhook. Rozwiń
body, następniedataianswers. Każda odpowiedź wyświetli swojequestion.id,labelianswer.Zanotuj id pytań, które chcesz mieć jako kolumny. Możesz też kliknąć Pin, by dalej budować w oparciu o tę odpowiedź bez ponownego wypełniania ankiety.
Zawsze wybieraj odpowiedzi po id pytania. Odpowiedzi przychodzą jako lista. Jeśli dodasz później pytanie w ankiecie, pozycje się przesuną i kolumny będą zawierać błędne odpowiedzi. Id pytania nigdy się nie zmieni.
Szukasz adresu e-mail respondenta? Nie używaj data.email: pole to jest puste, gdy e-mail pochodzi z pytania lub z parametru URL. Pobierz go z odpowiedzi na pytanie e-mail lub z data.parameters.
Krok 5 – Zamień odpowiedź na wiersz
Potrzebujesz dwóch węzłów: Prepare row wybiera odpowiedzi z odpowiedzi, a Save response to sheet zapisuje je do arkusza.
Prepare row
Dodaj węzeł Edit Fields (Set) po Webhook i zmień jego nazwę na
Prepare row.W Fields to Set dodaj pole na każdą kolumnę z arkusza i zostaw typ String. Nazwa musi być identyczna jak nagłówek kolumny, wartość to poniższy wyrażenie.
Zamień id pytań (z kroku 4) na swoje i Europe/Prague na swoją strefę czasową.
Nazwa pola | Wartość |
Response ID |
|
Submitted |
|
Rating (1-5) |
|
Satisfaction |
|
Channel |
|
What could we do better |
|
| |
Order ID |
|
Language |
|
Source |
|
Save response to sheet
Dodaj węzeł Google Sheets po Prepare row, nazwij go
Save response to sheeti wybierz operację Append or Update Row.Połącz swoje konto Google, wybierz Document (z listy lub przez ID klikając By ID) i zakładkę
responsesjako Sheet.Ustaw Mapping Column Mode na Map Automatically i w Column to match on wybierz Response ID.
Dlaczego osobny krok Prepare row? Jeśli zmienisz arkusz lub zakładkę w Google Sheets, n8n usuwa przypisania kolumn w tym węźle. Z formułami w Prepare row nic nie tracisz — węzeł Google Sheets tylko dopasowuje nazwy pól do nagłówków.
Kliknij Publish jeszcze raz. Zmiany po opublikowaniu workflow będą widoczne dopiero po ponownej publikacji.
Kilka szczegółów dotyczących tych formuł:
Pytania zamknięte przychodzą jako
{ ids, labels, value }.labels[0]to tekst wybranej opcji. W przypadku pytania wielokrotnego wyboru użyjlabels.join(', '), aby zebrać wszystkie odpowiedzi w jednej komórce.valueto tekst wpisany w „Inne”.Czasy przychodzą jako UTC. Wyrażenie Submitted przelicza czas na Twoją strefę, a Google Sheets traktuje to pole jak datę i godzinę, po których możesz sortować i grupować.
Parametry URL z myślnikiem (np.
order-id) wymagają składniparameters['order-id']. Survio nie pozwala na podkreślniki w nazwach parametrów.Tytuł ankiety nie jest wysyłany przez Survio. Jeśli kilka ankiet zapisuje do jednego arkusza, dodaj kolumnę Survey do arkusza i pole Survey z nazwą ankiety do Prepare row.
Wyślij kolejną odpowiedź. Nowy wiersz pojawi się w arkuszu w kilka sekund.
Przypadek A – Wykres odpowiedzi
Dodaj zakładkę
report.Wpisz
Satisfactionw A1, aResponsesw B1. W A2–A6 wpisz opcje odpowiedzi jak w ankiecie.W B2 wpisz
=COUNTIF(responses!D:D,A2), przeciągnij do B6.Zaznacz A1:B6 i wybierz Wstaw → Wykres. Google sugeruje wykres kolumnowy. Zmień tytuł w Dostosuj → Tytuły wykresu i osi.
Każda nowa odpowiedź dodaje wiersz w responses, a liczby i wykres odświeżają się automatycznie – jak na początku artykułu.
Przypadek B – Porównanie grup na tabeli przestawnej
Na zakładce
responseszaznacz całą tabelę i wybierz Wstaw → Tabela przestawna, następnie Nowy arkusz.Pod Wiersze wybierz Satisfaction, pod Wartości dodaj Response ID i zmień Podsumowanie z SUMA na LICZ.JEŻELI (COUNTA).
Wybierz Dane → Dodaj segmentator i wskaż kolumnę Channel. Zaznacz wartości do wyświetlenia i zatwierdź OK. Efekt będzie jak tabela przestawna z początku artykułu.
Możesz filtrować po dowolnej kolumnie: Channel (Twoje własne pytanie), Language (wersja językowa ankiety), Source (skąd przyszła odpowiedź, np. link lub zaproszenie e-mail) czy Order ID.
Twój wybór segmentatora nie zostaje zachowany przy ponownym otwarciu. Po otwarciu pliku filtr pokazuje wszystkie wartości. Jeśli chcesz zapisać wybór, ustaw go jako domyślny w menu segmentatora.
Pobierz gotowy workflow
Zamiast budować Kroki 2 i 5 ręcznie, zacznij od naszego workflow. Pobierz plik survio-responses-to-google-sheets.json z załączników na końcu artykułu, potem:
W n8n utwórz pusty workflow. Z menu (trzy kropki) przy nazwie wybierz Import, następnie From file. Wskaż pobrany plik.
Otwórz Prepare row i podstaw własne id pytań oraz swoją strefę czasową za Europe/Prague.
Otwórz Save response to sheet. Początkowo będzie pokazany ostrzegawczy trójkąt – podłącz konto Google i wybierz odpowiedni arkusz i zakładkę
responses. n8n automatycznie przełącza Mapping Column Mode na Map Each Column Manually – zmień na Map Automatically i wybierz Response ID do porównania.Otwórz Survio Webhook, skopiuj Production URL do Survio (krok 3) i kliknij Publish.
Sprawdź wszystko od początku do końca
Wyślij odpowiedź przez link do ankiety. Wiersz pojawi się na zakładce
responsesw kilka sekund.Sprawdź, czy Response ID jest uzupełnione – to chroni przed duplikatami.
Zajrzyj do zakładki Executions w n8n – znajdziesz tam wszystkie przesłane dane.
Rozwiązywanie problemów
Objaw | Przyczyna | Rozwiązanie |
Nic nie trafia do n8n | W Survio podano Test URL lub workflow nie jest opublikowany | Wklej Production URL do Survio i kliknij Publish |
Survio nie akceptuje adresu webhooka z własnej instancji n8n | n8n pokazuje adres wewnętrzny zamiast publicznego | Ustaw w n8n |
"Listen for test event" nie pokazuje nic po przesłaniu ankiety | Survio wysyła na Production URL, edytor obserwuje Test URL | Sprawdź zakładkę Executions |
Ostatnia zmiana nie działa | Workflow jest opublikowany, ale zmiana nie (przycisk Publish z kropką) | Kliknij Publish ponownie |
Ta sama odpowiedź pojawia się dwukrotnie | Wybrano Append Row lub brak kolumny do porównania | Ustaw Append or Update Row i porównuj po Response ID |
Kolumna zostaje pusta, na końcu pojawia się nowa | Nazwa pola w Prepare row różni się od nagłówka kolumny | Nazwij pole identycznie jak nagłówek i usuń niepotrzebną kolumnę |
W komórce widnieje [object Object] | Odpowiedź zamknięta zmapowana bez | Użyj |
Po edycji ankiety błędne odpowiedzi w kolumnach | Odpowiedzi wybrane według pozycji w liście | Używaj |
Kolumna E-mail jest pusta | Zmapowana z | Pobierz e-mail z odpowiedzi w pytaniu e-mail lub z parametru URL |
Brakuje odpowiedzi sprzed konfiguracji | Webhooki wysyłają tylko nowe odpowiedzi powstałe po ich utworzeniu | Wyeksportuj starsze odpowiedzi z Survio i wklej je ręcznie |
Survio wyłączyło webhooka | Adres webhooka był niedostępny przez 5 dni z rzędu | Napraw przyczynę i ponownie aktywuj webhook w Survio |
Warto wiedzieć
Survio wysyła tylko wypełnione odpowiedzi – pojedyncza wiadomość na jedną odpowiedź, w kilka sekund.
Nic nie jest wysyłane wstecznie: odpowiedzi sprzed powstania webhooka ani te z czasu gdy webhook był zatrzymany nie trafią do arkusza.
Nieudana dostawa jest powtarzana do 8 razy przez ok. 27 godzin, każda próba czeka do 30 sekund na odpowiedź. Porównywanie po Response ID sprawia, że powtórki są bezpieczne.
Jeśli dostawy nie udają się przez 5 dni z rzędu, Survio wyłącza webhooka i trzeba włączyć go ponownie.
Pauza webhooka zostawia jego wolne miejsce; usunięcie jest trwałe.
Survio nie zapisuje historii dostaw. Zakładka Executions w n8n to Twój log.
Wysyłanie odpowiedzi do webhooków nie wykorzystuje dodatkowych odpowiedzi z Twojego planu.
Wolisz, abyśmy zrobili to za Ciebie? W zakładce Webhooks w Survio kliknij Uzyskaj pomoc eksperta, napisz, co chcesz osiągnąć, a nasz zespół przygotuje, przetestuje i przekaże gotowy webhook.
