1. Wiki
  2. Funciones

Webhooks: lleva cada envío a tu sistema

En cada envío de campaña, manda los datos del contacto a tu CRM o al chat de tu equipo. Sin programar, con prueba, reintentos y logs.

Respuesta rápida

En Webhooks, crea un webhook con método, URL, encabezados y cuerpo JSON con variables como {{ lead.name() }}. Pruébalo con un contacto ficticio, adjunta hasta 3 webhooks a una campaña de email (o usa solo webhooks) y revisa cada entrega en los logs. Si el destino falla, la BIP intenta hasta 6 veces, cada 60 segundos.

EsfuerzoSin códigoCanalWebhookPlanGratis

Cada vez que una campaña llega a un contacto, la BIP puede avisarle a otro sistema: crear el contacto en el CRM, mandarle un mensaje al equipo, alimentar una hoja de cálculo. Armas la solicitud una sola vez en el panel, con los datos del contacto en el lugar correcto, y la BIP hace el resto en cada envío.

Lo que necesita

  • Una cuenta en la BIP (sirve el plan gratuito)
  • La dirección (URL) que va a recibir los datos y el token de acceso, si el destino lo pide
  • Una campaña de email, recurrente, única o por API, para adjuntarle el webhook

Lo que vas a lograr

  • Cada contacto de la campaña llega a tu CRM o herramienta, con el nombre, email, teléfono, ciudad, campos y KPIs que elijas.
  • Todo en el panel, sin código: método, URL, encabezados y cuerpo, con sugerencias de variables y vista previa.
  • Entregas que se recuperan solas: si el destino falla, la BIP vuelve a intentarlo.
  • Logs con la solicitud y la respuesta de cada entrega, y métricas por webhook.
  • Campañas solo con webhooks, para sincronizar sistemas sin enviar emails.

Cómo funciona

  1. 1Crea el webhook con URL, encabezados y cuerpo
  2. 2Pruébalo con un contacto ficticio y revisa el log
  3. 3Adjúntalo a una campaña: cada contacto procesado dispara el webhook

Un webhook es una solicitud HTTP que la BIP le hace a tu sistema. Tú defines el método, la URL, los encabezados y el cuerpo en JSON. En el cuerpo, variables como {{ lead.name() }} se convierten en los datos de cada contacto en el momento del envío.

El webhook se ejecuta cuando está adjunto a una campaña. Por cada contacto que procesa la campaña, la BIP arma el cuerpo con los datos de esa persona y lo envía. Funciona en campañas Único, Recurrente y Disparo por API. Quien se dio de baja de todas las comunicaciones no dispara el webhook.

La entrega es exitosa cuando tu sistema responde con un código 2xx (200, 201, 204…). Cualquier otra respuesta, o la falta de respuesta, genera un nuevo intento 60 segundos después. Son hasta 6 intentos en total: el primero y 5 más.

Paso a paso

1. Crea el webhook

  1. En el menú, abre Webhooks y haz clic en Nuevo webhook. La BIP crea un webhook [sin título] y abre su página.
  2. En Configuración de webhook, elige el método. Para enviar los datos del contacto, usa POST (o PUT, si el destino lo pide).
  3. Pega la URL que va a recibir los datos en lugar de http://your-webhook-endpoint.com.
  4. Haz clic en Guardar.
dash.bip.marketing/…/webhooks/…
Página del webhook con método y URL en Configuración de webhook

Captura de pantalla próximamente

Página del webhook con método y URL en Configuración de webhook

