Voltar

Documentação

Como imbutir surveys no seu site e receber respostas via webhook.

Como imbutir o widget

Cole o snippet abaixo antes do </body> de qualquer página HTML. Troque SEU_EMBED_CODE pelo código do seu survey — visível na aba Compartilhar dentro do painel.

<script async src="https://www.pulseform.com.br/widget.js"
  data-survey-code="SEU_EMBED_CODE">
</script>

O script carrega de forma assíncrona (não bloqueia a página) e aplica automaticamente as regras de targeting configuradas no survey — URL, scroll, tempo na página ou intenção de saída.

Pré-requisitos

O survey precisa estar com status Ativo (publicado). Surveys em rascunho não exibem o widget.

Identificar o visitante (email / userId)

Use window.PulseForm.identify({ email, userId }) para associar a resposta a um usuário conhecido (login do seu app, cliente CRM, etc). A identidade é persistida em localStorage (chave sb_identity_{embed_code}) e enviada junto da resposta no campo metadata.identity.

Funciona tanto no widget embedável quanto no link público do formulário.

Uso básico

<script>
  // Após o usuário logar no seu app
  window.PulseForm.identify({
    email: 'cliente@empresa.com',
    userId: '12345'
  });
</script>

Pode ser chamado antes ou depois do script do widget carregar — chamadas anteriores ficam em fila e são processadas na inicialização.

Traits adicionais

Aceita qualquer chave/valor escalar (string, número, boolean) — útil para segmentação.

window.PulseForm.identify({
  email: 'cliente@empresa.com',
  userId: '12345',
  plan: 'pro',
  company: 'Acme',
  signupDate: '2024-08-12'
});

Link público com query string

Para campanhas por e-mail, basta passar via URL:

https://seu-dominio.com/survey/EMBED_CODE?email=cliente@empresa.com&userId=12345

O formulário lê automaticamente email e userId da query e popula a identidade.

API completa

  • identify(traits) — mescla traits ao perfil persistido. Máx. 50 chaves, 500 chars/valor, 4 KB total.
  • reset() — limpa identidade (use no logout do seu app).
  • getIdentity() — retorna cópia do perfil atual ou null.

Onde aparece

Cada resposta enviada inclui o perfil em metadata.identity, visível na aba Respostas do survey e no payload do webhook.

Como conectar um webhook

O webhook dispara um POST para a URL que você configurar a cada nova resposta recebida. Útil para integrar com Zapier, Make, n8n ou qualquer sistema interno.

1
Acesse os Conectores do survey

No painel, abra o survey → Conectores → card Webhook Genérico.

2
Informe a URL de destino e o token

Cole a URL do endpoint que vai receber as requisições e defina um token de autenticação (mínimo 8 caracteres). Ambos são obrigatórios.

3
Verifique o header no seu endpoint

Cada requisição chega com X-PulseForm-Token: {token}. Rejeite requisições sem esse header para evitar chamadas não autorizadas.

Payload

Corpo enviado a cada disparo (Content-Type: application/json):

{
  "event": "response.submitted",
  "survey_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "timestamp": "2025-05-04T14:32:00.000Z",
  "data": {
    "session_id": "uuid-da-sessao",
    "page_url": "https://meusite.com/pricing",
    "answers": {
      "q1": "opcao_a",
      "q2": "texto livre",
      "q3": 9
    }
  }
}

Autenticação e retry

Além do payload, cada requisição inclui dois headers fixos:

X-PulseForm-Token: {token}
X-PulseForm-Event: response.submitted
X-PulseForm-Attempt: 1

Em caso de falha (timeout ou status HTTP ≥ 400), o sistema tenta mais 2 vezes com backoff exponencial. Se as 3 tentativas falharem, o erro é registrado no log mas a resposta do visitante não é perdida — ela já foi salva no banco antes do disparo.

Testar com Make ou n8n

Crie um cenário no Make (ex-Integromat) ou n8n com um nó HTTP Trigger, cole a URL gerada e informe o token no header X-PulseForm-Token.Publique uma resposta de teste no survey para ver o payload chegar em tempo real.