Recepção de eventos externos (Google Ads, Meta Ads) para criação automática
de leads e registro de conversões offline.
| Origem | Método | Rota |
|---|---|---|
| Google Ads | POST | /webhooks/google |
| Meta Ads (verificação) | GET | /webhooks/meta?hub.mode=subscribe&hub.verify_token=...&hub.challenge=... |
| Meta Ads (eventos) | POST | /webhooks/meta |
Os endpoints não usam CSRF (são chamados por terceiros).
WEBHOOK_ALLOW_UNSIGNED=false)..env: WEBHOOK_GOOGLE_SECRET, WEBHOOK_META_SECRET.WEBHOOK_META_VERIFY_TOKEN usado na verificação inicial.1. Google/Meta envia POST → /webhooks/{origem}
2. WebhookController::receber() valida assinatura HMAC
3. Persiste em webhook_eventos (status=recebido)
4. Enfileira ProcessarWebhookJob na fila 'webhooks'
5. Worker (bin/console queue:work webhooks) processa
6. Job cria/atualiza lead conforme tipo de evento
7. webhook_eventos.status vira 'processado' ou 'erro'
database (tabela fila_jobs).Uma vez (teste):
php bin/console queue:once webhooks
Contínuo (produção):
php bin/console queue:work webhooks
No cron (recomendado em hospedagem compartilhada sem systemd):
* * * * * cd /caminho && php bin/console queue:once webhooks >> logs/queue.log 2>&1
Como serviço systemd (VPS):
# /etc/systemd/system/gt-queue.service
[Unit]
Description=Gestão de Tráfego — Queue Worker
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/gestao-trafego
ExecStart=/usr/bin/php bin/console queue:work webhooks
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
/admin/fila — status em tempo real./admin/webhooks — eventos recebidos./health — inclui status da fila se configurado.php bin/console queue:status.# Enviar webhook de teste (dev, sem assinatura)
curl -X POST http://localhost/gestao-trafego/webhooks/google \
-H "Content-Type: application/json" \
-d '{"event_type":"conversion","gclid":"abc123","cliente_id":1,"full_name":"Teste"}'
Se WEBHOOK_ALLOW_UNSIGNED=true (dev), o evento é aceito.
php bin/console queue:prune 7 # remove jobs de +7 dias
# em produção, adicione em cron semanal