Webhook Notifications¶
Adwize can push alerts to any HTTP endpoint via webhooks. Use this to integrate with Slack, PagerDuty, Microsoft Teams, or your own systems.
Setup¶
- Go to Settings > Integrations (or update via API:
PATCH /api/v1/tenants/me). - Enter your Webhook URL — the endpoint Adwize will POST to when an alert is triggered.
- Save.
Payload Format¶
When an alert is triggered, Adwize sends a POST request to your webhook URL with a JSON body:
{
"alert_id": "550e8400-e29b-41d4-a716-446655440000",
"rule_name": "Purchase Missing Transaction ID",
"rule_type": "missing_field",
"severity": "critical",
"message": "Required field 'transaction_id' missing in 12 events",
"triggered_at": "2026-02-11T14:30:00Z",
"details": {
"event_type": "purchase",
"missing_fields": ["transaction_id"],
"affected_events": 12
}
}
Slack Integration¶
To send alerts to a Slack channel:
- Create a Slack Incoming Webhook for your channel.
- Paste the Slack webhook URL into Adwize's webhook configuration.
Adwize sends a structured JSON payload. To format it nicely in Slack, use a middleware like Zapier or a simple Lambda function that transforms the payload into Slack's Block Kit format.
Testing¶
After configuring your webhook URL, you can verify it works by:
- Creating a rule with a low threshold that will trigger quickly.
- Watching for the webhook delivery to your endpoint.
Use a tool like webhook.site for testing
During setup, point your webhook to webhook.site to inspect the exact payload Adwize sends before connecting to your production endpoint.
Retry Policy¶
Failed webhook deliveries are retried up to 3 times with exponential backoff. If all retries fail, the delivery is marked as failed and logged. You can view webhook delivery logs in the web UI under Settings > Integrations.
Payload Examples¶
Threshold Rule Alert¶
{
"alert_id": "550e8400-e29b-41d4-a716-446655440000",
"rule_name": "High Error Rate",
"rule_type": "threshold",
"severity": "critical",
"message": "Threshold exceeded: 15 > 10 in 15 min window",
"triggered_at": "2026-02-11T14:30:00Z",
"details": {
"source": "gtm",
"event_type": "error",
"field": "count",
"operator": ">",
"value": 10,
"window_minutes": 15,
"actual_value": 15
}
}
Missing Field Rule Alert¶
{
"alert_id": "550e8400-e29b-41d4-a716-446655440000",
"rule_name": "Purchase Missing Transaction ID",
"rule_type": "missing_field",
"severity": "critical",
"message": "Required field 'transaction_id' missing in 12 events",
"triggered_at": "2026-02-11T14:30:00Z",
"details": {
"event_type": "purchase",
"missing_fields": ["transaction_id"],
"affected_events": 12
}
}
Volume Rule Alert¶
{
"alert_id": "550e8400-e29b-41d4-a716-446655440000",
"rule_name": "Purchase Volume Drop",
"rule_type": "volume",
"severity": "critical",
"message": "Purchase volume dropped 50% vs baseline",
"triggered_at": "2026-02-11T14:30:00Z",
"details": {
"event_type": "purchase",
"threshold_percent": -50,
"current_window_minutes": 60,
"comparison_window_hours": 24,
"baseline_count": 1000,
"current_count": 500
}
}