Pré-requisitos
- Uma chave de API Pubrio com acesso a monitores
- Um endpoint HTTPS publicamente acessível (ou uma URL de teste do usewebhook.com)
Etapa 1: Criar um Monitor com Destino de Webhook
headers adiciona cabeçalhos HTTP personalizados a cada entrega (útil para autenticação). O objeto body adiciona campos personalizados à raiz do payload do webhook.
Etapa 2: Validar a Conexão do Webhook
Use o endpoint Validate Webhook para testar se o seu endpoint está acessível. Isso envia um payload de amostra com dados fictícios — nenhum crédito é consumido e nenhum sinal real é buscado.Etapa 3: Testar com Dados Reais
Depois que a conexão for validada, acione uma execução real usando o endpoint Process Try. Isso busca sinais reais e os entrega ao seu webhook — usetried_at com uma data recente no passado para garantir que haja dados disponíveis:
Ao contrário do validate, o endpoint try executa uma varredura real e consome créditos. Use-o para confirmar que os payloads reais chegam corretamente e para ter uma estimativa rápida dos resultados antes que a varredura agendada seja executada.
Etapa 4: Verificar Assinaturas
Cada monitor tem uma assinatura única para verificar que os payloads recebidos vêm de fato da Pubrio.x-pubrio-signature (o segredo revelado acima) e x-pubrio-signature-256 (HMAC-SHA256 em hexadecimal do corpo bruto da requisição, com esse segredo como chave). Verifique o HMAC sobre os bytes recebidos antes de fazer o parse do JSON.
Estrutura do Payload do Webhook
Os payloads variam de acordo com odetection_mode do monitor:
- Sinal Primeiro
- Empresa Primeiro
No modo Cada entrada de sinal contém os detalhes do sinal e as empresas e pessoas enriquecidas associadas.
signal_first, o payload contém um array signals no nível raiz:Os campos personalizados de
body definidos em destination_config aparecem no nível raiz do payload (por exemplo, "pipeline": "my-webhook" quando configurado no seu destino).Sinais de Expansão
Além dejobs, news e advertisements, um monitor pode observar sinais de expansão — a evidência datada de que uma empresa está entrando ou crescendo em um novo mercado. Adicione expansions a signal_types:
froms e tos para o corredor, além de stages, scopes, momentum, freshness, signal_types, signal_subtypes, signal_strengths, source_types e window_days. Resolva os slugs válidos em Expansion Reference.
Um webhook entrega sinais de expansão na unidade de registro do monitor. Na unidade padrão
signal (signal_first), cada entrada é um sinal bruto (HIRE, AD, OFFICE…) cujo companies[0] traz o cartão (empresa, mercado); country_code é o mercado. Defina record_unit: "company" para receber uma entrada por empresa com seus sinais aninhados. O resumo por e-mail sempre agrupa por empresa e mercado.Pegada cloud
DNS é o sinal de pegada cloud: uma empresa a implementar infraestrutura cloud ou de alojamento num mercado. Restrinja um monitor de expansão com signal_types dentro dos filtros:
evidence_url, uma página Pubrio que sustenta o sinal. O detalhe bruto da infraestrutura nunca é incluído. Para receber os mesmos hosts como um fluxo de eventos simples com filtros de provedor, região e cidade, use o tipo de sinal dedicado cloud_footprints abaixo.
Payload de Sinal de Expansão
Sinais de pegada em nuvem
Adicionecloud_footprints a signal_types para receber um registro por host que uma empresa sobe em um mercado fora do seu país: um servidor novo em um provedor de nuvem ou hospedagem, ou um que mudou de região ou de país. É a mesma evidência de infraestrutura que o sinal de expansão DNS lê, entregue como um fluxo de eventos simples em vez de uma etapa de mercado: cada host, na ordem de chegada, com os filtros próprios da pegada e sem etapa, pontuação ou janela.
Cada
signal traz provider, cloud_region, city, novelty, country_code, country_name, event_date, um display_label localizado como AWS · Frankfurt e evidence_url. Nomes de host e endereços IP brutos nunca são incluídos. A infraestrutura do mercado doméstico não está neste fluxo.
Regras de Entrega
O que é um registro
Um registro é o que os limites contam e o que constitui uma entrada de entrega. Por padrão segue o modo de detecção:signal_first entrega sinais (uma entrada signals[] por vaga, anúncio, artigo ou sinal de expansão), company_first entrega empresas (uma entrada companies[] por empresa com seus sinais aninhados). Use record_unit para escolher explicitamente; por exemplo, record_unit: "company" em um monitor de anúncios signal_first entrega uma entrada por anunciante em vez de uma por anúncio.
Excluir empresas
excluded_companies (mais excluded_domains e excluded_linkedin_urls, resolvidos como companies) é uma lista de nunca entregar: uma empresa excluída é descartada antes do enriquecimento e da faturação em ambos os modos, e a lista de acompanhamento company_first a ignora enquanto permanecer na lista. Até 100.000 empresas por monitor, o suficiente para uma exportação de clientes atuais do CRM. No Update Monitor, envie companies_mode ou excluded_companies_mode como add / remove para alterar apenas as entradas enviadas, sem reenviar a lista inteira.
Limites
Uma lista de qualquer tamanho é lida página a página: Company Search com
company_groups: [source_group_id] (ou excluded_group_id); ambos os ids são devolvidos por Lookup Monitor, que também devolve as listas completas.
O mais recente primeiro
Por padrão, um monitor entrega por ordem de chegada, o mais antigo primeiro, e um limite transporta o restante, de modo que o atraso de um dia é processado antes dos sinais mais novos. Comis_newest_first: true isso se inverte: cada execução entrega os registros correspondentes mais recentes, e o que um limite deixa de fora é ignorado de vez, nunca enfileirado. Vale para todos os tipos de sinal e para um monitor que retoma após uma pausa ou um orçamento diário esgotado.
Deduplicação e reentrega
- Um sinal nunca é entregue duas vezes. Cada entrega bem-sucedida registra as chaves dos sinais que carregou, e cada execução descarta qualquer candidato já presente nesse registro, para todos os tipos de sinal. Vagas, notícias e anúncios mantêm ainda um cursor por tipo, então um sinal entregue nem sequer é buscado de novo.
company_dedupe_days: Ngarante que uma empresa apareça em no máximo uma entrega a cada N dias em todos os tipos de sinal do monitor; seus sinais seguintes dentro da janela são ignorados.- Todo payload carrega
metadata.monitor_log_id(a linha dessa tentativa nos Logs de Estatísticas) emetadata.parent_monitor_log_id(nullna primeira tentativa; em uma nova tentativa, automática ou via Repetir Processamento, o id da primeira tentativa). Os mesmos sinais só voltam a chegar por meio dessa nova tentativa, então deduplique porparent_monitor_log_id || monitor_log_id. Uma nova tentativa reenvia o payload da primeira tentativa como estava; envieis_use_original_payload: falsepara reaplicar primeiro as regras atuais (exclusões e os dois registros), e então uma tentativa sem nada a entregar é ignorada com o código40085.
Destino por E-mail
Para equipes que preferem a entrega por e-mail, definadestination_type como "email":
A Pubrio oferece suporte a entrega de e-mail com marca branca para agências e equipes. Entre em contato para saber mais sobre personalização de domínio de envio e identidade visual.
Solução de Problemas
O webhook não recebe payloads
O webhook não recebe payloads
- Verifique se o seu endpoint é publicamente acessível (não está atrás de um firewall ou VPN)
- Garanta que ele retorne um código de status
200— outros códigos são tratados como falhas - Use o endpoint Validate Webhook para testar a conectividade
- Verifique os Statistic Logs em busca de mensagens de erro e códigos de resposta
Monitor pausado após falhas
Monitor pausado após falhas
Se o seu webhook retornar códigos diferentes de 200 de forma consistente, o monitor é pausado ao atingir
max_failure_trigger falhas consecutivas. Corrija o problema e reative usando o Update Monitor.Payloads duplicados
Payloads duplicados
Se uma entrega falhar e houver novas tentativas configuradas, você pode receber o mesmo payload várias vezes. Use
triggered_at ou o ID do log para deduplicar do seu lado.Payload muito grande
Payload muito grande
Reduza
max_records_per_trigger para limitar os registros por entrega. Você também pode restringir seus filtros para reduzir o volume de sinais correspondentes.
