Como funcionam os webhooks
A Salvy utiliza a plataforma Svix para garantir uma entrega segura e confiável de webhooks. A página de configurações de Webhooks está disponível no dashboard da Salvy, em Configurações > Funcionalidades > Webhooks. Para mais detalhes de como a página de configurações funciona, e quais recursos estão disponíveis, consulte a documentação da Svix.- Crie uma URL em seu sistema para receber as requisições de webhook
- Acesse a página de configurações de Webhooks, cadastre a sua URL e selecione os eventos desejados.
- Quando um evento relevante ocorre (como o recebimento de um SMS), a Salvy envia uma requisição HTTP POST para sua URL
- Seu sistema processa os dados recebidos e responde com um código de status HTTP 2xx para confirmar o recebimento. Se a resposta não for 2xx, a Salvy tenta reenviar o evento, veja Entrega e novas tentativas
- Para maior segurança, sugerimos que seu sistema também verifique a integridade dos dados recebidos
Formato da requisição
Todas as requisições de webhook seguem o mesmo formato padrão:Entrega e novas tentativas
Seu endpoint deve responder com um código de status HTTP 2xx em até 15 segundos. Qualquer outra resposta (4xx, 5xx, timeout ou erro de conexão) é tratada como falha, e o evento entra na fila de novas tentativas.Cronograma de tentativas
Cada evento é tentado até 8 vezes, ao longo de pouco mais de 27 horas. Cada intervalo começa após a falha da tentativa anterior; a última coluna mostra o tempo total decorrido desde o envio original:
Como um mesmo evento pode ser entregue mais de uma vez (por exemplo, quando a sua resposta demora e a conexão cai antes de chegar até nós), trate o recebimento de forma idempotente. O header
svix-id é único e estável por evento: use-o para identificar e descartar entregas repetidas.
Quando as tentativas se esgotam
Se as 8 tentativas falharem, o evento é marcado como falho e não é mais reenviado automaticamente. Nesse momento, a Salvy avisa os administradores da empresa por e-mail (“Não foi possível entregar um evento”), identificando o endpoint afetado.Desativação automática do endpoint
Se todas as entregas para um endpoint falharem por cinco dias consecutivos, ele é desativado automaticamente e para de receber eventos. Os administradores recebem um e-mail de aviso (“Desativamos um endpoint da sua integração”). Um endpoint desativado não volta a funcionar sozinho. Depois de corrigir o problema, é preciso reativá-lo manualmente na página de configurações de Webhooks.Como se recuperar de uma falha
1
Verifique o endpoint
Confirme que a URL está acessível publicamente e respondendo 2xx. O
histórico de tentativas, com o status HTTP e o corpo de cada resposta, fica
na página de configurações de
Webhooks.
2
Reative o endpoint, se ele tiver sido desativado
Endpoints desativados precisam ser reativados manualmente na mesma página.
3
Reenvie os eventos que ficaram para trás
Use Recover Failed para reenviar os eventos que falharam a partir de uma
data, ou Replay Missing para reenviar os eventos que nunca chegaram a
ser tentados enquanto o endpoint esteve desativado. Eventos individuais
também podem ser reenviados pelo histórico.
Segurança
Para garantir a autenticidade das requisições de webhook, recomendamos:- Utilizar HTTPS para sua URL de webhook
- Validar a origem da requisição verificando os cabeçalhos HTTP
- Implementar um mecanismo de retry e timeout adequado para lidar com falhas temporárias
Eventos disponíveis
Atualmente, a Salvy oferece os seguintes eventos via webhook:- SMS recebido (
sms.received): quando um SMS é recebido pelo número virtual - Linha ativada (
phone-account.activated): quando uma linha é ativada - Linha bloqueada (
phone-account.blocked): quando uma linha é bloqueada - Linha desbloqueada (
phone-account.unblocked): quando uma linha é desbloqueada - Linha cancelada (
phone-account.canceled): quando uma linha é cancelada - Linha reativada (
phone-account.reactivated): quando uma linha é reativada - eSIM pronto para instalação (
phone-account.esim-ready): quando o código de ativação do eSIM de uma linha fica disponível