Webhook: Tutorial Completo 2025

📚 Série: Automação & Integrações → API WhatsApp | Evolution API | N8N Automação

O que é Webhook?

Webhook é um método HTTP que permite sistemas enviarem notificações automáticas em tempo real quando eventos específicos ocorrem. Funciona como “API reversa” onde o servidor envia dados para sua aplicação, eliminando polling e reduzindo latência para milissegundos. Usado em 80% das integrações modernas.

Diferente de APIs tradicionais onde você consulta dados periodicamente (polling), webhooks empurram informações instantaneamente quando algo acontece.


Por que Webhook é essencial em 2025

Vantagens vs Polling tradicional

CaracterísticaWebhookPolling
Latência<100ms5-60s
Requisições1 por eventoMilhares/dia
Custo APIR$ 0,001/eventoR$ 50-200/mês
Carga servidorMínimaAlta

Webhooks economizam 95% das requisições vs polling, reduzindo custos e aumentando velocidade. Segundo pesquisa Salesforce, 79% das empresas usam webhooks em 2025.


Tutorial: Webhook com Flask Python

Setup inicial

from flask import Flask, request, jsonify
import hmac
import hashlib

app = Flask(__name__)
WEBHOOK_SECRET = "seu_segredo_compartilhado"

@app.route('/webhook/whatsapp', methods=['POST'])
def webhook_whatsapp():
    # 1. Validar assinatura
    payload = request.get_data()
    signature = request.headers.get('X-Hub-Signature-256', '')
    
    hash_esperado = hmac.new(
        WEBHOOK_SECRET.encode(),
        payload,
        hashlib.sha256
    ).hexdigest()
    
    if not hmac.compare_digest(hash_esperado, signature.replace('sha256=', '')):
        return jsonify({"error": "Assinatura inválida"}), 401
    
    # 2. Processar dados
    data = request.get_json()
    mensagem = data['entry'][0]['changes'][0]['value']['messages'][0]
    
    numero = mensagem['from']
    texto = mensagem['text']['body']
    
    # 3. Responder rápido (< 5s)
    return jsonify({"status": "ok"}), 200

if __name__ == '__main__':
    app.run(port=5000)

Caso Real: E-commerce reduziu 95% de requisições

Empresa: Loja online eletrônicos (500 pedidos/dia)

Problema:

  • Polling Mercado Pago a cada 30s
  • 2.880 requisições/dia desnecessárias
  • Latência 15-45s pagamento → aprovação
  • 12% carrinho abandonado
  • Custo: R$ 180/mês

Solução:

  • Webhook Mercado Pago
  • Flask + Celery + Redis
  • Validação HMAC SHA256
  • Deploy VPS $20/mês

Resultados (3 meses):

  • ✅ Requisições: -95% (2.880 → 142/dia)
  • ✅ Latência: -93% (15-45s → <2s)
  • ✅ Carrinhos abandonados: -42% (12% → 7%)
  • ✅ Conversão: +17% (78% → 91%)
  • ✅ Custo: -96% (R$ 180 → R$ 8/mês)
  • ✅ ROI: 1.200%

Principais provedores

WhatsApp

Meta Cloud API:

Evolution API:

  • Open-source, sem aprovação Meta
  • evolution-api.com
  • Webhook por instância
  • Eventos: message, status, qrcode

Pagamentos

Stripe:

Mercado Pago:

CRM

Pipedrive:

HubSpot:


Segurança: validação obrigatória

HMAC SHA256 (recomendado)

import hmac
import hashlib

def validar_hmac(payload_bytes, signature, secret):
    hash_esperado = hmac.new(
        secret.encode(),
        payload_bytes,
        hashlib.sha256
    ).hexdigest()
    
    return hmac.compare_digest(hash_esperado, signature)

# Uso:
if not validar_hmac(request.get_data(), signature, SECRET):
    return 'Inválido', 401

Sem validação, qualquer um pode enviar POST falso e simular eventos fraudulentos.


Deploy com HTTPS (obrigatório)

# Nginx + SSL grátis
sudo apt install nginx certbot python3-certbot-nginx

# Configurar
sudo nano /etc/nginx/sites-available/webhook

# Obter SSL
sudo certbot --nginx -d webhook.seudominio.com.br

Webhooks exigem HTTPS. Use Certbot para SSL grátis Let’s Encrypt.


Próximos passos

  1. Integração API: Guia Completo - REST, GraphQL e autenticação
  2. API WhatsApp - Enviar/receber mensagens
  3. Evolution API - Setup WhatsApp completo
  4. N8N Automação - Workflows sem código

Sobre o autor: Felipe Zanoni é especialista em integrações webhook, com 400+ implementações para empresas brasileiras e 5.000+ webhooks processados diariamente.