Passar para o conteúdo principal

Análises – Seus relatórios sempre atualizados: envie cada resposta do Survio direto para o Google Sheets

Mande automaticamente cada resposta concluída do Survio para uma planilha do Google. Depois, crie um gráfico ou uma tabela dinâmica em tempo real. Guia passo a passo com o n8n e um fluxo de trabalho pronto para baixar.

Escrito por Success Team Survio

Qual é o seu caso?

Caso A – para todos, de forma simples: um gráfico das suas respostas que se atualiza com cada nova resposta.

Caso B – para equipes que comparam grupos: uma tabela dinâmica que você pode filtrar por canal, idioma ou qualquer outra coluna.

Cada resposta que sua pesquisa coleta vira uma nova linha em uma planilha do Google no momento em que é enviada. Crie um gráfico ou uma tabela dinâmica sobre ela uma vez, e seu relatório se mantém sempre atualizado: sem exportar, sem copiar, sem esperar alguém preparar os números.
​

Este é o relatório que você recebe no Caso A, um gráfico atualizado a cada nova resposta:
​

The report tab with response counts and a column chart


​

E esta é a tabela dinâmica do Caso B, filtrada por canal com um segmentador:
​

Pivot table with a slicer on the Channel column

Como funciona. O Survio envia cada resposta concluída para uma URL de webhook. Uma ferramenta de automação (usamos o n8n neste guia) recebe e grava uma linha na sua planilha. O Survio faz o envio, o n8n faz o registro, e a planilha faz a geração do relatório.

Novo em webhooks no Survio? Comece por Webhooks: envie respostas para suas outras ferramentas em tempo real e depois volte aqui.
​

O que você vai criar

Os dois relatórios são alimentados pelo mesmo setup: cada resposta concluída vira uma linha na aba chamada responses.

Resumo

Caso A: um gráfico

Caso B: relatório por segmento

Resultado

Um gráfico de como as respostas estão distribuídas, atualizado com cada nova resposta

Uma tabela dinâmica que você pode filtrar por canal, idioma ou qualquer outra coluna

Ferramentas

Survio, n8n, Google Sheets

Survio, n8n, Google Sheets (tabela dinâmica e segmentador)

Ideal para

Uma pequena empresa que quer um gráfico simples que esteja sempre atualizado

Uma equipe que compara grupos, por exemplo clientes online e na loja física

Antes de começar

  • Uma pesquisa Survio em um plano pago. Webhooks não estão disponíveis no plano Free, e cada plano permite um número definido de webhooks por pesquisa (veja o artigo sobre webhooks).

  • Uma conta n8n – na nuvem ou auto-hospedada.

  • Uma conta Google para o Google Sheets.

Neste guia usamos uma pesquisa curta de satisfação do cliente: classificação por estrelas, uma pergunta "No geral, quão satisfeito você está?", uma "Como você comprou desta vez?", comentário aberto e uma pergunta de e-mail opcional. A sua pesquisa pode ser diferente; você vai mapear suas próprias perguntas no Passo 5.
​

Passo 1 — Prepare a planilha

  1. Crie uma nova planilha do Google e renomeie a primeira aba para responses.

  2. Na linha 1, digite os cabeçalhos das colunas. Usamos Response ID, Submitted, Rating (1-5), Satisfaction, Channel, What could we do better, E-mail, Order ID, Language e Source.

Mantenha Response ID como a primeira coluna. É o identificador exclusivo do Survio para cada resposta. O n8n usa isso para atualizar a linha existente em vez de adicionar uma duplicada quando ocorre uma nova tentativa de entrega.

Passo 2 — Crie o webhook no n8n

  1. No n8n, crie um novo fluxo de trabalho e adicione o nó Webhook como gatilho.

  2. Defina HTTP Method como POST.

  3. Vá para a aba Production URL e copie o endereço.

  4. Clique em Publish. A Production URL só aceita entregas após a publicação do fluxo.

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

Use a Production URL, nunca a Test URL. A Test URL só funciona enquanto o editor está aguardando um evento de teste, então as entregas do Survio falham assim que você fecha o editor. O Survio tenta novamente a entrega por cerca de um dia, e depois de 5 dias de falha ele desativa o webhook.

Passo 3 — Conecte a pesquisa no Survio

  1. Abra sua pesquisa e vá em Coletar respostas.

  2. Na barra lateral à esquerda, em Automatizações & Integrações, selecione Webhooks e clique em + Adicionar um webhook.

  3. Cole a Production URL do n8n no campo Webhook URL e clique em Salvar webhook. O webhook é ativado imediatamente.

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


