Database Webhooks

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 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:


Database Webhooks were previously known as Function Hooks.

Creating a webhook#

  1. Create a new Database Webhook in the Dashboard.
  2. Give your Webhook a name.
  3. Select the table you want to hook into.
  4. 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.


The payload is automatically generated from the underlying table record:

1type InsertPayload = {
2  type: 'INSERT'
3  table: string
4  schema: string
5  record: TableRecord<T>
6  old_record: null
8type UpdatePayload = {
9  type: 'UPDATE'
10  table: string
11  schema: string
12  record: TableRecord<T>
13  old_record: TableRecord<T>
15type DeletePayload = {
16  type: 'DELETE'
17  table: string
18  schema: string
19  record: null
20  old_record: TableRecord<T>


  • pg_net: an async networking extension for PostgreSQL