Skip to main content
Você recebe callbacks POST de qualquer serviço externo (gateways de pagamento, GitHub, CRMs, etc.), valida o payload e processa o evento. Padrão: rota personalizada + somente POST + MCP desativado + validação de payload.
index.ts

Testes locais

Por que funciona dessa forma

  • config.methods: ["POST"] — rejeita GET, PUT, etc. Webhooks são sempre POST.
  • config.mcp: false — não faz sentido expor um webhook como ferramenta de IA.
  • config.path — rota fixa que você configura no serviço externo.
  • O schema input valida a estrutura do payload antes de chegar ao handler.

Verificar a assinatura do webhook

Uma função pública pode ser chamada por qualquer pessoa que conheça a URL. Em produção, verifique a assinatura do serviço antes de processar o evento — ctx.verify* faz isso em uma linha:
Se a assinatura não corresponder, lança erro e o evento não chega à sua lógica. Para Stripe, Shopify e Meta use o verificador de cada provedor, que já conhece seu header e seu secret:
Configure o secret antes do deploy: jelou functions secrets set meu-webhook WEBHOOK_SECRET=whsec_...

Guia de webhooks

Provedores suportados, rotação de secrets, códigos de erro e testes.