​

Passo 4 — Envie uma resposta de teste e encontre os ids das suas perguntas

  1. Abra sua pesquisa pelo link normal e envie uma resposta completa. O Survio só envia respostas completas, então finalize até o fim.

  2. No n8n, abra a aba Executions. A entrega chega em alguns segundos.

  3. Abra a execução e clique no nó Webhook. Expanda body, depois data e então answers. Cada resposta mostra seu question.id, o label da pergunta e a answer.

  4. Anote o id de cada pergunta que você quer inserir como coluna. Você também pode clicar em Pin para continuar usando essa resposta sem ter que enviar outra vez a pesquisa.

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

Sempre capture respostas pelo id da pergunta. As respostas chegam em uma lista. Se você adicionar uma pergunta depois, as posições mudam e suas colunas podem preencher com as respostas erradas. O id da pergunta nunca muda.

Procurando pelo e-mail do respondente? Não use data.email: ele fica vazio se o e-mail vier de uma pergunta ou de um parâmetro na URL. Pegue o e-mail da resposta da pergunta de e-mail, ou de data.parameters.

Passo 5 — Transforme cada resposta em uma linha

Use dois nós: Prepare row para extrair as respostas e Save response to sheet para gravar tudo na planilha.

Prepare row

  1. Adicione um nó Edit Fields (Set) após o nó Webhook e renomeie para Prepare row.

  2. Em Fields to Set, coloque um campo para cada coluna e mantenha como String. O nome do campo deve ser igual ao cabeçalho da coluna; o valor é a expressão abaixo.

  3. Substitua os ids das perguntas pelos ids que você anotou no Passo 4, e ajuste Europe/Prague para seu fuso horário.

Nome do campo

Valor

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. Adicione um nó Google Sheets após o Prepare row, renomeie para Save response to sheet e escolha a operação Append or Update Row.

  2. Conecte sua conta Google, depois selecione sua planilha em Document (da lista ou colando o ID em By ID) e a aba responses em Sheet.

  3. Defina Mapping Column Mode como Map Automatically e Column to match on como Response ID.

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

Por que preparar a linha separadamente? Quando você escolhe outra planilha ou aba no nó Google Sheets, o n8n apaga o mapeamento das colunas. Com as expressões em Prepare row, nada é perdido: o Google Sheets só conecta nome do campo com cabeçalho da coluna.

Clique em Publish novamente. Alterações feitas após publicar só entram em vigor quando você publica de novo.

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

Alguns detalhes sobre essas expressões:

  • Perguntas de escolha chegam como { ids, labels, value }. labels[0] é o texto selecionado. Para múltipla escolha, use labels.join(', ') para colocar todas as opções selecionadas em uma célula só. value armazena o texto escrito em "Outro".

  • Os horários chegam em UTC. A expressão Submitted converte para seu fuso horário, e o Google Sheets reconhece a coluna como data/hora para você ordenar e agrupar.

  • Parâmetros de URL com hífen no nome, como order-id, precisam usar a forma parameters['order-id']. O Survio não aceita underscore em nomes de parâmetros.

  • O título da pesquisa não vai nos dados enviados pelo Survio. Se várias pesquisas escrevem na mesma planilha, adicione uma coluna Pesquisa à planilha e um campo Survey ao Prepare row com o nome da pesquisa.

Envie outra resposta. Uma nova linha aparece na planilha em segundos.

The responses tab in Google Sheets with one row per response


​

Caso A — Gere um gráfico das respostas

  1. Adicione uma aba chamada report.

  2. Digite Satisfaction em A1 e Responses em B1. Em A2 até A6, coloque as opções exatamente como estão na sua pesquisa.

  3. Em B2, insira =COUNTIF(responses!D:D,A2) e copie até B6.

  4. Selecione de A1 a B6 e escolha Inserir → Gráfico. O Google Sheets sugere um gráfico de colunas. Para mudar o título, vá em Personalizar → Títulos de gráfico e eixo.

Cada nova resposta adiciona uma linha a responses, e as contagens e o gráfico são atualizados automaticamente, igual ao exemplo no topo do artigo.
​

Caso B — Compare grupos com uma tabela dinâmica

  1. Na aba responses, selecione a tabela e use Inserir → Tabela dinâmica, depois Nova planilha.

  2. Em Linhas, adicione Satisfaction. Em Valores, coloque Response ID e mude Resumir por de SOMA para CONT.VALORES (COUNTA).

  3. Escolha Dados → Adicionar segmentador e selecione a coluna Channel. Selecione os valores e confirme em OK. O resultado será parecido com a tabela dinâmica mostrada no início deste artigo.

