Requisitos previos
- Una API key de Pubrio con acceso a monitores
- Un endpoint HTTPS accesible públicamente (o una URL de prueba de usewebhook.com)
Paso 1: Crear un Monitor con destino Webhook
headers añade encabezados HTTP personalizados a cada entrega (útil para autenticación). El objeto body añade campos personalizados a la raíz del payload del webhook.
Paso 2: Validar tu conexión de Webhook
Usa el endpoint Validate Webhook para probar que tu endpoint es accesible. Esto envía un payload de muestra con datos de marcador de posición — no se consumen créditos, no se obtienen señales reales.Paso 3: Probar con datos reales
Una vez validada la conexión, dispara una ejecución real usando el endpoint Process Try. Esto obtiene señales reales y las entrega a tu webhook — usatried_at con una fecha pasada reciente para asegurar que haya datos disponibles:
A diferencia de validate, el endpoint try ejecuta un escaneo real y consume créditos. Úsalo para verificar que los payloads reales llegan correctamente y para obtener una estimación rápida de resultados antes de que se ejecute el escaneo programado.
Paso 4: Verificar firmas
Cada monitor tiene una firma única para verificar que los payloads entrantes provienen genuinamente de Pubrio.x-pubrio-signature (el secreto revelado arriba) y x-pubrio-signature-256 (HMAC-SHA256 en hexadecimal del cuerpo bruto de la petición, con ese secreto como clave). Verifica el HMAC sobre los bytes recibidos antes de parsear el JSON.
Estructura del payload del Webhook
Los payloads difieren según eldetection_mode del monitor:
- Signal First
- Company First
En modo Cada entrada de señal contiene los detalles de la señal y las empresas y personas asociadas ya enriquecidas.
signal_first, el payload contiene un arreglo signals de nivel superior:Los campos personalizados de
body en destination_config aparecen en el nivel raíz del payload (por ejemplo, "pipeline": "my-webhook" cuando se configura en tu destino).Señales de expansión
Junto conjobs, news y advertisements, un monitor puede vigilar señales de expansión — la evidencia fechada de que una empresa está entrando o creciendo en un nuevo mercado. Añade expansions a signal_types:
froms y tos para el corredor, más stages, scopes, momentum, freshness, signal_types, signal_subtypes, signal_strengths, source_types y window_days. Resuelve los slugs válidos en Expansion Reference.
Un webhook entrega las señales de expansión en la unidad de registro del monitor. En la unidad
signal por defecto (signal_first), cada entrada es una señal bruta (HIRE, AD, OFFICE…) cuyo companies[0] lleva la ficha (empresa, mercado); country_code es el mercado. Define record_unit: "company" para recibir una entrada por empresa con sus señales anidadas. El resumen por correo siempre agrupa por empresa y mercado.Huella cloud
DNS es la señal de huella cloud: una empresa desplegando infraestructura cloud o de hosting en un mercado. Acota un monitor de expansión con signal_types dentro de los filtros:
evidence_url, una página de Pubrio que respalda la señal. El detalle bruto de la infraestructura nunca se incluye. Para recibir los mismos hosts como un flujo de eventos plano con filtros de proveedor, región y ciudad, usa el tipo de señal dedicado cloud_footprints más abajo.
Payload de señal de expansión
Señales de huella en la nube
Añadecloud_footprints a signal_types para recibir un registro por cada host que una empresa levanta en un mercado fuera de su país: un servidor nuevo en un proveedor de nube u hosting, o uno que cambió de región o de país. Es la misma evidencia de infraestructura que lee la señal de expansión DNS, entregada como un flujo de eventos plano en lugar de una etapa de mercado: cada host, en orden de llegada, con los filtros propios de la huella y sin etapa, puntuación ni ventana.
Cada
signal lleva provider, cloud_region, city, novelty, country_code, country_name, event_date, un display_label localizado como AWS · Frankfurt y evidence_url. Nunca se incluyen nombres de host ni direcciones IP en bruto. La infraestructura del mercado local no está en este flujo.
Reglas de entrega
Qué es un registro
Un registro es lo que cuentan los límites y lo que constituye una entrada de entrega. Por defecto sigue al modo de detección:signal_first entrega señales (una entrada signals[] por oferta, anuncio, artículo o señal de expansión), company_first entrega empresas (una entrada companies[] por empresa con sus señales anidadas). Usa record_unit para elegir explícitamente; por ejemplo, record_unit: "company" en un monitor de anuncios signal_first entrega una entrada por anunciante en lugar de una por anuncio.
Excluir empresas
excluded_companies (más excluded_domains y excluded_linkedin_urls, resueltos igual que companies) es una lista de nunca entregar: una empresa excluida se descarta antes del enriquecimiento y la facturación en ambos modos, y la lista de seguimiento de company_first la omite mientras siga en la lista. Hasta 100.000 empresas por monitor, suficiente para una exportación de clientes actuales desde el CRM. En Update Monitor, envía companies_mode o excluded_companies_mode como add / remove para cambiar solo las entradas enviadas, sin reenviar toda la lista.
Límites
Una lista de cualquier tamaño se lee página a página: Company Search con
company_groups: [source_group_id] (o excluded_group_id); ambos ids los devuelve Lookup Monitor, que también devuelve las listas completas.
Lo más reciente primero
Por defecto, un monitor entrega en orden de llegada, lo más antiguo primero, y un límite traslada el resto, de modo que el atraso de un día se procesa antes que las señales más nuevas. Conis_newest_first: true se invierte: cada ejecución entrega los registros coincidentes más recientes, y lo que un límite deja fuera se omite para siempre, nunca se encola. Aplica a todos los tipos de señal y a un monitor que reanuda tras una pausa o un presupuesto diario agotado.
Deduplicación y reentrega
- Una señal nunca se entrega dos veces. Cada entrega exitosa registra las claves de las señales que llevó, y cada ejecución descarta cualquier candidata ya presente en ese registro, para todos los tipos de señal. Ofertas, noticias y anuncios mantienen además un cursor por tipo, así que una señal entregada ni siquiera se vuelve a obtener.
company_dedupe_days: Ngarantiza que una empresa aparezca como máximo en una entrega cada N días en todos los tipos de señal del monitor; sus señales posteriores dentro de la ventana se omiten.- Cada payload lleva
metadata.monitor_log_id(la fila de Registros estadísticos de ese intento) ymetadata.parent_monitor_log_id(nullen un primer intento; en un reintento, automático o mediante Reintento de proceso, el id del primer intento). Las mismas señales solo pueden volver a llegarte mediante ese reintento, así que deduplica porparent_monitor_log_id || monitor_log_id. Un reintento reenvía el payload del primer intento tal cual; envíais_use_original_payload: falsepara aplicar antes las reglas actuales (exclusiones y ambos registros), y entonces un reintento sin nada que entregar se omite con el código40085.
Destino por correo electrónico
Para los equipos que prefieren la entrega por correo electrónico, establecedestination_type en "email":
Pubrio soporta entrega de correo electrónico de marca blanca para agencias y equipos. Ponte en contacto para conocer cómo personalizar el dominio del remitente y la marca.
Solución de problemas
El webhook no recibe payloads
El webhook no recibe payloads
- Verifica que tu endpoint sea accesible públicamente (no esté detrás de un firewall o VPN)
- Asegúrate de que devuelva un código de estado
200— otros códigos se tratan como fallos - Usa el endpoint Validate Webhook para probar la conectividad
- Revisa Statistic Logs para ver mensajes de error y códigos de respuesta
Monitor pausado tras fallos
Monitor pausado tras fallos
Si tu webhook devuelve códigos distintos de 200 de forma consistente, el monitor se pausa al alcanzar
max_failure_trigger fallos consecutivos. Corrige el problema y reactívalo mediante Update Monitor.Payloads duplicados
Payloads duplicados
Si una entrega falla y hay reintentos configurados, puedes recibir el mismo payload varias veces. Usa
triggered_at o el ID del log para deduplicar en tu extremo.Payload demasiado grande
Payload demasiado grande
Reduce
max_records_per_trigger para limitar los registros por entrega. También puedes acotar tus filtros para reducir el volumen de señales coincidentes.
