INSERT/UPDATE/DELETE events to Kestrel.
Prerequisites
- Organization Admin role in Kestrel
- A Supabase account with at least one project
- A Supabase Personal Access Token
- (Optional) A Database Webhook signing secret, only needed for the Database Row Event trigger
Setup
1
Create a Personal Access Token
In the Supabase dashboard, open Account → Access Tokens, click Generate new token, give it a name (e.g.
kestrel), and copy the generated token (shown only once).The token is sent as a bearer token to https://api.supabase.com to read project, branch, backup, and health state and perform control-plane actions.2
Connect in Kestrel
- Navigate to Integrations → Supabase in your Kestrel dashboard.
- Paste your Personal Access Token.
- (Optional) Set a custom API URL for self-hosted/enterprise endpoints.
- Choose a Poll Interval (how often Kestrel checks the Management API for health/backup/replica/branch events).
- (Optional) Set a Database Webhook Secret if you plan to use the Database Row Event trigger.
- Click Connect Supabase — your Supabase organization appears as connected.
3
(Optional) Register a Database Webhook
Only needed for the Database Row Event trigger:
- In the Supabase dashboard, open Database → Webhooks and create a webhook on the table(s) you want to watch.
- Set the URL to the Kestrel webhook URL shown on the Integrations → Supabase connect screen (it ends in
/api/webhooks/supabase). - Add an HTTP header
X-Supabase-Webhook-Secretwhose value matches the signing secret you set when connecting. - Select the table events (insert/update/delete) you want to forward.
Control-plane triggers are detected by polling, so there may be up to one poll interval of delay before a workflow fires. The minimum poll interval is 60 seconds. Database Row Event triggers fire as soon as the webhook delivery is verified.
How It’s Used
In Workflows
Trigger blocks:- Project Health Degraded — fires when a project service (db, auth, rest, realtime, storage, pooler) is unhealthy (poll-based)
- Backup Failed — fires when a project’s most recent database backup failed (poll-based)
- Read Replica Unhealthy — fires when a project read replica is unhealthy (poll-based)
- Usage/Quota Threshold — fires when a project crosses a usage/quota threshold (poll-based)
- Branch Created — fires when a new database branch is created (poll-based)
- Branch Migration Failed — fires when a database branch enters a failed migration state (poll-based)
- Database Row Event — fires on table INSERT/UPDATE/DELETE delivered by a Supabase Database Webhook
- List Projects / Get Project / Get Project Health — inspect projects and per-service health
- Create Branch — create an ephemeral preview database branch (ideal for PR previews)
- List Branches / Get Branch — inspect branches and their connection refs
- Merge Branch / Reset Branch — run or redo a branch’s migrations against its parent
- Delete Branch — permanently delete a branch (gate behind an Approval node)
- List Backups — list backups and PITR availability
- Create Restore Point — create a named checkpoint before a risky migration
- Restore Backup (PITR) — point-in-time restore (destructive; gate behind an Approval node)
- Setup Read Replica / Remove Read Replica — manage read replicas
- Pause Project / Restore Project — pause/un-pause a project for cost control
- Get Network Restrictions / Update Network Restrictions — review and lock down a project’s allowed CIDRs
- List API Keys — list API key metadata (secret values are never returned)
- Investigate Supabase — run an AI investigation of unhealthy projects, failed backups, and branch failures
{{signal.project_ref}} and {{signal.branch_id}} from the trigger.
Example: When a pull request opens, create a Supabase preview database branch, run migrations, and post the branch connection details to Slack; when the PR closes, delete the branch.
Example: When a project backup fails, run an AI investigation, page on-call via PagerDuty, and open a Jira ticket.
Disconnecting
- Navigate to Integrations → Supabase
- Click Disconnect
- Confirm the disconnection