Você pode segmentar por qualquer coluna: Channel (pergunta sua), Language (idioma em que o respondente respondeu na pesquisa), Source (como a resposta foi enviada, por exemplo link direto ou convite por e-mail) ou Order ID.

Uma seleção de segmentador não fica salva para a próxima visita. Quando abrir o arquivo novamente, o segmentador mostra todos os valores. Para manter uma seleção, salve como padrão no menu do segmentador.

Baixe o fluxo de trabalho pronto

Em vez de criar os Passos 2 e 5 manualmente, comece com nosso fluxo pronto. Baixe o arquivo survio-responses-to-google-sheets.json nos anexos no fim deste artigo, depois:

  1. No n8n, crie um fluxo de trabalho vazio. Abra o menu (três pontos) ao lado do nome do fluxo e escolha Importar, depois De arquivo. Selecione o arquivo baixado.

  2. Abra Prepare row e altere os ids das perguntas e o fuso horário conforme necessário.

  3. Abra Save response to sheet. Ele exibe um símbolo de alerta vermelho até você configurar. Conecte sua conta Google, escolha a planilha e a aba responses. O n8n muda Mapping Column Mode para Map Each Column Manually: volte para Map Automatically e defina Column to match on como Response ID.

  4. Abra Survio Webhook, copie a Production URL para o Survio (Passo 3) e clique em Publish.

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

Teste o processo do início ao fim

  1. Envie uma resposta pelo link da pesquisa. Uma linha aparece na aba responses em segundos.

  2. Confira se o Response ID foi preenchido. É isso que evita duplicidade.

  3. Veja a aba Executions no n8n. Todas as entregas e dados aparecem lá.

Solução de problemas

Sintoma

Causa

Correção

Nada chega no n8n

A Test URL está no Survio ou o fluxo não foi publicado

Copie a Production URL no Survio e clique em Publish

O Survio não salva a URL do webhook de um n8n auto-hospedado

O n8n mostra um endereço interno em vez do público

Defina o parâmetro WEBHOOK_URL do n8n para seu endereço https público e copie a URL de novo

"Listen for test event" não mostra nada mesmo após enviar a pesquisa

O Survio envia para a Production URL; o modo ouvir monitora a Test URL

Consulte a aba Executions

Sua última alteração não teve efeito

O fluxo foi publicado, mas a alteração ainda não (Publish mostra um ponto)

Clique em Publish novamente

A mesma resposta aparece duas vezes

A operação está definida como Append Row, ou nenhuma coluna de correspondência

Use Append or Update Row e corresponda pela Response ID

Uma coluna fica vazia e surge uma coluna extra no fim da planilha

O nome do campo no Prepare row não corresponde exatamente ao cabeçalho

Renomeie o campo no Prepare row igual ao cabeçalho e apague a coluna extra

Uma célula mostra [object Object]

Uma resposta de escolha foi mapeada sem labels

Use ?.answer?.labels?.[0]

Colunas mostram respostas erradas após editar a pesquisa

Respostas mapeadas pela posição na lista

Mapeie pelo question.id

Coluna E-mail fica vazia

Mapeou a partir de data.email

Pegue o e-mail da resposta da pergunta ou de um parâmetro da URL

Respostas de antes do setup estão ausentes

Webhooks só enviam respostas enviadas após sua criação

Exporte as respostas antigas do Survio e cole manualmente

O Survio desativou o webhook

A URL do webhook falhou por 5 dias seguidos

Corrija o problema e ative o webhook de novo no Survio

Informações importantes

  • O Survio envia apenas respostas concluídas, uma mensagem por resposta, em segundos.

  • Nada é enviado retroativamente: nem respostas de antes da criação do webhook, nem durante pausas.

  • Uma entrega com falha é reenviada até 8 vezes em cerca de 27 horas, e cada tentativa espera até 30 segundos. Usar Response ID torna tentativas repetidas inofensivas.

  • Se falhar por 5 dias seguidos, o Survio desativa o webhook e será necessário ativar novamente.

  • Pausar mantém o slot do webhook, excluir remove de vez.

  • O Survio não mantém registro de entregas na aplicação. Use a aba Executions do n8n como log.

  • Enviar respostas por webhook não consome respostas a mais do seu plano.

Prefere que a gente configure para você? Na página de Webhooks do Survio, clique em Obter configuração com especialista, explique o que gostaria de fazer e nossa equipe monta, testa e entrega um webhook funcionando para você.

Respondeu à sua pergunta?