Using Snowflake actions in action flows

<body>
<p id="docs-hc-snippet" style="display: none;">Before you can include external actions in your action flows, you must connect the action builder to the external system.</p>
<div class="article-banners">
<div id="docs-wmp-link">
<a href="https://support.zendesk.com/hc/en-us/articles/5411234991258-plan" rel="noopener" target="_blank">What's my plan?</a>
</div>
<div class="article-banner" id="suite_all">
<table>
<tbody>
<tr>
<td>
<strong>All Suites</strong>
</td>
<td>Team, Growth, Professional, Enterprise, or Enterprise Plus</td>
</tr>
</tbody>
</table>
</div>
<div class="article-banner" id="support_all">
<table>
<tbody>
<tr>
<td>
<strong>Support</strong>
</td>
<td>Team, Professional, or Enterprise</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="docs-ai-summary">
<p id="docs-ai-summary-toggle">Summary: <span id="up-triangle">◀</span><span id="down-triangle">▼</span></p>
<p id="docs-ai-summary-content">You can connect action flows to Snowflake using OAuth 2.0 authentication to automate workflows involving SQL queries, table searches, and schema lookups. Use a dedicated service account for secure integration. Available actions let you execute SQL statements, find tables with pattern filters, and retrieve detailed table schema information, helping you manage data and automate tasks across platforms effectively.</p>
</div>
<div class="body">
<div class="p">By connecting the <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/8855513857306" target="_blank">action builder</a> to external systems, such as Snowflake,
admins can integrate Zendesk with external systems in automated workflows, improving
collaboration and maintaining a seamless experience across multiple platforms.<div class="note" id="zug_action_flow_external_Snowflake__note_i2z_jtz_v3c">
<span class="notetitle">Note:</span> The steps associated with external systems in action flows are
referred to collectively as <em class="ph i">external actions</em>.</div>
</div>
<div class="p">This article contains the following topics:<ul class="ul" id="zug_action_flow_external_Snowflake__ul_ysp_sn4_zgc">
<li class="li"><a class="xref" href="#topic_fcs_gtn_g3c">Connecting Snowflake to action builder</a></li>
<li class="li"><a class="xref" href="#topic_z1q_htn_g3c">Using Snowflake actions in action flows</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title2" class="topic nested1" id="topic_fcs_gtn_g3c">
<h2 class="title topictitle2" id="ariaid-title2">Connecting Snowflake to action builder</h2>
<div class="body">
<p class="p">Before you can include external actions in your action flows, you must connect the
action builder to the external system.</p>
<div class="p">When connecting to external systems for use in action flows, the following best practices are recommended:<ul class="ul" id="topic_fcs_gtn_g3c__d8e13">
<li class="li">All external actions performed by an action flow are attributed to the user who connected the
external system. Therefore, it's a best practice to use a dedicated service
account rather than personal credentials when connecting to each external
system.</li>
<li class="li">All integrations request access to necessary scopes. However, it's important that you review and validate the scopes before authorizing the connection to the external system.</li>
<li class="li">When managing credentials for API key-based tools, such as OpenAI, it's best to store keys in a secure vault or credential manager.</li>
</ul>
</div>
<p class="p" dir="ltr">The Snowflake connection uses OAuth 2.0 authentication with the
authorization code grant type. You will need to provide three pieces of
information:</p>
<ul class="ul" id="topic_fcs_gtn_g3c__ul_sjq_wvc_zjc">
<li class="li" dir="ltr">
<p class="p" dir="ltr"><strong class="ph b">Account Identifier</strong>: Your Snowflake account identifier (for
example, APAC_DEV.AWS_AP_NORTHEAST_1)</p>
</li>
<li class="li" dir="ltr">
<p class="p" dir="ltr"><strong class="ph b">OAuth Client ID</strong>: OAuth client ID from your Snowflake
security integration</p>
</li>
<li class="li" dir="ltr">
<p class="p" dir="ltr"><strong class="ph b">OAuth Client Secret</strong>: OAuth client secret from your Snowflake
security integration</p>
</li>
</ul>
<p class="p"><strong class="ph b">To set up OAuth authentication in Snowflake</strong></p>
<ol class="ol" id="topic_fcs_gtn_g3c__ol_m5v_lvc_zjc">
<li class="li">Create a security integration in Snowflake with OAuth settings.</li>
<li class="li">Generate the client ID and client secret credentials.</li>
<li class="li">Configure the appropriate redirect URIs for action flows.</li>
</ol>
<div class="p">
<strong class="ph b">To connect action builder to Snowflake</strong><ol class="ol" id="topic_fcs_gtn_g3c__ol_psh_lk4_zgc">
<li class="li"><span class="ph">In <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/4581766374554#topic_hfg_dyz_1hb" target="_blank">Admin Center</a>, click <img class="image" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/ac_apps_integrations_icon.png">
<strong class="ph b">Apps and integrations</strong> in the sidebar, then select <strong class="ph b">Actions &gt; Action
flows</strong>.</span></li>
<li class="li">
<a class="xref" href="https://support.zendesk.com/hc/en-us/articles/8855601898266" target="_blank">Create</a> or <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/9052312956570" target="_blank">edit</a> an action flow.</li>
<li class="li">Open the step sidebar.</li>
<li class="li">Under <strong class="ph b">External actions</strong>, click <strong class="ph b">Snowflake</strong>.</li>
<li class="li">Click <strong class="ph b">Connect</strong>.</li>
<li class="li">Follow Snowflake's prompts to authenticate and complete the connection.<p class="p" dir="ltr">The connector uses the <code class="ph codeph">refresh_token</code> scope
during authentication. Role and warehouse are specified per action at
execution time, providing flexibility to choose appropriate resources
based on workload needs.</p>
<p class="p" dir="ltr">Review the requested
permissions carefully before authorizing the connection. Keep your
client secret secure and do not share it or commit it to version
control.</p>
<div class="note" id="topic_fcs_gtn_g3c__note_ilr_mtz_v3c">
<span class="notetitle">Note:</span> All external actions performed
by an action flow are attributed to the user who connected the external
system. Therefore, it is a best practice to use a dedicated service
account rather than personal credentials when connecting to each
external system.</div>
</li>
</ol>
</div>
<p class="p">After you've connected to the system, you'll see an indicator that it's connected and
details about the instance you're connected to, as well as the actions available for
Snowflake.</p>
</div>
</div>
<div aria-labelledby="ariaid-title3" class="topic nested1" id="topic_z1q_htn_g3c">
<h2 class="title topictitle2" id="ariaid-title3">Using Snowflake actions in action flows</h2>
<div class="body">
<div class="p">The following Snowflake actions are available:<ul class="ul" id="topic_z1q_htn_g3c__ul_jby_q44_zgc">
<li class="li"><a class="xref" href="#topic_wfm_m4q_jjc">Executing a query</a></li>
<li class="li"><a class="xref" href="#topic_vmr_lkz_jjc">Searching tables</a></li>
<li class="li"><a class="xref" href="#topic_lqp_skz_jjc">Looking up a table schema</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title4" class="topic nested2" id="topic_wfm_m4q_jjc">
<h3 class="title topictitle3" id="ariaid-title4">Executing a query</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Execute query</em> action to run arbitrary SQL statements in
Snowflake.</p>
<p class="p">This action has the following inputs and outputs:</p>
<div class="p">
<div class="tablenoborder">
<table border="1" cellpadding="4" cellspacing="0" class="table" frame="border" id="topic_wfm_m4q_jjc__table_zlg_ckz_jjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e247" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e249" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e247" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e249" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">SQL statement</code>,
<code class="ph codeph">Warehouse</code>,
<code class="ph codeph">Role</code><p class="p">Optional:
<code class="ph codeph">Timeout</code></p>
<div class="p">Consider the
following when using the Execute query action:<ul class="ul" id="topic_wfm_m4q_jjc__ul_apf_kkz_xjc">
<li class="li">The SQL statement field supports all SQL
statement types including SELECT, INSERT, UPDATE,
DELETE, CREATE, ALTER, and others. </li>
<li class="li">The Warehouse field is a searchable dropdown of
available warehouses. </li>
<li class="li">The Role field is a searchable dropdown of
available roles. </li>
<li class="li">The Timeout field specifies query timeout in
seconds. </li>
<li class="li">For SELECT queries, the data array contains row
data as key-value pairs. </li>
<li class="li">For INSERT, UPDATE, or DELETE operations, the
rows affected field shows the number of rows
modified.</li>
</ul>
</div>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e247" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e249" style="text-align:left;vertical-align:top;">Query execution results including statement handle,
status URL, execution message, row count, rows affected, and
data array for SELECT queries.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title5" class="topic nested2" id="topic_vmr_lkz_jjc">
<h3 class="title topictitle3" id="ariaid-title5">Searching tables</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Search tables</em> action to discover tables in a Snowflake database
schema with optional pattern filtering.</p>
<p class="p">This action has the following inputs and outputs:</p>
<div class="p">
<div class="tablenoborder">
<table border="1" cellpadding="4" cellspacing="0" class="table" frame="border" id="topic_vmr_lkz_jjc__table_wmr_lkz_jjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e345" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e347" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e345" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e347" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Database</code>,
<code class="ph codeph">Schema</code>, <code class="ph codeph">Warehouse</code>,
<code class="ph codeph">Role</code><p class="p">Optional: <code class="ph codeph">Table name
pattern</code></p>
<div class="p">Consider the following when
using the Search tables action:<ul class="ul" id="topic_vmr_lkz_jjc__ul_stc_35c_zjc">
<li class="li">The Database field is a searchable dropdown of
available databases.</li>
<li class="li">The Schema field is a searchable dropdown that
depends on the selected database.</li>
<li class="li">The Table name pattern field accepts SQL LIKE
patterns for filtering (for example, "USER%" to
find tables starting with USER). </li>
<li class="li">The Warehouse and Role fields are searchable
dropdowns. </li>
</ul>
</div>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e345" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e347" style="text-align:left;vertical-align:top;">Array of table objects containing name, kind, row count,
byte size, and creation date, along with total count.<p class="p">The
kind field indicates the table type (TABLE, VIEW,
etc.).</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title6" class="topic nested2" id="topic_lqp_skz_jjc">
<h3 class="title topictitle3" id="ariaid-title6">Looking up a table schema</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Lookup table schema</em> action to retrieve column definitions and
metadata for a specific Snowflake table.</p>
<p class="p">This action has the following inputs and outputs:</p>
<div class="p">
<div class="tablenoborder">
<table border="1" cellpadding="4" cellspacing="0" class="table" frame="border" id="topic_lqp_skz_jjc__table_nqp_skz_jjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e441" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e443" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e441" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e443" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Database</code>,
<code class="ph codeph">Schema</code>, <code class="ph codeph">Table</code>,
<code class="ph codeph">Warehouse</code>,
<code class="ph codeph">Role</code><div class="p">Consider the following when
using the Lookup table schema action:<ul class="ul" id="topic_lqp_skz_jjc__ul_yzm_w5c_zjc">
<li class="li">The Database field is a searchable dropdown of
available databases.</li>
<li class="li">The Schema field is a searchable dropdown that
depends on the selected database.</li>
<li class="li">The Table field is a searchable dropdown that
depends on both database and schema selections. </li>
<li class="li">The Warehouse and Role fields are searchable
dropdowns. </li>
</ul>
</div>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e441" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e443" style="text-align:left;vertical-align:top;">Array of column objects containing name, data type,
nullable status, default value, and primary key indicator,
along with array of primary key column names.<p class="p">The column
output includes data type information (for example,
VARCHAR, NUMBER, DATE), whether each column accepts null
values, default values if defined, and whether the
column is part of the primary key. The primary keys
field provides a separate list of all primary key column
names for convenience.</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script id="docs-schema-markup" type="application/ld+json">{
"@context": "https://schema.org",
"@type": "TechArticle",
"@id": "https://support.zendesk.com/hc/en-us/articles/11038192701850-Using-Snowflake-actions-in-action-flows",
"url": "https://support.zendesk.com/hc/en-us/articles/11038192701850-Using-Snowflake-actions-in-action-flows",
"headline": "Using Snowflake actions in action flows",
"description": "You can connect an action builder to Snowflake using OAuth 2.0 authentication to execute queries, search tables, and retrieve table schemas within automated workflows.",
"articleSection": "Product help",
"datePublished": "2026-07-21T20:25:42.042543+00:00",
"dateModified": "2026-07-21T20:25:43.719171+00:00",
"inLanguage": "en-US",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://support.zendesk.com/hc/en-us/articles/11038192701850-Using-Snowflake-actions-in-action-flows"
},
"author": {
"@type": "Organization",
"name": "Zendesk",
"url": "https://www.zendesk.com"
},
"publisher": {
"@type": "Organization",
"name": "Zendesk"
},
"isPartOf": {
"@type": "WebSite",
"name": "Zendesk Help",
"url": "https://support.zendesk.com/hc/en-us"
},
"about": {
"@type": "SoftwareApplication",
"name": "Zendesk"
}
}</script><script id="ai-summary-script">
//<![CDATA[
const ai_summary_style = document.createElement('style');
ai_summary_style.innerHTML = `#styled-article-body{padding:0 0 0}#article-body #docs-ai-summary{background-color:#f3f3f3;border:1px solid #d3d3d3;padding:10px 10px 6px;margin-bottom:16px}#article-body #docs-ai-summary #docs-ai-summary-toggle{font-size:.9em;font-weight:700;margin-bottom:4px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}#article-body #docs-ai-summary #docs-ai-summary-toggle #up-triangle{margin-left:auto;padding-right:10px;display:none}#article-body #docs-ai-summary #docs-ai-summary-toggle #down-triangle{margin-left:auto;padding-right:10px}#article-body #docs-ai-summary #docs-ai-summary-content{font-size:.9em;padding-left:25px;padding-right:25px;margin-bottom:12px}`;
document.head.appendChild(ai_summary_style);

const toggleAISummary = () => {
const summary = document.getElementById("docs-ai-summary-content");
const upTriangle = document.getElementById("up-triangle");
const downTriangle = document.getElementById("down-triangle");
if (summary.style.display === "none") {
summary.style.display = "block";
upTriangle.style.display = "none";
downTriangle.style.display = "inline";
} else {
summary.style.display = "none";
upTriangle.style.display = "inline";
downTriangle.style.display = "none";
}
};

document.getElementById("docs-ai-summary-toggle").addEventListener("click", toggleAISummary);
//]]>
</script>
</body>