mirror of
https://github.com/supabase/supabase.git
synced 2026-06-23 03:08:54 +08:00
* Adds pgnet and database webhooks * fixes name of pg_net * Adds the cron extension * Update apps/reference/docs/guides/database/database-webhooks.mdx Co-authored-by: Steve Chavez <stevechavezast@gmail.com> * Update apps/reference/docs/guides/database/extensions/pgnet.mdx Co-authored-by: Steve Chavez <stevechavezast@gmail.com> * Update apps/reference/docs/guides/database/database-webhooks.mdx Co-authored-by: dng <danny@supabase.io> * Update apps/reference/docs/guides/database/database-webhooks.mdx Co-authored-by: dng <danny@supabase.io> * Update apps/reference/docs/guides/database/database-webhooks.mdx Co-authored-by: dng <danny@supabase.io> * Update apps/reference/nav/_referenceSidebars.js Co-authored-by: dng <danny@supabase.io> * Update apps/reference/nav/_referenceSidebars.js Co-authored-by: dng <danny@supabase.io> * Update apps/reference/docs/guides/database/extensions/pgnet.mdx * Update apps/reference/docs/guides/database/extensions/pgnet.mdx * Update apps/reference/docs/guides/database/database-webhooks.mdx * Update apps/reference/docs/guides/database/database-webhooks.mdx * Update apps/reference/docs/guides/database/extensions/pgnet.mdx Co-authored-by: Steve Chavez <stevechavezast@gmail.com> Co-authored-by: dng <danny@supabase.io>
75 lines
2.1 KiB
Plaintext
75 lines
2.1 KiB
Plaintext
---
|
|
id: webhooks
|
|
title: 'Database Webhooks'
|
|
description: Trigger external payloads on database events.
|
|
---
|
|
|
|
import Tabs from '@theme/Tabs'
|
|
import TabItem from '@theme/TabItem'
|
|
|
|
Database Webhooks allow you to send real-time data from your database to another system whenever a table event occurs.
|
|
|
|
|
|
You can hook into three table events: `INSERT`, `UPDATE`, and `DELETE`. All events are fired _after_ a database row is changed.
|
|
|
|
Database Webhooks are very similar to triggers, and that's because Database Webhooks are just a convenience wrapper around triggers
|
|
using the [pg_net](/docs/guides/database/extensions/pgnet) extension. This extension is asynchronous, and therefore will not block your database changes for long-running network requests.
|
|
|
|
This video demonstrates how you can create a new customer in Stripe each time a row is inserted into a `profiles` table:
|
|
|
|
:::note
|
|
|
|
Database Webhooks were previously known as Function Hooks.
|
|
|
|
:::
|
|
|
|
<div class="video-container">
|
|
<iframe
|
|
src="https://www.youtube-nocookie.com/embed/codAs9-NeHM"
|
|
frameBorder="1"
|
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
|
allowFullScreen
|
|
></iframe>
|
|
</div>
|
|
|
|
## Creating a webhook
|
|
|
|
1. Create a new [Database Webhook](https://app.supabase.com/project/_/database/hooks) in the Dashboard.
|
|
1. Give your Webhook a name.
|
|
1. Select the table you want to hook into.
|
|
1. Select one or more events (table inserts, updates, or deletes) you want to hook into.
|
|
|
|
We currently support HTTP webhooks. These are sent as a `POST` request with a JSON payload.
|
|
|
|
## Payload
|
|
|
|
The payload is automatically generated from the underlying table record:
|
|
|
|
```typescript
|
|
type InsertPayload = {
|
|
type: 'INSERT'
|
|
table: string
|
|
schema: string
|
|
record: TableRecord<T>
|
|
old_record: null
|
|
}
|
|
type UpdatePayload = {
|
|
type: 'UPDATE'
|
|
table: string
|
|
schema: string
|
|
record: TableRecord<T>
|
|
old_record: TableRecord<T>
|
|
}
|
|
type DeletePayload = {
|
|
type: 'DELETE'
|
|
table: string
|
|
schema: string
|
|
record: null
|
|
old_record: TableRecord<T>
|
|
}
|
|
```
|
|
|
|
## Resources
|
|
|
|
- [pg_net](/docs/guides/database/extensions/pgnet): an async networking extension for PostgreSQL
|