# Snowflake: insert row

The **Snowflake: insert row** Point template inserts a row into a Snowflake table through the SQL API, using a programmatic access token. Column values travel as bound parameters, not inside the SQL statement text, so a value can't break out of its column and change what the statement does.

This point authenticates with its own programmatic access token — it doesn't use any account-level integration configured elsewhere in Settings.

<Aside type="caution">
A programmatic access token lives for 15 days by default. The point starts failing the day it expires, with no warning beforehand — put a reminder in your own calendar to rotate it, or requests will silently stop working two weeks after you set this up.
</Aside>

## Configure the point

1. Drag **Snowflake: insert row** from the **Integrations** section of the left panel onto the canvas.
2. Double-click the point and enter a **Step Name**.
3. In **Account host**, enter your Snowflake account's host from its URL, for example `ab12345.eu-central-1.snowflakecomputing.com`. Don't include `https://` or a trailing slash — Pushwoosh adds `https://` and the API path itself.
4. In **Programmatic access token**, enter a token from **Snowsight > your user > Settings > Authentication > Programmatic access tokens**. It's stored masked, like a webhook secret header.
5. In **Table**, enter the target table as `TABLE`, `SCHEMA.TABLE`, or `DATABASE.SCHEMA.TABLE`, using only letters, digits, and underscores. This point doesn't ask for a warehouse, database, or schema separately: a bare `TABLE` resolves against whatever database and schema the token's user defaults to, and a `DATABASE.SCHEMA.TABLE` value overrides them.
6. In **Columns**, add the column name mapped to the value to write — see [key/value fields](/product/customer-journey/journey-elements/integrations/#configuring-list-and-keyvalue-fields). Column names take the same letters/digits/underscore rule as **Table**.
7. Click **Save**.

## Response

After the step runs, the submitted statement's handle is available in later steps as attribute **`snowflake_statement_handle`** — use it the same way you'd use a [Webhook response attribute](/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables), for example to set a Tag with [Update user profile](/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response).

A failed request drops the traveler from the journey — see [Errors and failed requests](/product/customer-journey/journey-elements/integrations/#errors-and-failed-requests).