Resposta rápida
Em Webhooks, crie um webhook com método, URL, cabeçalhos e um corpo JSON com variáveis como {{ lead.name() }}. Teste com um contato fictício, anexe até 3 webhooks a uma campanha de e-mail (ou use só webhooks) e acompanhe cada entrega nos logs. Se o destino falhar, a BIP tenta até 6 vezes, a cada 60 segundos.
Toda vez que uma campanha alcança um contato, a BIP pode avisar outro sistema: criar o contato no CRM, mandar uma mensagem para a equipe, alimentar uma planilha. Você monta o pedido uma vez no painel, com os dados do contato no lugar certo, e a BIP faz o resto a cada envio.
O que você precisa
- Uma conta na BIP (vale o plano gratuito)
- O endereço (URL) que vai receber os dados e o token de acesso, se o destino pedir
- Uma campanha de e-mail, recorrente, única ou por API, para anexar o webhook
O que você vai conseguir
- Cada contato da campanha chega ao seu CRM ou ferramenta, com nome, e-mail, telefone, cidade, campos e KPIs que você escolher.
- Tudo no painel, sem código: método, URL, cabeçalhos e corpo, com sugestões de variáveis e pré-visualização.
- Entregas que se recuperam sozinhas: se o destino falhar, a BIP tenta de novo.
- Logs com a requisição e a resposta de cada entrega, e métricas por webhook.
- Campanhas só com webhooks, para sincronizar sistemas sem mandar e-mail.
Como funciona
- 1Crie o webhook com URL, cabeçalhos e corpo
- 2Teste com um contato fictício e confira o log
- 3Anexe a uma campanha: cada contato processado dispara o webhook
Um webhook é um pedido HTTP que a BIP faz ao seu sistema. Você define o método, a URL, os cabeçalhos e o corpo em JSON. No corpo, variáveis como {{ lead.name() }} viram os dados de cada contato na hora do envio.
O webhook roda quando está anexado a uma campanha. A cada contato que a campanha processa, a BIP monta o corpo com os dados daquela pessoa e envia. Vale para campanhas Único, Recorrente e Disparo por API. Quem saiu de todas as comunicações não dispara o webhook.
A entrega é bem-sucedida quando o seu sistema responde com um código 2xx (200, 201, 204…). Qualquer outra resposta, ou nenhuma resposta, gera uma nova tentativa 60 segundos depois. São até 6 tentativas no total: a primeira e mais 5.
Passo a passo
1. Crie o webhook
- No menu, abra Webhooks e clique em Novo Webhook. A BIP cria um webhook [sem título] e abre a página dele.
- Em Configuração de Webhook, escolha o método. Para levar os dados do contato, use POST (ou PUT, se o destino pedir).
- Cole a URL que vai receber os dados, no lugar de
http://your-webhook-endpoint.com. - Clique em Salvar.

