1 - Visão geral e conceito
O recurso de Webhooks faz o TryERP avisar um sistema do cliente assim que um documento fiscal muda de situação: quando a NF-e é autorizada, quando é cancelada, quando o MDF-e é encerrado. O aviso é uma chamada HTTP para um endereço que o próprio cliente cadastra.
Em uma frase: em vez de o sistema do cliente ficar perguntando "já autorizou?", o TryERP avisa quando autoriza.
1. Por que isso existe
Quem usa este recurso normalmente já contratou a API do TryERP e consegue ler os dados da nota por lá. O problema nunca foi o acesso ao dado — era saber a hora certa de buscar.
Sem webhook, a única saída é o sistema do cliente consultar a API de tempos em tempos (polling). Isso tem três defeitos conhecidos:
| Problema do polling | Consequência prática |
|---|---|
| Consulta que quase sempre volta vazia | Gasto de processamento e banda dos dois lados para não descobrir nada |
| Intervalo grande | O sistema do cliente demora a reagir — o pedido fica parado esperando a nota que já existe |
| Intervalo pequeno | Carga desnecessária no servidor, que cresce com o número de clientes integrados |
O webhook não substitui a API — ele a complementa. A notificação carrega a chave de acesso, o protocolo e os dados de identificação do documento. Se o sistema do cliente precisar do XML, dos itens ou dos impostos, ele continua buscando na API, só que na hora certa, uma vez, em vez de ficar perguntando.
2. O que dispara uma notificação
| Documento | Autorização | Cancelamento | Encerramento |
|---|---|---|---|
| NF-e (modelo 55) | Sim | Sim | — |
| NFC-e (modelo 65) | Sim | Sim | — |
| CT-e | Sim | Sim | — |
| CT-e OS | Sim | — | — |
| MDF-e | Sim | Sim | Sim |
O cancelamento de CT-e OS não dispara porque o próprio sistema ainda não implementa esse evento. O encerramento só existe no MDF-e.
Só há notificação quando a SEFAZ confirma o evento. Rejeição não notifica, lote em processamento não notifica, erro de comunicação não notifica. O webhook avisa fato consumado — nunca tentativa.
3. A garantia de entrega, e por que ela foi feita assim
Um endpoint do cliente pode estar fora do ar exatamente no minuto em que a nota é autorizada. Se a notificação fosse "tenta uma vez e esquece", o cliente perderia o aviso e nunca saberia disso. O desenho evita esse buraco em três camadas:
| # | Camada | O que faz |
|---|---|---|
| 1 | Registro junto com o documento | No instante em que o sistema grava "nota autorizada", ele grava também a notificação pendente — na mesma transação. Ou as duas coisas existem, ou nenhuma existe |
| 2 | Envio imediato | Logo depois, a notificação é enviada em segundo plano. É o caminho normal: o cliente recebe em segundos |
| 3 | Rede de segurança | Uma rotina roda a cada 2 minutos e reenvia tudo que não conseguiu sair — endpoint fora do ar, sistema fechado antes do envio terminar, queda de rede |
O efeito prático da camada 1 é o que importa: se a nota foi autorizada, a notificação existe. Ela pode demorar, pode precisar de várias tentativas, pode ser reenviada manualmente — mas não some. Não existe o caso "a nota autorizou e ninguém nunca soube".
4. O que o recurso deliberadamente não faz
- Não envia o XML nem o DANFE. A notificação é um aviso enxuto com a chave e o protocolo; o arquivo vem da API. Mandar XML por webhook engordaria cada chamada e obrigaria a repetir tudo a cada tentativa de reenvio.
- Não tenta para sempre. Há um limite de tentativas por endpoint (padrão 5). Depois disso a notificação fica marcada como Descartado e espera reenvio manual — o sistema não fica batendo indefinidamente em um endereço que não responde.
- Não garante ordem. Se duas notas são autorizadas no mesmo segundo, não há promessa de que cheguem na ordem de emissão.
- Não avisa rejeição. Ver o callout da seção 2.
5. Quem não usa não paga nada por isso
Esta é uma decisão de projeto que vale registrar, porque protege a empresa inteira: enquanto não houver nenhum endpoint cadastrado e ativo, o recurso não custa nada no fluxo de emissão.
O sistema mantém em memória a lista de quais filiais têm webhook ativo e a atualiza no máximo uma vez por minuto. Na emissão, a verificação é uma consulta a essa lista em memória — não há consulta ao banco por nota emitida, nem processo de envio iniciado. Para quem nunca vai usar o recurso, a emissão continua exatamente como era.
6. O ciclo completo, e quem faz cada parte
| # | Passo | Quem faz | Onde |
|---|---|---|---|
| 1 | Construir o endereço que vai receber as notificações | Desenvolvedor do cliente | Capítulo Guia para o desenvolvedor do endpoint |
| 2 | Liberar o acesso à tela e conferir a rede | Administrador | Capítulo Configuração inicial |
| 3 | Cadastrar o endpoint e testar | Responsável pela integração | Capítulo Cadastrar um endpoint |
| 4 | Combinar com o cliente o que será enviado | Responsável pela integração | Capítulo Eventos e o conteúdo enviado |
| 5 | Acompanhar entregas e reenviar o que falhou | Responsável pela integração / suporte | Capítulo Entrega, reenvio e histórico |
Próximo capítulo: Configuração inicial — o que precisa estar em ordem antes de cadastrar o primeiro endpoint.