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:
Cabeçalho:
Corpo:
POSTCabeçalho:
Content-Type: application/jsonCorpo:
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
| Campo | Tipo | Descrição |
|---|---|---|
answers | array | Respostas às perguntas do quiz |
contacts | object | Dados de contato |
created | string | Data do lead, no formato dd.mm.aaaa hh:mm |
extra | object | UTM, cookies, URL da página, referer e desconto |
result | object | null | Resultado do quiz (desconto e similares) |
id | number | ID do lead no LeadForms novo |
quizId | number | ID do quiz novo |
quizDurationSeconds | number | Tempo que a pessoa levou para concluir o quiz, em segundos novo |
Campos de answers[]
| Campo | Descrição |
|---|---|
q | Texto da pergunta |
questionId | ID da pergunta |
a | Array de respostas (strings) |
Campos de contacts
| Campo | Descrição |
|---|---|
name | Nome |
phone | Telefone |
email | |
address | Endereço novo |
text | Comentário ou texto livre novo |
messenger | Mensageiro: {"type": "telegram", "value": "@username"} novo |
messengerName | Nome quando o contato chega por mensageiro novo |
Tipos de
messenger.type: telegram, whatsapp, viber, vk, messenger, instagram, teams, max, wechat, phone.Campos de result
| Campo | Descrição |
|---|---|
value | Valor (por exemplo, o valor do desconto) |
title | Título |
description | Descrição |
Campos de extra
| Campo | Descrição |
|---|---|
href | URL da página de onde o lead foi enviado |
ref | Referer |
utm | Parâmetros UTM (objeto) |
cookies | Cookies (objeto) |
discount | Desconto, 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.