Files
supabase/apps/reference/docs/guides/database/database-webhooks.mdx
Copple ca63127db1 Docs: Adds pgnet and database webhooks (#9803)
* 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>
2022-10-26 12:39:53 +00:00

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