Docs
Schema drift alerts.
When a webhook payload changes shape, you find out before it breaks your dashboard. Here's exactly what we detect, how we aggregate, and where the alert lands.
Three change classes
- New field. A JSON path we've never seen before appears. Example:
data.object.payment_method_details.card.iinshows up in Stripe charge events. - Type change. A field we've always seen as one type now appears as another. Example:
amountused to beint64; now we're seeing strings. - Field disappearing. A path that was present in ≥99% of events over the last 30 days now appears in <50% of the last 24h. Useful for catching deprecated fields.
Aggregation window
To avoid noise from a single weird event, drift findings buffer for 1 hour and require at least 10 events with the change before firing. Both thresholds are tunable at the workspace level via /w/[slug]/alerts-config.
Delivery channels
Slack
Hooktopus posts to an incoming webhook URL you provide. Create one at your-workspace.slack.com/marketplace → "Incoming Webhooks". Paste the URL into/w/[slug]/alerts-config. Test from the same page with the "Send test" button.
{
"blocks": [
{
"type": "header",
"text": { "type": "plain_text", "text": "🆕 New field in stripe.charge.succeeded" }
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Field:* `data.object.payment_method_details.card.iin`\n*Seen in:* 92% of last hour\n*Sample:* \"424242\""
}
},
{
"type": "actions",
"elements": [
{ "type": "button", "text": { "type": "plain_text", "text": "Regenerate stg_stripe" }, "url": "https://app.hooktopus.io/..." }
]
}
]
}
Recipients live in /w/[slug]/alerts-config. Default is the workspace owner. Add team members (comma-separated). Per-event emails are sent immediately when an alert fires; a daily digest summarizing the last 24h is delivered at 8 AM in the workspace's timezone.
Dashboard timeline
Every change is also recorded in schema_changes and surfaced at /w/[slug]/schema-changes — grouped by day, with sample event IDs, before/after snippets, and a one-click "Regenerate dbt" link.
The heartbeat alert
Separate from schema drift: if an endpoint hasn't received an event in N hours, you get an email. Default is 24h. Useful for catching upstream auth issues where your source stopped sending altogether.
What you can't currently turn on
- Per-field severity (treat new
card.iinas low-pri but type change onamountas page-worthy) — coming in v1.3. - Custom Slack channel routing by endpoint — coming in v1.2.
- Webhook destinations (post alerts to PagerDuty / Opsgenie) — request via support if you need it sooner.