> ## Documentation Index
> Fetch the complete documentation index at: https://sequinstream.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecting to Neon

> Set up Postgres change data capture (CDC) with Neon's serverless Postgres database in minutes.

This guide provides step-by-step instructions to connect your [Neon](https://neon.tech/) database to Sequin.

## Provision a Postgres user for Sequin

When in development, it's probably fine to supply Sequin with an existing user.

However, when in production, you should create a dedicated user for Sequin. The user needs the following permissions:

1. `connect` permission on the database.
2. `select` permission on all the tables you want to connect to Sequin.
3. `replication` permission to read from replication slots.

Here's how to create a dedicated user with the minimum required permissions:

```sql theme={null}
-- Create user with a secure password
create user sequin_user with password 'REPLACE_WITH_SECURE_PASSWORD';

-- Grant connect permission
grant connect on database your_database to sequin_user;

-- Grant select permission on tables you want to replicate
grant select on table table1, table2, table3 to sequin_user;
-- OR grant select on all tables in a schema
grant select on all tables in schema public to sequin_user;

-- Grant replication permission
alter user sequin_user with replication;
```

To generate a secure password, if you have OpenSSL installed, you can use the following command:

```bash theme={null}
openssl rand -base64 32
```

## Enable logical replication on Neon

By default, logical replication is not enabled on Neon. To turn it on, follow these steps:

<Steps titleSize="h3">
  <Step title="Navigate to your project's logical replication settings">
    Open your project in the [Neon console](https://console.neon.tech/). Then, navigate to the **Beta** section: "Project settings" > "Logical Replication".
  </Step>

  <Step title="Enable logical replication">
    Click on the **Enable** button to activate logical replication.

    <Frame>
      <img src="https://mintcdn.com/sequinstream/BsnEA8B24cYdMBsV/images/guides/neon/neon-replication-beta.png?fit=max&auto=format&n=BsnEA8B24cYdMBsV&q=85&s=55c3612dcba59688d4c081cb03ebf89f" alt="Enable logical replication" width="2470" height="1618" data-path="images/guides/neon/neon-replication-beta.png" />
    </Frame>
  </Step>
</Steps>

<Note>
  Learn more about enabling logical replication in Neon [here](https://neon.tech/docs/guides/logical-replication-neon#enabling-logical-replication-in-neon).
</Note>

## Connect Sequin to your Neon database

After enabling logical replication on Neon, you'll now connect to your Neon database in Sequin.

<Steps titleSize="h3">
  <Step title="Enter connection details in Sequin">
    In the Sequin Console, click on the "Connect Database" button and enter the following details for your Neon database:

    <Note>
      You can find these connection details in your Neon project dashboard under the "Connection details" section:

      <Frame>
        <img src="https://mintcdn.com/sequinstream/BsnEA8B24cYdMBsV/images/guides/neon/neon-connection-details.png?fit=max&auto=format&n=BsnEA8B24cYdMBsV&q=85&s=08cde7c17a11718d66fd565afb201b04" alt="Neon connection details" width="2468" height="1854" data-path="images/guides/neon/neon-connection-details.png" />
      </Frame>
    </Note>

    * Host: Your Neon host (e.g., `ep-cool-snow-123456.us-east-2.aws.neon.tech`)
    * Port: 5432 (default Postgres port)
    * Database: Your database name
    * Username: The sequin database user you created earlier
    * Password: The password for your sequin database user

    Make sure to enable the "SSL" option for secure connection.
  </Step>

  <Step title="Create a publication">
    Connect to your database using the SQL client of your choice and execute the following SQL query to create a publication:

    ```sql theme={null}
    CREATE PUBLICATION sequin_pub FOR TABLE table1, table2, table3 WITH (publish_via_partition_root = true);
    ```

    If you want to publish changes from all tables, you can use:

    ```sql theme={null}
    CREATE PUBLICATION sequin_pub FOR ALL TABLES WITH (publish_via_partition_root = true);
    ```
  </Step>

  <Step title="Create a replication slot">
    Next, create a replication slot to capture changes from the publication:

    ```sql theme={null}
    SELECT pg_create_logical_replication_slot('sequin_slot', 'pgoutput');
    ```
  </Step>

  <Step title="Enter the replication slot details in Sequin">
    Back in the Sequin Console, enter the name of the replication slot (e.g. `sequin_slot`) and publication (e.g. `sequin_pub`) you just created. Then, name your database and click **Create Database**.
  </Step>
</Steps>

## Create a sink

With your Neon database connected to Sequin, you are ready to create a sink. Follow one of our guides below to get started:

<CardGroup cols={2}>
  <Card title="Stream to Webhooks" icon="webhook" href="/how-to/stream-postgres-to-a-webhook-endpoint">
    Send database changes to your HTTP endpoints to trigger workflows and keep services in sync
  </Card>

  <Card title="Stream to Redis" icon="layer-group" href="/how-to/stream-postgres-to-redis-stream">
    Stream changes to Redis Streams for real-time data processing and caching
  </Card>

  <Card title="Stream to Kafka" icon="code-branch" href="/how-to/stream-postgres-to-kafka">
    Publish database changes to Kafka topics for event streaming and processing
  </Card>

  <Card title="Stream to SQS" icon="aws" href="/how-to/stream-postgres-to-sqs">
    Send changes to AWS SQS queues to trigger Lambda functions and other AWS services
  </Card>

  <Card title="Stream to GCP Pub/Sub" icon="aws" href="/how-to/stream-postgres-to-gcp-pubsub">
    Send changes to GCP Pub/Sub topics to trigger Cloud Functions and power event-driven architectures
  </Card>
</CardGroup>
