Using Iterable 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 Iterable using a server-side API key to automate user profile management, event tracking, comments, and email campaigns. Actions include creating, updating, and looking up users, sending triggered emails, and managing campaigns. Use a dedicated service account for integration and specify the correct data center to ensure proper authentication and smooth workflow automation across platforms.</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 Iterable, 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_Iterable__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_Iterable__ul_ysp_sn4_zgc">
<li class="li"><a class="xref" href="#topic_fcs_gtn_g3c">Connecting Iterable to action builder</a></li>
<li class="li"><a class="xref" href="#topic_z1q_htn_g3c">Using Iterable 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 Iterable 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"><strong class="ph b">To create an API key</strong></p>
<div class="p">The Iterable connection requires a server-side API key from your Iterable project.
Read-only API keys will not work. Ensure you create a server-side API key with
appropriate write permissions.<ol class="ol" id="topic_fcs_gtn_g3c__ol_tx1_xsz_jjc">
<li class="li">Log in to your Iterable account.</li>
<li class="li">Navigate to <strong class="ph b">Integrations</strong> &gt; <strong class="ph b">API Keys</strong>.</li>
<li class="li">Create a new server-side API key.</li>
<li class="li">Save the key or keep the window open so you can copy and paste it into
Zendesk. <p class="p">You'll need it when connecting Iterable to action
builder.</p>
</li>
</ol>
</div>
<div class="p">
<strong class="ph b">To connect action builder to Iterable</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">Iterable</strong>.</li>
<li class="li">Click <strong class="ph b">Connect</strong>.</li>
<li class="li">Follow Iterable's prompts to authenticate and complete the connection:<div class="p">
<ul class="ul" id="topic_fcs_gtn_g3c__ul_k1b_t2y_zjc">
<li class="li">Enter your Iterable server-side API key.</li>
<li class="li">Specify your data center region (US or EU). If your Iterable
account is hosted in the European Union data center, you must
specify "EU" as the data center. If left empty, the connection
defaults to the US data center (api.iterable.com). Using the
wrong data center will cause authentication failures.</li>
</ul>
</div>
<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
Iterable.</p>
</div>
</div>
<div aria-labelledby="ariaid-title3" class="topic nested1" id="topic_z1q_htn_g3c">
<h2 class="title topictitle2" id="ariaid-title3">Using Iterable actions in action flows</h2>
<div class="body">
<div class="p">The following Iterable actions are available:<ul class="ul" id="topic_z1q_htn_g3c__ul_jby_q44_zgc">
<li class="li"><a class="xref" href="#topic_lck_r44_zgc">Create user</a></li>
<li class="li"><a class="xref" href="#topic_epg_35z_v3c">Update user</a></li>
<li class="li"><a class="xref" href="#topic_vmc_h5z_v3c">Lookup user</a></li>
<li class="li"><a class="xref" href="#topic_alf_24q_jjc">Create event</a></li>
<li class="li"><a class="xref" href="#topic_rcd_lxm_pjc">Add comment</a></li>
<li class="li"><a class="xref" href="#topic_mjr_j4q_jjc">Send email to user</a></li>
<li class="li"><a class="xref" href="#topic_wfm_m4q_jjc">Lookup campaign</a></li>
<li class="li"><a class="xref" href="#topic_vmr_lkz_jjc">List campaigns</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title4" class="topic nested2" id="topic_lck_r44_zgc">
<h3 class="title topictitle3" id="ariaid-title4">Creating a user</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Create user</em> action to create a new user profile in Iterable. If
the user already exists, their profile will be updated with the provided
information (upsert behavior).</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_lck_r44_zgc__table_dgb_n11_w3c" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e260" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e262" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e260" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e262" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Email</code><p class="p">Optional: <code class="ph codeph">User
ID</code>, <code class="ph codeph">Data fields</code>,
<code class="ph codeph">Prefer user ID</code>, <code class="ph codeph">Create new
fields</code>, <code class="ph codeph">Merge nested
objects</code></p>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e260" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e262" style="text-align:left;vertical-align:top;">Success status, message, email, and user ID.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title5" class="topic nested2" id="topic_epg_35z_v3c">
<h3 class="title topictitle3" id="ariaid-title5">Updating a user</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Update user</em> action to update an existing user profile in Iterable.
If the user does not exist, a new profile will be created with the provided
information (upsert behavior).</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_epg_35z_v3c__table_xf2_1jz_jjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e341" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e343" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e341" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e343" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Email</code><p class="p">Optional: <code class="ph codeph">User
ID</code>, <code class="ph codeph">Data fields</code>,
<code class="ph codeph">Prefer user ID</code>, <code class="ph codeph">Create new
fields</code>, <code class="ph codeph">Merge nested
objects</code></p>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e341" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e343" style="text-align:left;vertical-align:top;">Success status, message, email, and user ID.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title6" class="topic nested2" id="topic_vmc_h5z_v3c">
<h3 class="title topictitle3" id="ariaid-title6">Looking up a user</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Lookup user</em> action to retrieve a user profile by email address or
user ID.</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_vmc_h5z_v3c__table_qtw_kjz_jjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e422" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e424" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e422" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e424" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Identifier type</code>,
<code class="ph codeph">Identifier value</code>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e422" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e424" style="text-align:left;vertical-align:top;">User profile details including email, user ID, signup
date, profile updated date, and custom data fields.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title7" class="topic nested2" id="topic_alf_24q_jjc">
<h3 class="title topictitle3" id="ariaid-title7">Creating an event</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Create event</em> action to track a custom event for a user in
Iterable. Events can be used for segmentation, campaign triggers, and
analytics.</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_alf_24q_jjc__table_yhf_pjz_jjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e491" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e493" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e491" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e493" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Email</code>, <code class="ph codeph">Event
name</code><p class="p">Optional: <code class="ph codeph">User ID</code>,
<code class="ph codeph">Data fields</code>, <code class="ph codeph">Event
ID</code>, <code class="ph codeph">Campaign</code>,
<code class="ph codeph">Template</code>, <code class="ph codeph">Create new
fields</code></p>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e491" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e493" style="text-align:left;vertical-align:top;">Success status, message, event name, email, user ID, and
event ID.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title8" class="topic nested2" id="topic_rcd_lxm_pjc">
<h3 class="title topictitle3" id="ariaid-title8">Adding a comment</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Add comment</em> action to add a comment or note to a user profile. The
comment is stored as a custom field in the user's data fields.</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_rcd_lxm_pjc__table_zzr_phy_zjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e579" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e581" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e579" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e581" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Email</code>,
<code class="ph codeph">Comment</code><p class="p">Optional: <code class="ph codeph">User
ID</code>, <code class="ph codeph">Field name</code></p>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e579" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e581" style="text-align:left;vertical-align:top;">Success status, message, email, user ID, and field name
where comment was stored.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title9" class="topic nested2" id="topic_mjr_j4q_jjc">
<h3 class="title topictitle3" id="ariaid-title9">Sending an email to a user</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Send email to user</em> action to send a triggered email to a user
using an Iterable campaign. The campaign must be in a triggerable state.</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_mjr_j4q_jjc__table_n25_xjz_jjc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d89e654" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e656" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e654" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e656" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Campaign</code>, <code class="ph codeph">Recipient
email</code><p class="p">Optional: <code class="ph codeph">Data fields</code>,
<code class="ph codeph">Send at</code></p>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e654" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e656" style="text-align:left;vertical-align:top;">Success status, message, campaign ID, recipient email,
and scheduled send time.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title10" class="topic nested2" id="topic_wfm_m4q_jjc">
<h3 class="title topictitle3" id="ariaid-title10">Looking up a campaign</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Lookup campaign</em> action to retrieve campaign details including
name, status, type, and template information.</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="d89e729" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e731" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e729" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e731" style="text-align:left;vertical-align:top;">Required: <code class="ph codeph">Campaign</code>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e729" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e731" style="text-align:left;vertical-align:top;">Campaign details including ID, name, state, type,
template ID, list IDs, send time, created date, and updated
date.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title11" class="topic nested2" id="topic_vmr_lkz_jjc">
<h3 class="title topictitle3" id="ariaid-title11">Listing campaigns</h3>
<div class="body">
<p class="p">Use the <em class="ph i">List campaigns</em> action to retrieve all campaigns in your Iterable
project. </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="d89e794" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d89e796" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d89e794" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d89e796" style="text-align:left;vertical-align:top;">None</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d89e794" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d89e796" style="text-align:left;vertical-align:top;">Array of campaign objects containing ID, name, state, and
type, plus total count.</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/11047737573402-Using-Iterable-actions-in-action-flows",
"url": "https://support.zendesk.com/hc/en-us/articles/11047737573402-Using-Iterable-actions-in-action-flows",
"headline": "Using Iterable actions in action flows",
"description": "You can connect an external system to the action builder and use various actions to create, update, and manage user profiles, events, comments, emails, and campaigns within automated workflows.",
"articleSection": "Product help",
"datePublished": "2026-07-23T22:42:05.721101+00:00",
"dateModified": "2026-07-23T22:42:07.807045+00:00",
"inLanguage": "en-US",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://support.zendesk.com/hc/en-us/articles/11047737573402-Using-Iterable-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>