2. Arma los encabezados y el cuerpo

  1. Abre Encabezados y escribe un objeto JSON. Incluye siempre "Content-Type": "application/json": la BIP envía el cuerpo como JSON y la mayoría de los sistemas revisa ese encabezado. Si el destino pide un token, agrégalo también, por ejemplo "Authorization": "Bearer TU_TOKEN".
  2. En Plantilla del cuerpo, escribe el JSON que espera el destino. Dentro de un valor entre comillas, escribe {{ y elige la variable en la lista de sugerencias. El ícono de ayuda junto a Plantilla del cuerpo muestra todas las variables.
  3. Revisa la Vista previa a la derecha: muestra el cuerpo listo, con los datos de un contacto ficticio, y se actualiza en cuanto dejas de escribir.
  4. Haz clic en Guardar.

El cuerpo tiene que ser un JSON válido para guardarse. Por eso, cada variable va entre comillas y llega al destino como texto: "vip": "{{ lead.hasTag('vip') }}" se convierte en "vip": "true".

Para un valor de respaldo cuando el dato está vacío, usa ||: "saudacao": "Hola, {{ lead.firstName() || 'cliente' }}".

dash.bip.marketing/…/webhooks/…
Encabezados, plantilla del cuerpo con variables y vista previa del webhook

Captura de pantalla próximamente

Encabezados, plantilla del cuerpo con variables y vista previa del webhook

3. Ponle nombre y organízalo

  1. En la parte superior de la página, haz clic en Ajustes.
  2. Completa el Nombre (es lo que aparece al adjuntarlo a campañas), elige un ícono y, si quieres, una Descripción.
  3. En Grupo, elige un grupo para organizar la lista. Los grupos de webhooks se crean en Ajustes → Grupos.
  4. En Estado, deja Activo encendido.
  5. Haz clic en Guardar.
dash.bip.marketing/…/webhooks/…
Ajustes del webhook con nombre, ícono, descripción, grupo y estado

Captura de pantalla próximamente

Ajustes del webhook con nombre, ícono, descripción, grupo y estado

4. Pruébalo con un contacto ficticio

  1. Con todo guardado, haz clic en Probar webhook. El botón está disponible cuando no hay cambios sin guardar.
  2. La BIP envía una solicitud real a tu URL, con un contacto ficticio (nombre, email, teléfono y ciudades inventados; campos personalizados vacíos), y abre Estadísticas del Webhook.
  3. En Logs de Entrega, haz clic en Ver en la fila de la prueba. Solicitud muestra lo que envió la BIP; Respuesta muestra el código y el cuerpo que devolvió tu sistema.

La prueba llega de verdad a tu sistema. Si el destino es el CRM en producción, borra el registro de prueba después, o apunta primero a un entorno de pruebas.

dash.bip.marketing/…/webhooks/stats/…
Estadísticas del webhook con el log de entrega de la prueba

Captura de pantalla próximamente

Estadísticas del webhook con el log de entrega de la prueba

5. Adjúntalo a una campaña

  1. En Campañas, abre una campaña o haz clic en Nueva campaña, con el Canal Email.
  2. En la sección Webhooks, selecciona hasta 3 webhooks. Cada contacto procesado los dispara todos.
  3. Para una campaña solo con webhooks, no elijas Plantilla de email y selecciona al menos un webhook. No sale ningún email: cada contacto solo dispara los webhooks.
  4. Elige el Tipo de Programación (Único, Recurrente o Disparo por API), guarda y activa como cualquier campaña.
dash.bip.marketing/…/campaigns/…
Sección Webhooks de una campaña de email con webhooks seleccionados

Captura de pantalla próximamente

Sección Webhooks de una campaña de email con webhooks seleccionados

Solo BIP Full

En Flujos, el paso Enviar webhook usa los mismos webhooks: el contacto dispara el webhook cuando llega a ese punto del flujo.

Referencia

Configuración del webhook

OpciónCómo funciona
MétodoGET, POST, PUT o DELETE. Para enviar datos en el cuerpo, usa POST o PUT.
URLDirección de destino. Fija: no acepta variables.
EncabezadosObjeto JSON, como {"Content-Type": "application/json"}. Fijos.
Plantilla del cuerpoJSON válido, con las variables del contacto entre comillas.
Nombre, íconoCómo aparece el webhook en la lista y en las campañas.
DescripciónTexto libre, para el equipo.
GrupoOrganiza la lista de Webhooks.
EstadoActivo o inactivo.

Entrega y reintentos

ReglaValor
ÉxitoRespuesta con código 2xx
ReintentoCualquier otro código, o sin respuesta
Intervalo60 segundos
Intentos en total6 (el primero y 5 más)
Después del 6.º falloLa campaña registra un error de webhook para ese contacto
Webhooks por campañaHasta 3, en campañas del canal Email, con o sin email

Variables del contacto

Úsalas dentro de un valor entre comillas. El resultado llega como texto.

VariableQué trae
{{ lead.name() }}Nombre completo
{{ lead.firstName() }}Primer nombre
{{ lead.middleName() }}Segundos nombres
{{ lead.lastName() }}Apellido
{{ lead.email() }}Email
{{ lead.id() }}ID del contacto en la BIP
{{ lead.namespace() }}Namespace de la cuenta
{{ lead.createdAt() }}Fecha de creación, en formato ISO 8601
{{ lead.createdAt('YYYY-MM-DD') }}Fecha de creación con formato
{{ lead.updatedAt() }}Última actualización, en formato ISO 8601
{{ lead.updatedAt('YYYY-MM-DD') }}Última actualización con formato
{{ lead.metadata('[METADATA_KEY]') }}Un metadato: cambia [METADATA_KEY] por la clave
{{ lead.sourceType('first') }}Tipo de la primera fuente (api, internal, page…)
{{ lead.sourceType('last') }}Tipo de la última fuente

Variables de teléfono

VariableEjemplo
{{ 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') }}Teléfono con la máscara que definas

En la máscara, cada 9 es un dígito, que se completa de izquierda a derecha. Para el formato brasileño, usa {{ lead.maskedPhone('national', '(99) 99999-9999') }}.

Variables de ubicación

VariableQué trae
{{ lead.location('last', 'city') }}Ciudad de la última ubicación
{{ lead.location('last', 'region') }}Estado o región de la última ubicación
{{ lead.location('last', 'country') }}País de la última ubicación
{{ lead.location('last', 'timezone') }}Zona horaria de la última ubicación
{{ lead.location('last', 'latitude') }}Latitud del centro de la ciudad
{{ lead.location('last', 'longitude') }}Longitud del centro de la ciudad

Cambia last por first para la primera ubicación. La ubicación siempre es la de la ciudad.

Variables de baja (opt-out)

VariableQué trae
{{ lead.unsubscribed() }}true si la persona se dio de baja de todas las comunicaciones
{{ lead.unsubscribedFromChannel('email') }}true si se dio de baja del email
{{ lead.unsubscribedFromChannel('whatsapp') }}true si se dio de baja de WhatsApp

Variables de tu cuenta

El editor crea estas variables a partir de tus campos personalizados, KPIs y etiquetas. En la lista de sugerencias, aparecen con el nombre que les diste.

VariablePara
{{ lead.field('Nombre del campo') }}Campos Cadena, Número, Booleano y Fecha
{{ lead.dateField('Nombre del campo', 'YYYY-MM-DD') }}Campo Fecha, en el formato que elijas
{{ lead.ageField('Nombre del campo') }}Edad en años, a partir de un campo Fecha
{{ lead.locationField('Nombre del campo', 'city') }}Campo Ubicación (también region, country, timezone, latitude, longitude)
{{ lead.phoneField('Nombre del campo', 'e164') }}Campo Teléfono (también los formatos de la tabla de teléfono)
{{ lead.maskedPhoneField('Nombre del campo', 'e164', '(999) 999-9999') }}Campo Teléfono con máscara
{{ lead.maskedNumberField('Nombre del campo', '999 999 999 99') }}Campo Número con máscara
{{ lead.kpi('Nombre del KPI') }}Valor de un KPI
{{ lead.hasTag('Nombre de la etiqueta') }}true si el contacto tiene la etiqueta

Listo para copiar

Enviar cada contacto a un CRM

Agência Pulso envía a su CRM a cada persona que recibe la campaña de bienvenida. Ajusta los nombres de las claves a lo que espera tu CRM.

Encabezados
{
  "Content-Type": "application/json",
  "Authorization": "Bearer TU_TOKEN_DEL_CRM"
}
Plantilla del cuerpo
{
  "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') }}"
}
ConfiguraciónValor
MétodoPOST
URLLa dirección de creación de contactos de tu CRM
CampañaCanal Email, con o sin Plantilla de email
WebhooksEste webhook (hasta 3 por campaña)

Para enviar al CRM a cada persona en el momento del registro, sin email: crea una campaña solo con este webhook, con Disparo por API en modo Inmediato, y dispárala por la API cuando alguien se registre.

Avisar al equipo

Muchas herramientas de chat y de automatización reciben mensajes por un webhook entrante, con el texto en el campo text. Imobiliária Marés avisa a sus agentes por cada persona que entra en la campaña de lanzamiento.

Encabezados
{
  "Content-Type": "application/json"
}
Plantilla del cuerpo
{
  "text": "Nuevo interesado: {{ lead.name() }} | {{ lead.email() || 'sin email' }} | {{ lead.phone('international') || 'sin teléfono' }} | {{ lead.location('last', 'city') || 'ciudad no informada' }}"
}

Revisa en la herramienta de destino el nombre del campo de texto que espera y cambia text si hace falta.

Cómo medir

  • Estadísticas del Webhook: en la lista de Webhooks, abre el webhook y haz clic en Ver Estadísticas. Ves Total de Solicitudes, Exitoso, Fallido, Tiempo Promedio de Respuesta, Tasa de Éxito, Tasa de Reintento, Tasa de Error, Códigos de Estado y el Desglose de Entregas. Los números se actualizan En vivo.
  • Logs de Entrega: filtra por Desde la fecha, Hasta la fecha y Límite. Cada fila trae Fecha, Estado, URL, Método e Intentos; en Ver, revisas la Solicitud y la Respuesta completas.
  • En la campaña: en Ver Estadísticas, Entrega de Webhook y Errores de Webhook muestran el total de la campaña, e Interacciones del destinatario muestra el webhook de cada contacto.
  • Una Tasa de Reintento alta indica que el destino está lento o inestable. Abre la Respuesta en los logs para ver el motivo.

Preguntas frecuentes

¿Qué cuenta como entrega exitosa?

Una respuesta con código 2xx. Cualquier otro código, o la falta de respuesta, genera un nuevo intento 60 segundos después, hasta 6 intentos en total. Después del sexto fallo, la campaña registra el error de ese contacto.

¿El webhook cuenta como envío?

En una campaña de email con webhooks, cuenta el envío de ese contacto, una sola vez: los webhooks no suman. En una campaña solo con webhooks, cada contacto procesado cuenta como un envío, como si fuera un email. Probar webhook no cuenta.

¿Puedo usar variables en la URL o en los encabezados?

No. La URL y los encabezados son fijos. Las variables del contacto funcionan en la Plantilla del cuerpo.

¿La prueba llega a mi sistema?

Sí. Probar webhook hace una solicitud real, con un contacto ficticio. Usa un entorno de pruebas o borra el registro después.

Ver también