Captura de tela em breve
2. Monte os cabeçalhos e o corpo
- Abra Cabeçalhos e escreva um objeto JSON. Inclua sempre
"Content-Type": "application/json": a BIP envia o corpo como JSON e a maioria dos sistemas confere esse cabeçalho. Se o destino pede um token, coloque também, por exemplo"Authorization": "Bearer SEU_TOKEN". - Em Modelo do Corpo, escreva o JSON que o destino espera. Dentro de um valor entre aspas, digite
{{e escolha a variável na lista de sugestões. O ícone de ajuda ao lado de Modelo do Corpo mostra todas as variáveis. - Confira a Pré-visualização à direita: ela mostra o corpo pronto, com os dados de um contato fictício, e se atualiza logo depois que você para de digitar.
- Clique em Salvar.
O corpo precisa ser um JSON válido para salvar. Por isso, cada variável fica entre aspas e chega ao destino como texto: "vip": "{{ lead.hasTag('vip') }}" vira "vip": "true".
Para um valor reserva quando o dado está vazio, use ||: "saudacao": "Olá, {{ lead.firstName() || 'cliente' }}".

Captura de tela em breve
3. Dê um nome e organize
- No topo da página, clique em Configurações.
- Preencha o Nome (é o que aparece ao anexar em campanhas), escolha um ícone e, se quiser, uma Descrição.
- Em Grupo, escolha um grupo para organizar a lista. Os grupos de webhooks são criados em Configurações → Grupos.
- Em Status, deixe Ativo ligado.
- Clique em Salvar.

Captura de tela em breve
4. Teste com um contato fictício
- Com tudo salvo, clique em Testar Webhook. O botão fica disponível quando não há alterações por salvar.
- A BIP envia uma requisição real para a sua URL, com um contato fictício (nome, e-mail, telefone e cidades inventados; campos personalizados vazios), e abre Estatísticas do Webhook.
- Em Logs de Entrega, clique em Visualizar na linha do teste. Requisição mostra o que a BIP enviou; Resposta mostra o código e o corpo que o seu sistema devolveu.
O teste chega ao seu sistema de verdade. Se o destino for o CRM em produção, apague o registro de teste depois, ou aponte primeiro para um ambiente de testes.

Captura de tela em breve
5. Anexe a uma campanha
- Em Campanhas, abra uma campanha ou clique em Nova Campanha, com o Canal Email.
- Na seção Webhooks, selecione até 3 webhooks. Cada contato processado dispara todos eles.
- Para uma campanha só com webhooks, não escolha Modelo de E-mail e selecione pelo menos um webhook. Nenhum e-mail sai: cada contato só dispara os webhooks.
- Escolha o Tipo de Agendamento (Único, Recorrente ou Disparo por API), salve e ative como qualquer campanha.

Captura de tela em breve
Somente BIP Full
Nos Fluxos, o passo Enviar Webhook usa os mesmos webhooks: o contato dispara o webhook quando chega naquele ponto do fluxo.
Referência
Configuração do webhook
| Opção | Como funciona |
|---|---|
| Método | GET, POST, PUT ou DELETE. Para enviar dados no corpo, use POST ou PUT. |
| URL | Endereço de destino. Fixo: não aceita variáveis. |
| Cabeçalhos | Objeto JSON, como {"Content-Type": "application/json"}. Fixos. |
| Modelo do Corpo | JSON válido, com variáveis do contato entre aspas. |
| Nome, ícone | Como o webhook aparece na lista e nas campanhas. |
| Descrição | Texto livre, para a equipe. |
| Grupo | Organiza a lista de Webhooks. |
| Status | Ativo ou inativo. |
Entrega e novas tentativas
| Regra | Valor |
|---|---|
| Sucesso | Resposta com código 2xx |
| Nova tentativa | Qualquer outro código, ou sem resposta |
| Intervalo | 60 segundos |
| Tentativas no total | 6 (a primeira e mais 5) |
| Depois da 6ª falha | A campanha registra um erro de webhook para aquele contato |
| Webhooks por campanha | Até 3, em campanhas do canal Email, com ou sem e-mail |
Variáveis do contato
Use dentro de um valor entre aspas. O resultado chega como texto.
| Variável | O que traz |
|---|---|
{{ lead.name() }} | Nome completo |
{{ lead.firstName() }} | Primeiro nome |
{{ lead.middleName() }} | Nomes do meio |
{{ lead.lastName() }} | Sobrenome |
{{ lead.email() }} | |
{{ lead.id() }} | ID do contato na BIP |
{{ lead.namespace() }} | Namespace da conta |
{{ lead.createdAt() }} | Data de criação, no formato ISO 8601 |
{{ lead.createdAt('YYYY-MM-DD') }} | Data de criação formatada |
{{ lead.updatedAt() }} | Última atualização, no formato ISO 8601 |
{{ lead.updatedAt('YYYY-MM-DD') }} | Última atualização formatada |
{{ lead.metadata('[METADATA_KEY]') }} | Um metadado: troque [METADATA_KEY] pela chave |
{{ lead.sourceType('first') }} | Tipo da primeira origem (api, internal, page…) |
{{ lead.sourceType('last') }} | Tipo da última origem |
Variáveis de telefone
| Variável | Exemplo |
|---|---|
{{ lead.phone('e164') }} | +5511912345678 |
{{ lead.phone('international') }} | +55 11 91234-5678 |
{{ lead.phone('national') }} | (11) 91234-5678 |
{{ lead.phone('nationalNumber') }} | 11912345678 |
{{ lead.phone('countryCallingCode') }} | 55 |
{{ lead.phone('countryCode') }} | BR |
{{ lead.phone('numberType') }} | MOBILE |
{{ lead.phone('uri') }} | tel:+5511912345678 |
{{ lead.maskedPhone('e164', '(999) 999-9999') }} | Telefone na máscara que você definir |
Na máscara, cada 9 é um dígito, preenchido da esquerda para a direita. Para o formato brasileiro, use {{ lead.maskedPhone('national', '(99) 99999-9999') }}.
Variáveis de localização
| Variável | O que traz |
|---|---|
{{ lead.location('last', 'city') }} | Cidade da última localização |
{{ lead.location('last', 'region') }} | Estado ou região da última localização |
{{ lead.location('last', 'country') }} | País da última localização |
{{ lead.location('last', 'timezone') }} | Fuso horário da última localização |
{{ lead.location('last', 'latitude') }} | Latitude do centro da cidade |
{{ lead.location('last', 'longitude') }} | Longitude do centro da cidade |
Troque last por first para a primeira localização. A localização é sempre a da cidade.
Variáveis de opt-out
| Variável | O que traz |
|---|---|
{{ lead.unsubscribed() }} | true se a pessoa saiu de todas as comunicações |
{{ lead.unsubscribedFromChannel('email') }} | true se saiu do e-mail |
{{ lead.unsubscribedFromChannel('whatsapp') }} | true se saiu do WhatsApp |
Variáveis da sua conta
O editor cria estas variáveis a partir dos seus campos personalizados, KPIs e tags. Na lista de sugestões, elas aparecem com o nome que você deu.
| Variável | Para |
|---|---|
{{ lead.field('Nome do campo') }} | Campos String, Número, Booleano e Data |
{{ lead.dateField('Nome do campo', 'YYYY-MM-DD') }} | Campo Data, no formato que você escolher |
{{ lead.ageField('Nome do campo') }} | Idade em anos, a partir de um campo Data |
{{ lead.locationField('Nome do campo', 'city') }} | Campo Localização (também region, country, timezone, latitude, longitude) |
{{ lead.phoneField('Nome do campo', 'e164') }} | Campo Telefone (também os formatos da tabela de telefone) |
{{ lead.maskedPhoneField('Nome do campo', 'e164', '(999) 999-9999') }} | Campo Telefone com máscara |
{{ lead.maskedNumberField('Nome do campo', '999 999 999 99') }} | Campo Número com máscara |
{{ lead.kpi('Nome do KPI') }} | Valor de um KPI |
{{ lead.hasTag('Nome da tag') }} | true se o contato tem a tag |
Pronto para copiar
Enviar cada contato para um CRM
A Agência Pulso manda para o CRM cada pessoa que recebe a campanha de boas-vindas. Ajuste os nomes das chaves ao que o seu CRM espera.
{
"Content-Type": "application/json",
"Authorization": "Bearer SEU_TOKEN_DO_CRM"
}{
"nome": "{{ lead.name() }}",
"email": "{{ lead.email() }}",
"telefone": "{{ lead.phone('e164') }}",
"cidade": "{{ lead.location('last', 'city') }}",
"estado": "{{ lead.location('last', 'region') }}",
"origem": "bip",
"id_bip": "{{ lead.id() }}",
"criado_em": "{{ lead.createdAt('YYYY-MM-DD') }}"
}| Configuração | Valor |
|---|---|
| Método | POST |
| URL | O endereço de criação de contatos do seu CRM |
| Campanha | Canal Email, com ou sem Modelo de E-mail |
| Webhooks | Este webhook (até 3 por campanha) |
Para mandar ao CRM cada pessoa no momento do cadastro, sem e-mail: crie uma campanha só com este webhook, com Disparo por API em modo Imediato, e dispare pela API quando alguém se cadastrar.
Avisar a equipe
Muitas ferramentas de chat e de automação recebem mensagens por um webhook de entrada, com o texto no campo text. A Imobiliária Marés avisa os corretores a cada pessoa que entra na campanha de lançamento.
{
"Content-Type": "application/json"
}{
"text": "Novo interessado: {{ lead.name() }} | {{ lead.email() || 'sem e-mail' }} | {{ lead.phone('international') || 'sem telefone' }} | {{ lead.location('last', 'city') || 'cidade não informada' }}"
}Confira na ferramenta de destino o nome do campo de texto que ela espera e troque text, se for o caso.
Como medir
- Estatísticas do Webhook: na lista de Webhooks, abra o webhook e clique em Ver Estatísticas. Você vê Total de Requisições, Bem-sucedido, Falhou, Tempo Médio de Resposta, Taxa de Sucesso, Taxa de Retentativa, Taxa de Erro, Códigos de Status e o Detalhamento de Entregas. Os números atualizam Ao vivo.
- Logs de Entrega: filtre por Data Inicial, Data Final e Limite. Cada linha traz Data, Status, URL, Método e Tentativas; em Visualizar, você confere a Requisição e a Resposta completas.
- Na campanha: em Ver Estatísticas, Entrega de Webhook e Erros de Webhook mostram o total da campanha, e Interações do Destinatário mostra o webhook de cada contato.
- Uma Taxa de Retentativa alta indica que o destino está lento ou instável. Abra a Resposta nos logs para ver o motivo.
Perguntas frequentes
O que conta como entrega bem-sucedida?
Uma resposta com código 2xx. Qualquer outro código, ou nenhuma resposta, gera nova tentativa 60 segundos depois, até 6 tentativas no total. Depois da sexta falha, a campanha registra o erro daquele contato.
Webhook conta como envio?
Numa campanha de e-mail com webhooks, conta o envio daquele contato, uma vez só: os webhooks não somam. Numa campanha só com webhooks, cada contato processado conta como um envio, como se fosse um e-mail. O Testar Webhook não conta.
Posso usar variáveis na URL ou nos cabeçalhos?
Não. A URL e os cabeçalhos são fixos. As variáveis do contato funcionam no Modelo do Corpo.
O teste chega ao meu sistema?
Sim. O Testar Webhook faz uma requisição real, com um contato fictício. Use um ambiente de testes ou apague o registro depois.