> 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/snowflake/enable-snowflake-in-kizen.md).

# Enable Snowflake in Kizen

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

**Purpose:** Explains how to configure the Snowflake integration to use live Snowflake data in <code class="expression">space.vars.automations</code>
{% 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 Snowflake data in <code class="expression">space.vars.automations</code>, you must first enable the Snowflake integration in <code class="expression">space.vars.Kizen\_company\_name</code>.

***

## Before You Begin

Before you enable the Snowflake integration, ensure you have:

* A Snowflake user or service account with a warehouse that has the Snowflake SQL API and the auto-resume feature turned on
* A Snowflake role with `USAGE` privileges on the target warehouse and database and read or write privileges on the target database tables as needed
* Org Admin access in <code class="expression">space.vars.Kizen\_company\_name</code>

***

## Enable Snowflake in Kizen

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

{% stepper %}
{% step %}

#### Generate a Programmatic Access Token

In Snowflake, run the following `ALTER USER` statement against your user or service account to generate a Programmatic Access Token (PAT) for this account:

```sql
USE ROLE ACCOUNTADMIN; -- or SECURITYADMIN
ALTER USER user_name ADD PROGRAMMATIC ACCESS TOKEN my_api_token
    DAYS_TO_EXPIRY = 90
    COMMENT = 'For the Kizen Snowflake integration';
```

Save the PAT securely, and keep it on hand for [Step 5](#enter-your-snowflake-connection-credentials) of this procedure.

{% hint style="info" %}
**Note:** Your PAT expires in 90 days. Plan to generate a new one before this one lapses.
{% endhint %}
{% endstep %}

{% step %}

#### Allowlist Kizen's egress IP addresses

Add <code class="expression">space.vars.Kizen\_company\_name</code>'s egress IPs to the allowlist of your Snowflake network policy, if you use one.&#x20;

For the current list of egress IPs, contact your <code class="expression">space.vars.Kizen\_company\_name</code> representative.

{% hint style="info" %}
**Note:** If you haven't set up a network policy in Snowflake, we strongly encourage you to do so now for improved security and inbound access control. For instructions, see the [Snowflake documentation](https://docs.snowflake.com/en/user-guide/network-policies).
{% endhint %}
{% endstep %}

{% step %}

#### Go to the App Marketplace

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

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

{% step %}

#### Turn on the Snowflake Connection

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

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

The Update Integration Secret modal appears.

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

{% hint style="info" %}
**Note:** If the Update Integration Secret modal doesn't automatically open when you turn on the slider, select **Manage Secrets** in the Snowflake Connection card. Then, in the list of integration secrets that appears, edit the secret for the Snowflake connection.
{% endhint %}
{% endstep %}

{% step %}

#### Enter your Snowflake connection credentials

In the Integration Secret field of the modal, enter your Snowflake connection credentials as a JSON object. The JSON object must contain `account`, `warehouse`, `schema`, and `pat` keys, like this:

```json
{
  "account": "account_id",
  "warehouse": "DATA_WH",
  "schema": "PUBLIC",
  "pat": "pat_token"
}
```

Store multiple environments as nested JSON objects:

```json
{
  "production_db": {
    "account": "account_id",
    "warehouse": "DATA_WH",
    "schema": "PUBLIC",
    "pat": "pat_token"
  },
  "staging_db": {
    "account": "account_id",
    "warehouse": "DATA_WH",
    "schema": "PUBLIC",
    "pat": "pat_token"
  }
}
```

For descriptions of the keys, see the following table:

| Key         | Type     | Description                                                                                          |
| ----------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `account`   | `String` | The ID of your Snowflake account                                                                     |
| `warehouse` | `String` | The target warehouse                                                                                 |
| `schema`    | `String` | The default schema, or the schema to use when a query references a table without specifying a schema |
| `pat`       | `String` | Your Programmatic Access Token string                                                                |

{% 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 Snowflake integration, you're ready to use the Read Data and Write Data actions in <code class="expression">space.vars.automations</code>. Continue to [Add Snowflake Data to an Agentic Workflow](/docs/integrations-and-plugins/integrations/snowflake/add-snowflake-data-to-an-agentic-workflow.md) to learn how.

<details>

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

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

</details>

***

*Snowflake and all other Snowflake product, feature, and service names mentioned herein are registered trademarks or trademarks of Snowflake Inc. in the United States and other countries. Kizen's Snowflake integration is not affiliated with, sponsored by, or endorsed by Snowflake Inc.*


---

# 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/snowflake/enable-snowflake-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.
