Ir para conteúdo principal

Análises – Os relatórios são atualizados automaticamente: envie todas as respostas do Survio para o Google Sheets

Envie de forma automática cada resposta concluída do Survio para uma folha do Google Sheets e construa um gráfico ou uma tabela dinâmica com base nesses dados. Siga este guia passo a passo com n8n e utilize um workflow pronto para download.

Escrito por Success Team Survio

Qual é a sua necessidade?

Caso A – solução simples, para qualquer situação: um gráfico das respostas, atualizado automaticamente sempre que uma nova resposta chega.

Caso B – para equipas que analisam diferentes grupos: uma tabela dinâmica que pode ser filtrada por canal, idioma ou qualquer outra coluna.

Cada resposta que o seu inquérito Survio recolhe é inserida automaticamente como uma nova linha numa folha do Google Sheets assim que é submetida. Construa um gráfico ou uma tabela dinâmica sobre ela apenas uma vez e o relatório ficará sempre atualizado: não precisa de exportar, copiar ou esperar que alguém prepare os números.
​

Este é o relatório do Caso A, um gráfico que se atualiza a cada nova resposta:
​

The report tab with response counts and a column chart


​

Este é o exemplo do Caso B, uma tabela dinâmica filtrada por canal com recurso de fatiador:
​

Pivot table with a slicer on the Channel column

Como funciona. O Survio envia cada resposta completa para um URL de webhook. Uma ferramenta de automação (utilizamos o n8n neste guia) recebe a resposta e grava uma linha na folha. O Survio faz o envio, o n8n grava e a folha faz o relatório.

É novo nos webhooks do Survio? Comece por Webhooks: envie respostas para as suas outras ferramentas em tempo real antes de regressar aqui.
​

O que vai construir

Ambos os relatórios baseiam-se na mesma configuração: cada resposta concluída transforma-se numa linha no separador responses.

Resumo rápido

Caso A: um gráfico

Caso B: relatório por segmento

Resultado

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

Uma tabela dinâmica que pode ser filtrada por canal, idioma ou qualquer outra coluna

Ferramentas

Survio, n8n, Google Sheets

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

Ideal para

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

Uma equipa que compara grupos, por exemplo, clientes online e em loja física

Antes de começar

  • Um inquérito Survio num plano pago. Os webhooks não estão disponíveis no plano Free e cada plano permite um número definido de webhooks por inquérito (consulte o artigo sobre webhooks).

  • Uma conta n8n (n8n Cloud ou auto-hospedado).

  • Conta Google para Google Sheets.

Neste guia usamos um breve inquérito de satisfação do cliente: classificação por estrelas, uma pergunta de escolha—"No geral, quão satisfeito está?", "Como efetuou a compra desta vez?"—, campo de comentário aberto e pergunta de e-mail opcional. O seu inquérito pode variar; faça o mapeamento das perguntas no passo 5.
​

Passo 1 — Preparar a folha

  1. Crie uma nova folha no Google Sheets e renomeie o primeiro separador como responses.

  2. Na linha 1, escreva os nomes 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 único do Survio para cada resposta. O n8n utiliza para atualizar a linha existente, em vez de adicionar uma duplicada caso a entrega seja repetida.

Passo 2 — Criar o webhook no n8n

  1. No n8n, crie um novo workflow e adicione um nó Webhook como gatilho.

  2. Defina o Método HTTP como POST.

  3. Mude para o separador Production URL e copie o endereço.

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

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

Use sempre o Production URL, não o Test URL. O Test URL só funciona enquanto o editor aguarda um teste, por isso as entregas do Survio falham assim que o editor for fechado. O Survio tenta reenviar a entrega durante cerca de um dia; após 5 dias de falhas, desativa o webhook.

