> 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.md).

# Postgres

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

**Purpose:** Explains what the Postgres integration is, when to use it, and how it works within your Agentic Workflows
{% endhint %}

## Overview

Run SQL queries and statements against an external PostgreSQL database directly from an <code class="expression">space.vars.automation</code> in <code class="expression">space.vars.Kizen\_company\_name</code> and use the results in later steps with the Postgres integration.

### What Is the Postgres Integration?

The Postgres integration adds two action steps to the <code class="expression">space.vars.automation</code> builder:

* **Read Data**: Runs a `SELECT` query against your PostgreSQL database and returns the results to a variable
* **Write Data**: Executes `INSERT`, `UPDATE`, or `DELETE` statements and returns the number of affected <code class="expression">space.vars.entities</code>

You configure the connection to your PostgreSQL database once, as an integration secret in <code class="expression">space.vars.Kizen\_company\_name</code>. See [Enable Postgres in Kizen](/docs/integrations-and-plugins/integrations/postgres/enable-postgres-in-kizen.md) for details.

The integration supports a single PostgreSQL environment or multiple environments, each with its own connection credentials. If you have more than one environment, you specify which to query when you call Read Data or Write Data from your <code class="expression">space.vars.automation</code>.&#x20;

To learn more, see [Add Postgres Data to an Agentic Workflow](/docs/integrations-and-plugins/integrations/postgres/add-postgres-data-to-an-agentic-workflow.md).

### When to Use the Postgres Integration

Use the Postgres integration when an <code class="expression">space.vars.automation</code> needs to check or update data that lives outside <code class="expression">space.vars.Kizen\_company\_name</code>, in a PostgreSQL application database or data warehouse, before continuing to the next step. You don't need to copy the data into <code class="expression">space.vars.Kizen\_company\_name</code> first. The integration handles the communication with the PostgreSQL server.

#### Common Use Cases

* Confirming a patient's prior authorization status before scheduling
* Updating an insurance claim record after automated review
* Checking a credit applicant's real-time debt-to-income ratio

***

## How the Postgres Integration Works

Before you configure the Postgres integration, it's important to understand how it functions at a conceptual level.

### Connection Model

Connecting to a PostgreSQL database from <code class="expression">space.vars.Kizen\_company\_name</code> requires a PostgreSQL role with the appropriate read and write privileges on the tables to query. But instead of using an authorization protocol like OAuth, the Postgres integration keeps track of your connection credentials as an integration secret. A single secret can hold credentials to multiple PostgreSQL environments, such as production and staging, as separate keys. You select which environment to use at each Read Data or Write Data step of the <code class="expression">space.vars.automation</code>.&#x20;

For more information, see [Add Postgres Data to an Agentic Workflow](/docs/integrations-and-plugins/integrations/postgres/add-postgres-data-to-an-agentic-workflow.md).

### Query Execution

Queries and statements execute synchronously, so the <code class="expression">space.vars.automation</code> waits at the Read Data or Write Data step until the PostgreSQL database returns the result. The step times out on the <code class="expression">space.vars.Kizen\_company\_name</code> side after 30 seconds.

### Rate Limiting

Rate limits are subject to your PostgreSQL server's maximum number of connections, per-role connection limits, and timeout setting.

If you exceed the rate limit, PostgreSQL refuses the connection, and the <code class="expression">space.vars.automation</code> step fails immediately. <code class="expression">space.vars.Kizen\_company\_name</code> doesn't retry the request. Because the query never runs, a blocked Write Data step doesn't write any changes to the database.&#x20;

For more information, see [Troubleshoot Postgres](/docs/integrations-and-plugins/integrations/postgres/troubleshoot-postgres.md).

### Results Handling

Both the Read Data and Write Data steps include the Return Single Value input, which, when `true`, signifies that you expect to return exactly one row and one column from the database. The result comes back as a string. When `false`, the full result set comes back as a single string in JSON format. To refer to the values of individual keys in later steps of the <code class="expression">space.vars.automation</code>, parse the JSON string in a Code step.

Please also note the following:

* Results sets larger than 5 MB might be truncated. Use `LIMIT` in the query to narrow the results.
* A result with multiple rows isn't auto-paginated. If you need pages, use `LIMIT` and `OFFSET` in the query.
* A query that returns no rows returns an empty string, not the null value.

### Failure Handling

If a connection or query fails, for example because of invalid credentials, an unreachable database, or invalid SQL, the step fails immediately and results in an error message. For more information, see [Troubleshoot Postgres](/docs/integrations-and-plugins/integrations/postgres/troubleshoot-postgres.md). <code class="expression">space.vars.Kizen\_company\_name</code> doesn't automatically retry a failed step, so after you correct the underlying issue, rerun the step manually.

### Data Safety

If your <code class="expression">space.vars.automation</code> writes data to your database, be sure to validate its behavior thoroughly on non-production data first. You can't roll back a Write Data operation after it executes, and the operation might partially apply if an error occurs during execution.

To maximize the safety of your data, grant the connected user role the appropriate level of access to PostgreSQL data and operations. If you don't intend to write data, for example, a read-only user with `SELECT` privileges on the specific tables to read is sufficient. Avoid PostgreSQL superusers.

***

## Available Postgres Actions and Topics

For step-by-step instructions on using the Postgres integration, see the following topics:

* [Enable Postgres in Kizen](/docs/integrations-and-plugins/integrations/postgres/enable-postgres-in-kizen.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)

***

## What's Next

Continue to [Enable Postgres in Kizen](/docs/integrations-and-plugins/integrations/postgres/enable-postgres-in-kizen.md) to configure your PostgreSQL network, turn on the Postgres integration, and enter your connection credentials as an integration secret.

<details>

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

* [Enable Postgres in Kizen](/docs/integrations-and-plugins/integrations/postgres/enable-postgres-in-kizen.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.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.
