> For the complete documentation index, see [llms.txt](https://developer.kizen.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.kizen.com/docs/integrations-and-plugins/integrations/postgres/enable-postgres-in-kizen.md).

# Enable Postgres in Kizen

{% hint style="success" %}
**Audience:** Admins, Developers, Solution Architects

**Purpose:** Explains how to configure the Postgres integration to use live PostgreSQL data in Agentic Workflows
{% endhint %}

## Overview

{% hint style="warning" %}
**Caution:** This setup reflects Kizen's default configuration. Your administrator may have customized your layout, so columns or navigation may appear differently. Trial accounts may have limited features.
{% endhint %}

To use PostgreSQL data in <code class="expression">space.vars.automations</code>, you must first enable the Postgres integration in <code class="expression">space.vars.Kizen\_company\_name</code>.

***

## Before You Begin

Before you enable the Postgres integration, ensure you have:

* Any PostgreSQL instance, whether self-hosted or managed through Amazon RDS, Google Cloud SQL, Aurora PostgreSQL, or a similar service&#x20;
* A PostgreSQL database, version 11 or later, that is network-reachable from <code class="expression">space.vars.Kizen\_company\_name</code>'s egress IP addresses
* A PostgreSQL role with the necessary read or write privileges on the target database tables
* Org Admin access in <code class="expression">space.vars.Kizen\_company\_name</code>

***

## Enable Postgres in Kizen

To enable Postgres in <code class="expression">space.vars.Kizen\_company\_name</code>:

{% stepper %}
{% step %}

#### Configure your PostgreSQL network

To configure your PostgreSQL network to work with <code class="expression">space.vars.Kizen\_company\_name</code>:

* **Add Kizen's egress IP addresses to the allowlist on your PostgreSQL database or proxy.** For the current list of egress IPs, contact your <code class="expression">space.vars.Kizen\_company\_name</code> representative.
* **Set your firewall to allow inbound TCP traffic on the PostgreSQL port.** This port is usually but not necessarily `5432`. If you aren't sure of the correct port number, check your PostgreSQL configuration.
* **Optionally turn on SSL for your PostgreSQL instance.** To maintain security, we recommend that you use SSL unless you connect to the instance through a trusted private network or VPN.
  {% endstep %}

{% step %}

#### Go to the App Marketplace

In the global navigation of <code class="expression">space.vars.Kizen\_company\_name</code>, select **Platform** > **App Marketplace**.

<div data-with-frame="true"><figure><img src="/files/WRhU4YYBQOz9505bRxXK" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

#### Turn on the Postgres connection

Find the Postgres Connection card, and turn on the slider.

<div data-with-frame="true"><figure><img src="/files/3broBix9Qauz0RlkGnM6" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
**Note:** If the Update Integration Secret modal appears after you turn on the slider, skip ahead to [Step 6](#enter-your-postgresql-credentials).
{% endhint %}
{% endstep %}

{% step %}

#### Go to your Integration Secrets Manager

Select **Manage Secrets** on the Postgres Connection card. A settings page appears with your integration secrets.

<div data-with-frame="true"><figure><img src="/files/5DzRLz4IlSS0X1Dk9hO9" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

#### Edit the Postgres Connection Integration Secret

Open the Actions menu for the Postgres Connection plugin app, and select **Edit**.

<div data-with-frame="true"><figure><img src="/files/4jE9fP7XjALMmINwizyw" alt="" width="563"><figcaption></figcaption></figure></div>

The Update Integration Secret modal appears.

<div data-with-frame="true"><figure><img src="/files/Yh72YivhAwREjdrm5Lik" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

#### Enter your PostgreSQL credentials

In the Integration Secret field of the modal, enter your PostgreSQL connection credentials as a JSON object. The JSON object must contain `host`, `port`, `user-name`, and `password` keys, like this:

```json
{
  "host": "db.company.com",
  "port": 5432,
  "user_name": "kizen_ro_user",
  "password": "secret"
}
```

Store multiple environments as nested JSON objects:

```json
{
  "production_db": {
    "host": "db.company.com",
    "port": 5432,
    "user_name": "kizen_ro_user",
    "password": "secret"
  },
  "staging_db": {
    "host": "staging.db.company.com",
    "port": 5432,
    "user_name": "kizen_ro_user",
    "password": "secret"
  }
}
```

For descriptions of the keys, see the following table:

| Key         | Type      | Description                                          |
| ----------- | --------- | ---------------------------------------------------- |
| `host`      | `String`  | The host name or IP address of the PostgreSQL server |
| `port`      | `Integer` | The PostgreSQL server port                           |
| `user_name` | `String`  | The user name of the connecting PostgreSQL account   |
| `password`  | `String`  | The password of the connecting PostgreSQL account    |

{% hint style="info" %}
**Note:** <code class="expression">space.vars.Kizen\_company\_name</code> hides your secret once you submit it, so you can't append a new environment to an existing secret. You must re-enter the credentials for all your environments along with the new one. Consider keeping a secure record of each environment's connection details outside of <code class="expression">space.vars.Kizen\_company\_name</code> so you can refer to the full set whenever you add a new environment.
{% endhint %}
{% endstep %}

{% step %}

#### Save the Integration Secret

Select **Save**.
{% endstep %}
{% endstepper %}

***

## What's Next

Now that you've set up the Postgres integration, you're ready to use the Read Data and Write Data actions in <code class="expression">space.vars.automations</code>. Continue to [Add Postgres Data to an Agentic Workflow](/docs/integrations-and-plugins/integrations/postgres/add-postgres-data-to-an-agentic-workflow.md) to learn how.

<details>

<summary><strong>Related Topics</strong></summary>

* [Postgres](/docs/integrations-and-plugins/integrations/postgres.md)
* [Add Postgres Data to an Agentic Workflow](/docs/integrations-and-plugins/integrations/postgres/add-postgres-data-to-an-agentic-workflow.md)
* [Troubleshoot Postgres](/docs/integrations-and-plugins/integrations/postgres/troubleshoot-postgres.md)

</details>

***

*Postgres, PostgreSQL, and the Slonik Logo are trademarks or registered trademarks of the PostgreSQL Community Association of Canada. Kizen's PostgreSQL integration is not affiliated with, sponsored by, or endorsed by the PostgreSQL Community Association of Canada, the PostgreSQL Global Development Group, or the PostgreSQL Project.*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developer.kizen.com/docs/integrations-and-plugins/integrations/postgres/enable-postgres-in-kizen.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