Passo 3 — Ligar o inquérito no Survio

  1. Abra o seu inquérito e vá a Recolher respostas.

  2. Na barra lateral esquerda, em Automations & Integrations, selecione Webhooks e clique em + Adicionar um webhook.

  3. Cole o Production URL do n8n em URL do Webhook e clique em Salvar webhook. O webhook é ativado de imediato.

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 identifique os IDs das perguntas

  1. Abra o inquérito pelo link normal e submeta uma resposta completa. O Survio só envia respostas completas, por isso vá até ao fim.

  2. No n8n, abra o separador Execuções. A entrega chega em poucos segundos.

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

  4. Anote o ID de cada pergunta que quiser como coluna. Também pode clicar em Pin para continuar a configurar sem reenviar o inquérito.

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

Escolha sempre as respostas pelo ID da pergunta. As respostas chegam sob a forma de lista. Se adicionar uma pergunta ao inquérito mais tarde, as posições mudam e pode preencher colunas erradas. O ID da pergunta nunca muda.

Procura o e-mail do respondente? Não use data.email: fica vazio se o e-mail vier de uma pergunta ou parâmetro no URL. Leia a resposta à pergunta de e-mail ou veja em data.parameters.

Passo 5 — Transforme cada resposta numa linha

Isto requer dois nós: Prepare row extrai as respostas, e Save response to sheet grava-as na folha.

Prepare row

  1. Adicione um nó Edit Fields (Set) depois do Webhook e renomeie-o para Prepare row.

  2. Em Fields to Set, adicione um campo para cada coluna e mantenha o tipo String. O nome tem que corresponder exatamente ao cabeçalho; o valor é a expressão abaixo.

  3. Substitua os IDs das perguntas (90403153 etc.) pelos IDs anotados no passo 4 e Europe/Prague pelo seu fuso.

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 depois do Prepare row, renomeie para Save response to sheet e escolha a operação Append or Update Row.

  2. Ligue a sua conta Google e, em Document, escolha a folha (da lista, ou cole o ID em By ID) e o separador 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 um passo separado Prepare row? Sempre que selecionar outra folha ou separador no nó Google Sheets, o n8n apaga o mapeamento das colunas desse nó. Ao usar as expressões em Prepare row, nada se perde: o Google Sheets só faz a correspondência de nomes de campo com os cabeçalhos.

Clique em Publish novamente. As alterações feitas depois da publicação só ficam ativas após clicar de novo em Publish.

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

Algumas observações sobre as expressões utilizadas:

  • Perguntas de escolha chegam como { ids, labels, value }. labels[0] mostra o texto assinalado. Para perguntas de escolha múltipla, use labels.join(', ') para juntar tudo numa célula. value é o texto da opção "Outra".

  • As datas e horas vêm em UTC. A expressão Submitted converte para o seu fuso horário, e o Google Sheets trata a coluna como data/hora para ordenar e agrupar.

  • Parâmetros de URL com hífen (ex: order-id) precisam do formato entre colchetes: parameters['order-id']. O Survio não permite underscores em parâmetros.

  • O título do inquérito não está presente nos dados enviados pelo Survio. Se vários inquéritos escreverem na mesma folha, adicione uma coluna “Inquérito” e crie um campo correspondente no Prepare row.

Submeta outra resposta. Surge uma nova linha na folha em poucos segundos.

The responses tab in Google Sheets with one row per response


​

Caso A — Gráfico das respostas

  1. Adicione um separador chamado report.

  2. Escreva Satisfaction em A1 e Responses em B1. Em A2 a A6, insira as opções exatamente como aparecem no seu inquérito.

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

  4. Selecione A1:B6 e escolha Inserir → Gráfico. O Google Sheets sugere um gráfico de colunas. Para alterar o título, vá a Personalizar → Títulos do gráfico e dos eixos.

A cada nova resposta, uma linha é acrescentada ao separador responses e as contagens e o gráfico são atualizados automaticamente, como no início deste artigo.
​

Caso B — Comparar grupos com tabela dinâmica

  1. No separador responses, selecione a tabela e escolha Inserir → Tabela dinâmica, depois Nova folha.

  2. Em Linhas, adicione Satisfaction. Em Valores, adicione Response ID e mude Resumir por de SUM para COUNTA.

  3. Vá a Dados → Adicionar um fatiador e selecione a coluna Channel. Selecione os valores pretendidos e confirme com OK. O relatório ficará como o exemplo deste artigo.

