Início Guias Webhooks

Como integrar o quiz com webhooks

Se você usa um CRM próprio, um app ou serviços com os quais ainda não temos integração, o caminho é o webhook: o LeadForms envia os dados de cada lead novo para a URL que você indicar.
Configuração
No painel, abra o quiz → “Configurações” → “Integrações” → cartão Webhooks. Indique a URL para onde a requisição POST será enviada.
Para testar, você pode usar webhook.site.
Importante: o seu receptor deve responder com um status HTTP de sucesso (200, 204 e similares).
Formato da requisição
Método: POST
Cabeçalho: Content-Type: application/json
Corpo: JSON
Os campos antigos continuam iguais. Os novos só aparecem se existirem naquele lead, então as integrações feitas com o formato anterior continuam funcionando.
Exemplo de payload completo
{
  "id": 12345,
  "quizId": 611,
  "answers": [
    {"q": "Pergunta 1", "questionId": 10, "a": ["Opção 2"]},
    {"q": "Pergunta 2", "questionId": 11, "a": ["Opção 3"]}
  ],
  "contacts": {
    "name": "Lucas",
    "phone": "5511991234567",
    "email": "example@gmail.com",
    "address": "São Paulo, Av. Paulista, 1000",
    "text": "Quero uma consultoria",
    "messenger": {"type": "telegram", "value": "@username"},
    "messengerName": "Lucas"
  },
  "created": "17.08.2019 22:41",
  "quizDurationSeconds": 95,
  "result": {
    "value": "15%",
    "title": "Seu desconto",
    "description": "Conclua o seu pedido"
  },
  "extra": {
    "href": "https://example.com/page",
    "ref": "https://google.com",
    "utm": {"utm_source": "google"},
    "cookies": {
      "_ga": "GA1.2.477745229.1562102022",
      "_ym_uid": "1562107156134812542"
    }
  }
}
Campos do nível superior
CampoTipoDescrição
answersarrayRespostas às perguntas do quiz
contactsobjectDados de contato
createdstringData do lead, no formato dd.mm.aaaa hh:mm
extraobjectUTM, cookies, URL da página, referer e desconto
resultobject | nullResultado do quiz (desconto e similares)
idnumberID do lead no LeadForms novo
quizIdnumberID do quiz novo
quizDurationSecondsnumberTempo que a pessoa levou para concluir o quiz, em segundos novo
Campos de answers[]
CampoDescrição
qTexto da pergunta
questionIdID da pergunta
aArray de respostas (strings)
Campos de contacts
CampoDescrição
nameNome
phoneTelefone
emailE-mail
addressEndereço novo
textComentário ou texto livre novo
messengerMensageiro: {"type": "telegram", "value": "@username"} novo
messengerNameNome quando o contato chega por mensageiro novo
Tipos de messenger.type: telegram, whatsapp, viber, vk, messenger, instagram, teams, max, wechat, phone.
Campos de result
CampoDescrição
valueValor (por exemplo, o valor do desconto)
titleTítulo
descriptionDescrição
Campos de extra
CampoDescrição
hrefURL da página de onde o lead foi enviado
refReferer
utmParâmetros UTM (objeto)
cookiesCookies (objeto)
discountDesconto, se estiver configurado no quiz
Formulário de contato em duas etapas
Se o quiz tem o formulário em duas etapas:
• O webhook é disparado quando o lead está completo, com todas as etapas preenchidas.
• Se alguém preenche só a primeira etapa e não volta, o lead pode ser enviado uns 60 segundos depois com os dados parciais.
Exemplo de receptor em PHP
<?php
$data = json_decode(file_get_contents('php://input'), true);

$answers = $data['answers'] ?? [];
$contacts = $data['contacts'] ?? [];

$phone = $contacts['phone'] ?? null;
$email = $contacts['email'] ?? null;
$name = $contacts['name'] ?? ($contacts['messengerName'] ?? null);
$messenger = $contacts['messenger'] ?? null; // ['type' => 'telegram', 'value' => '@username']
$address = $contacts['address'] ?? null;
$comment = $contacts['text'] ?? null;

$createdDate = strtotime($data['created'] ?? 'now');
$utm = $data['extra']['utm'] ?? [];
$result = $data['result'] ?? null;
$quizDurationSeconds = $data['quizDurationSeconds'] ?? null;
$leadId = $data['id'] ?? null;
$quizId = $data['quizId'] ?? null;

// Sua lógica de processamento...

http_response_code(200);
exit;
Compatibilidade com versões anteriores
As integrações que só leem answers, contacts.name/phone/email, created, extra continuam funcionando. Os campos novos (address, text, messenger, quizDurationSeconds, id, quizId, result) podem ser usados quando for preciso.

Ainda tem dúvidas? Fale com a gente

Nome *
* Campo obrigatório
E-mail *
* Campo obrigatório
Mensagem
Fale com a gente!
Respondemos em 30 segundos