Webhooks
Reflex sends outbound notifications to configured notification channels when deployments change state.
Configuring channels
Navigate to Settings → Notification channels in your dashboard. Each channel requires:
- URL or destination — HTTPS webhook, Slack, email, or GitHub status, depending on channel type
- Events — Which deployment event types to subscribe to
- Secret — A shared secret for signature verification when the channel type supports it
Event types
These are the events the product actually emits (App\Enums\DeploymentNotificationEvent):
| Event | Description |
|---|---|
deployment.started | A deployment has begun |
deployment.succeeded | A deployment completed successfully |
deployment.failed | A deployment failed |
Outbound notification channels only emit the three deployment events above. cPanel alert hooks are a separate team setting, not this channel list.
Payload format
Channel payloads vary by destination (Slack blocks, GitHub status, generic JSON). Treat the dashboard “send test” as the source of truth for your channel type. A generic JSON body looks like:
{
"type": "deployment.succeeded",
"deployment_id": "dep_xyz789",
"server_id": "srv_def456"
}Signature verification
Signed webhook channel types include a signature header. Always verify the signature before processing any webhook payload.
Retry policy
Failed webhook deliveries (non-2xx response) are retried with backoff according to the channel implementation. Check the notification delivery log in the dashboard for failures.
Best practices
- Respond quickly — Return a
200within 5 seconds and process asynchronously - Verify signatures — Always validate the signature header when the channel signs requests
- Handle duplicates — The same event may be delivered more than once
- Monitor failures — Check the delivery log in your dashboard