Webhooks
Os webhooks permitem receber notificações HTTP em tempo real quando eventos ocorrem no seu tenant do FeedbackPulse.
Configuração
Via Painel
- Vá para Configurações > Integrações
- Insira sua URL de Webhook
- Selecione quais eventos assinar
- Opcionalmente, defina um segredo para verificação de assinatura HMAC
- Salve
Via API
PUT /api/v2/webhooks/config
{
"url": "https://your-app.com/webhooks/feedbackpulse",
"events": ["submission.created", "submission.status_changed"],
"secret": "your_shared_secret"
}
Payload do Webhook
Quando um evento ocorre, o FeedbackPulse envia uma requisição POST para sua URL:
{
"event": "submission.created",
"timestamp": "2024-03-15T10:30:00Z",
"data": {
"id": 42,
"campaign_id": 1,
"star_rating": 5,
"text_feedback": "Love this product!",
"customer_name": "Jane Doe",
"status": "pending"
}
}
Headers
Content-Type: application/json
X-FeedbackPulse-Signature: sha256=abc123...
X-FeedbackPulse-Event: submission.created
Verificação de Assinatura
Se você definir um segredo de webhook, verifique a assinatura:
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_FEEDBACKPULSE_SIGNATURE'];
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(403);
exit('Invalid signature');
}
Endpoints Suportados
O FeedbackPulse detecta automaticamente e formata payloads para:
| Serviço | Padrão de URL | Formato |
|---|---|---|
| Slack | hooks.slack.com/* | Formato Slack Block Kit |
| Discord | discord.com/api/webhooks/* | Formato Discord embed |
| Personalizado | Qualquer URL HTTPS | Payload JSON bruto |
Proteção SSRF
As URLs de webhook são validadas para prevenir Server-Side Request Forgery:
localhost,127.0.0.1,0.0.0.0são bloqueados- Faixas de IP privado (10.x, 172.16-31.x, 192.168.x) são bloqueadas
- Apenas URLs HTTPS públicas são permitidas
Logs de Webhook
Visualize o histórico de entregas:
Via Painel
Configurações > Integrações > Logs de Webhook
Uma página dedicada de Logs de Webhook também está disponível em /webhooks/logs, fornecendo um histórico completo de entregas com detalhes de resposta e opções de filtragem. Você pode filtrar por tipo de evento, código de status e intervalo de datas, e inspecionar o payload completo da requisição e o corpo da resposta para cada tentativa de entrega.
Visualizador de Logs de Webhook do Admin
Os superadmins têm acesso a um visualizador de logs de webhook em toda a plataforma em /admin/webhook-logs. Isso fornece visibilidade nas entregas de webhook em todos os tenants, útil para diagnosticar problemas de integração e monitorar a saúde da plataforma.
Via API
GET /api/v2/webhooks/logs
Cada entrada de log mostra:
- Tipo de evento
- URL
- Código de resposta
- Payload enviado
- Corpo da resposta
- Timestamp