Get started with webhooks
Stream Postgres changes to a webhook endpoint
In this quickstart, you’ll create a real-time data pipeline that streams changes from a Postgres database to a webhook endpoint. You’ll:
- Boot Sequin
- Connect to a sample playground database
- Create a webhook that receives database changes
- See your changes flow in real-time
By the end, you’ll have hands-on experience setting up Postgres change data capture (CDC) with Sequin. This same pattern can be used to keep other systems in sync with your database changes.
Run Sequin
The easiest way to get started with Sequin is with our Docker Compose file. This file starts a Postgres database, Redis instance, and Sequin server.
Create directory and start services
Create a directory for Sequin, download the Docker Compose file, and start the services:
Verify services are running
Check that Sequin is running using docker ps
:
You should see output like the following:
All three containers should be up and running (status: Up
).
Login
The Docker Compose file automatically configures Sequin with an admin user and a playground database.
Let’s log in to the Sequin web console:
Open the web console
After starting the Docker Compose services, open the Sequin web console at http://localhost:7376:
Login with default credentials
Use the following default credentials to login:
- Email:
- Password:
View the playground database
To get you started quickly, Sequin’s Docker Compose file creates a logical database called sequin_playground
with a sample dataset in the public.products
table.
Let’s take a look:
Navigate to Databases
In the Sequin web console, click Databases in the sidebar.
Select playground database
Click on the pre-configured sequin-playground
database:
The database “Health” should be green.
View contents of the products table
Let’s get a sense of what’s in the products
table. Run the following command:
This command connects to the running Postgres container and runs a psql
command.
You should see a list of the rows in the products
table:
We’ll make modifications to this table in a bit.
Create a Webhook Sink
With the playground database connected, you can create a sink. This sink will send changes to the products
table to an HTTP endpoint:
Navigate to Sinks
Click “Sinks” in the sidebar navigation, then click “Create Sink”.
Select sink type
Select “Webhook” as the sink type and click “Continue”.
Note "Source" configuration
In the “Source” card, note that the sequin-playground
database and products
table are pre-selected. Leave these defaults:
Setup a backfill
In the “Initial backfill” card, click the toggle to enable an initial backfill. You can leave the default start position, which will backfill all existing rows in the products
table:
Configure "HTTP Endpoint"
In the “HTTP Endpoint” card, click the dropdown “New HTTP Endpoint” and select “Create webhook.site endpoint”.
This will provision a test endpoint on Webhook.site for you to use:
Create the sink
You can leave the rest of the defaults. As configured, the webhook endpoint will first receive a backfill of all rows currently in the products
table. Then, it will receive all changes to the products
table in real-time.
Click “Create Sink” to finish setting up your webhook.
See changes flow to the webhook endpoint
On the new sink’s overview page, you should see the “Health” status turn green, indicating data is flowing to the webhook endpoint.
Let’s confirm messages are flowing, both on Sequin and on Webhook.site:
Messages tab
Click the “Messages” tab. You’ll see a list of the recently delivered messages:
Sequin indicates it backfilled the products
table to our webhook endpoint.
View on Webhook.site
Navigate back to the “Overview” tab. On the “HTTP Endpoint” card, click “View on Webhook.site”.
This opens a new tab with the webhook endpoint’s request log. You should see the most recently received message displayed:
This message is a read
event for a row in the products
table. A read
event indicates the event came from a Sequin backfill.
Messages are flowing from Sequin to the webhook endpoint.
Make some changes
Let’s make some changes to the products
table and see them flow to the webhook endpoint.
In your terminal, run the following command to insert a new row into the products
table:
Back on Webhook.site, you should see a new message appear in the request log:
Feel free to try other changes:
Each change will appear in Webhook.site within a few seconds.
Great work!
You’ve successfully:
- Set up a complete Postgres CDC pipeline
- Loaded existing data through a backfill
- Made changes to the
products
table - Verified changes are flowing to your webhook endpoint
Ready to stream
Now you’re ready to connect your own database to Sequin and start streaming changes:
Was this page helpful?