Pode filtrar por qualquer coluna: Channel (a sua pergunta), Language (idioma do inquérito), Source (origem da resposta, como link direto ou convite por e-mail) ou Order ID.

A seleção do fatiador não é guardada para próximas visitas. Ao reabrir o ficheiro, o fatiador mostra todos os valores. Para manter uma seleção, defina-a como padrão no menu do fatiador.

Obter workflow pronto

Em vez de construir manualmente os passos 2 e 5, faça download do nosso workflow. Baixe o ficheiro survio-responses-to-google-sheets.json nos anexos ao fim deste artigo e siga:

  1. No n8n, crie um workflow em branco. Abra o menu (três pontos ao lado do nome) e selecione Importar, depois De ficheiro. Selecione o ficheiro descarregado.

  2. Abra o nó Prepare row e substitua os IDs das perguntas pelos seus e Europe/Prague pelo seu fuso horário.

  3. Abra Save response to sheet. Aparece um aviso a vermelho até configurar. Ligue a sua conta Google e escolha a folha e o separador responses. O n8n muda Mapping Column Mode para Map Each Column Manually; volte a Map Automatically e selecione Column to match on como Response ID.

  4. Abra Survio Webhook, copie o 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

Testar tudo de ponta a ponta

  1. Submeta uma resposta pelo link do inquérito. Aparece uma linha no separador responses em segundos.

  2. Verifique se a coluna Response ID está preenchida. É isso que previne duplicados.

  3. No n8n, confira o separador Execuções. Ficam registadas todas as entregas e respetivos dados.

Resolução de problemas

Sintoma

Causa

Solução

Nada chega ao n8n

Está a usar o Test URL no Survio ou o workflow não foi publicado

Copie o Production URL para o Survio e clique em Publish

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

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

Defina a variável WEBHOOK_URL do n8n para o endereço público https e copie o URL de novo

"Listen for test event" não mostra nada após submeter o inquérito

Survio envia para o Production URL; o listener ouve só o Test URL

Veja antes o separador Execuções

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

O workflow estava publicado, mas a alteração não (o botão Publish mostra um ponto)

Clique em Publish novamente

A mesma resposta aparece duas vezes

A operação está como Append Row, ou não tem coluna para corresponder

Use Append or Update Row e combine pelo Response ID

Uma coluna fica vazia e aparece uma nova coluna no final da folha

Nome no Prepare row não corresponde ao cabeçalho

Renomeie o campo em Prepare row para corresponder ao cabeçalho e elimine a coluna extra

Uma célula mostra [object Object]

Pergunta de escolha mapeada sem usar labels

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

Colunas ganham respostas erradas após editar o inquérito

As respostas são escolhidas pela posição na lista

Escolha pelo question.id

A coluna E-mail fica vazia

Mapeado de data.email

Leia o e-mail da resposta à pergunta de e-mail ou em parâmetro no URL

Faltam respostas anteriores à configuração

Os webhooks só enviam respostas submetidas após a sua criação

Exporte as respostas antigas do Survio e cole-as

O Survio desativou o webhook

O URL do webhook falhou durante 5 dias

Corrija a causa e volte a ligar o webhook no Survio

Informações úteis

  • O Survio só envia respostas concluídas, uma por mensagem, em segundos.

  • Nada é enviado retroativamente: não há respostas anteriores ao webhook nem respostas durante pausas.

  • Uma entrega com falha é repetida até 8 vezes em cerca de 27 horas; cada tentativa espera até 30 segundos. Combinar pelo Response ID torna estas repetições seguras.

  • Se as entregas falharem durante 5 dias seguidos, o Survio desativa o webhook e irá precisar de o reativar manualmente.

  • Pausar um webhook mantém a vaga; eliminar é permanente.

  • O Survio não guarda histórico de entregas. Use o separador Execuções no n8n como registo.

  • O envio de respostas para webhooks não consome respostas do seu plano.

Pretende que façamos a configuração? Na página de Webhooks do Survio, clique em Obter configuração com perito, descreva o que gostaria que acontecesse e a nossa equipa monta, testa e entrega-lhe o webhook funcional.

Isto respondeu à sua pergunta?