Using Microsoft Calendar actions in action flows

<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_gpee">
<table>
<tbody>
<tr>
<td>
<strong>All Suites</strong>
</td>
<td>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 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 Microsoft
Calendar, admins can integrate Zendesk with external systems in automated workflows,
improving collaboration and maintaining a seamless experience across multiple
platforms.<div class="note note">
<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="topic_xc1_wpr_1hc__ul_jmk_zx4_zgc">
<li class="li"><a class="xref" href="#topic_ehn_bqr_1hc">Connecting Microsoft Calendar to action builder</a></li>
<li class="li"><a class="xref" href="#topic_t1l_4qr_1hc">Using Microsoft Calendar actions in action flows</a></li>
<li class="li"><a class="xref" href="#topic_npy_2wf_dhc">Recipe: Automatically creating handover meeting in Microsoft Calendar when a ticket is reassigned</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title2" class="topic nested1" id="topic_ehn_bqr_1hc">
<h2 class="title topictitle2" id="ariaid-title2">Connecting Microsoft Calendar 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_ehn_bqr_1hc__d8e13">
<li class="li">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.</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>
<div class="p">
<strong class="ph b">To connect Microsoft Calendar to action builder</strong><ol class="ol" id="topic_ehn_bqr_1hc__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">Microsoft Calendar</strong>.</li>
<li class="li">Click <strong class="ph b">Connect</strong>.</li>
<li class="li">Use Microsoft to authenticate the account. <p class="p">You must use a service account
when connecting to Microsoft Calendar because it uses User Scopes.
Authenticating with a personal account won't work properly.</p>
<p class="p">The
following scopes are required: <code class="ph codeph">offline_access</code>,
<code class="ph codeph">User.Read</code>, <code class="ph codeph">Calendars.Read</code>,
<code class="ph codeph">Calendars.ReadWrite</code>,
<code class="ph codeph">MailboxSettings.Read</code>,
<code class="ph codeph">MailboxSettings.ReadWrite</code>.</p>
<div class="note note">
<span class="notetitle">Note:</span> All external
actions performed by an action flow are attributed to the user who
connected the 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
Jira.</p>
</div>
</div>
<div aria-labelledby="ariaid-title3" class="topic nested1" id="topic_t1l_4qr_1hc">
<h2 class="title topictitle2" id="ariaid-title3">Using Microsoft Calendar actions in action flows</h2>
<div class="body">
<p class="p">Microsoft Calendar action steps can be used to automatically create, update, and
manage calendar events in Microsoft Calendar.</p>
<div class="p">The following Microsoft Calendar actions are available:<ul class="ul" id="topic_t1l_4qr_1hc__ul_x3d_zjw_zgc">
<li class="li"><a class="xref" href="#topic_o3x_nrr_1hc">Create event</a></li>
<li class="li"><a class="xref" href="#topic_bk4_4rr_1hc">Update event</a></li>
<li class="li"><a class="xref" href="#topic_nqw_qrr_1hc">Search for event</a></li>
<li class="li"><a class="xref" href="#topic_ktk_rrr_1hc">Delete event</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title4" class="topic nested2" id="topic_o3x_nrr_1hc">
<h3 class="title topictitle3" id="ariaid-title4">Creating a calendar event</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Create event</em> action to create a new calendar event. For example,
you might want to automatically create follow-up meetings or reminders when
high-priority tickets are created in Zendesk.</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_o3x_nrr_1hc__table_h4h_j4d_tgc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d52e229" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d52e231" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d52e229" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d52e231" style="text-align:left;vertical-align:top;">
<code class="ph codeph">external_id</code>,
<code class="ph codeph">calendar_id</code>, <code class="ph codeph">title</code>,
<code class="ph codeph">start_time</code>, <code class="ph codeph">end_time</code>,
<code class="ph codeph">attendees</code>,
<code class="ph codeph">description</code>,
<code class="ph codeph">location</code>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d52e229" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d52e231" style="text-align:left;vertical-align:top;">
<code class="ph codeph">id</code>, <code class="ph codeph">link</code>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title5" class="topic nested2" id="topic_bk4_4rr_1hc">
<h3 class="title topictitle3" id="ariaid-title5">Updating a calendar event</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Update event</em> action to modify an existing calendar event, such as
rescheduling it when a ticket due date changes.</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_bk4_4rr_1hc__table_qry_dsr_1hc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d52e319" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d52e321" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d52e319" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d52e321" style="text-align:left;vertical-align:top;">
<code class="ph codeph">external_id</code>,
<code class="ph codeph">calendar_id</code>, <code class="ph codeph">event_id</code>,
<code class="ph codeph">updated_fields</code>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d52e319" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d52e321" style="text-align:left;vertical-align:top;">
<code class="ph codeph">id</code>, <code class="ph codeph">link</code>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title6" class="topic nested2" id="topic_nqw_qrr_1hc">
<h3 class="title topictitle3" id="ariaid-title6">Searching for a calendar event</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Search for calendar event</em> action to retrieve information about an
existing calendar event. This is useful for checking whether an event already
exists and verifying the details of an existing event.</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_nqw_qrr_1hc__table_x3j_tsr_1hc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d52e396" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d52e398" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d52e396" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d52e398" style="text-align:left;vertical-align:top;">
<code class="ph codeph">external_id</code>, <code class="ph codeph">query (title, date
range, attendee)</code>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d52e396" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d52e398" style="text-align:left;vertical-align:top;"><code class="ph codeph">events (id, title, start_time, end_time,
attendees, link)</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title7" class="topic nested2" id="topic_ktk_rrr_1hc">
<h3 class="title topictitle3" id="ariaid-title7">Deleting a calendar event</h3>
<div class="body">
<p class="p">Use the <em class="ph i">Delete event</em> action to delete an existing calendar event.</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_ktk_rrr_1hc__table_ons_ftr_1hc" rules="all" summary="">
<colgroup>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" id="d52e465" style="text-align:left;vertical-align:top;"> </th>
<th class="entry cellrowborder" id="d52e467" style="text-align:left;vertical-align:top;">Variables</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d52e465" style="text-align:left;vertical-align:top;">Inputs</td>
<td class="entry cellrowborder" headers="d52e467" style="text-align:left;vertical-align:top;">
<code class="ph codeph">external_id</code>,
<code class="ph codeph">calendar_id</code>,
<code class="ph codeph">event_id</code>
</td>
</tr>
<tr class="row">
<td class="entry cellrowborder" headers="d52e465" style="text-align:left;vertical-align:top;">Output</td>
<td class="entry cellrowborder" headers="d52e467" style="text-align:left;vertical-align:top;">none</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title8" class="topic nested1" id="topic_npy_2wf_dhc">
<h2 class="title topictitle2" id="ariaid-title8">Recipe: Automatically creating handover meeting in Microsoft Calendar when a ticket is reassigned</h2>
<div class="body">
<p class="p">The following example action flow automatically creates a meeting in Microsoft
Calendar when a ticket is reassigned and invites the previous asignee and new
assignee. This ensures consistent transfer of ownership with full context of the
ticket, which reduces delays and improves accountability.</p>
<div class="p">Such an action flow might consist of the following steps:<ol class="ol" id="topic_npy_2wf_dhc__ol_hhj_pwf_dhc">
<li class="li">Add an action flow trigger with the following details:<ol class="ol" id="topic_npy_2wf_dhc__ol_l2n_nwq_chc" type="a">
<li class="li">Click <strong class="ph b">Add trigger</strong>.</li>
<li class="li">In the step sidebar, under <strong class="ph b">Zendesk</strong>, click
<strong class="ph b">Tickets</strong>.</li>
<li class="li">Click <strong class="ph b">Routing</strong> and select <strong class="ph b">Ticket agent assignment
changed</strong>.</li>
</ol>
</li>
<li class="li">Add a step to look up ticket details:<ol class="ol" id="topic_npy_2wf_dhc__ol_u1q_wcx_chc" type="a">
<li class="li">In the action builder, beneath the action flow trigger, click the
<strong class="ph b">Add step</strong> icon (<img class="image" id="topic_npy_2wf_dhc__image_ls5_1xr_1hc" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/icon_action_flows_add.png" width="16">).</li>
<li class="li">In the step sidebar, under <strong class="ph b">Zendesk actions</strong>, click <strong class="ph b">Look up
ticket</strong>.</li>
<li class="li">Under <strong class="ph b">Ticket ID</strong>, click into the field and then click
<strong class="ph b">Select a variable instead</strong>.</li>
<li class="li">Within the variable menu, select <strong class="ph b">Ticket assignment changed</strong> as
the step that output the variable you want to use, and then select
<strong class="ph b">Ticket ID</strong>.</li>
</ol>
</li>
<li class="li">Add a step to look up user details about the ticket assignee:<ol class="ol" id="topic_npy_2wf_dhc__ol_zjp_qdx_chc" type="a">
<li class="li">In the action builder, click the <strong class="ph b">Add step</strong> icon (<img class="image" id="topic_npy_2wf_dhc__image_ox3_rdx_chc" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/icon_action_flows_add.png" width="16">).</li>
<li class="li">In the step sidebar, under <strong class="ph b">Zendesk actions</strong>, click <strong class="ph b">Look up
user</strong>.</li>
<li class="li">Under <strong class="ph b">User ID type</strong>, select <strong class="ph b">Zendesk user ID</strong>.</li>
<li class="li">For <strong class="ph b">User ID</strong>, click <strong class="ph b">Add variable</strong>.</li>
<li class="li">Within the variable menu, select <strong class="ph b">Look up ticket</strong> as the step
that outputs the variable you want to use, and then select
<strong class="ph b">Assignee ID</strong>.</li>
</ol>
</li>
<li class="li">Add a step to lookup details about the ticket requester's organization:<ol class="ol" id="topic_npy_2wf_dhc__ol_wxc_k2x_chc" type="a">
<li class="li">In the action builder, click the <strong class="ph b">Add step</strong> icon (<img class="image" id="topic_npy_2wf_dhc__image_xxc_k2x_chc" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/icon_action_flows_add.png" width="16">).</li>
<li class="li">In the step sidebar, under <strong class="ph b">Zendesk actions</strong>, click <strong class="ph b">Look up
organization</strong>.</li>
<li class="li">Under <strong class="ph b">Organization ID type</strong>, select <strong class="ph b">Zendesk organization
ID</strong>.</li>
<li class="li">For <strong class="ph b">Organization ID</strong>, click <strong class="ph b">Add variable</strong>.</li>
<li class="li">Within the variable menu, select <strong class="ph b">Look up user</strong> as the step
that outputs the variable you want to use, and then select
<strong class="ph b">Organization ID</strong>.</li>
</ol>
</li>
<li class="li">Add a step that creates a calendar event based on the information you
collected for the ticket, assignee, and organization:<ol class="ol" id="topic_npy_2wf_dhc__ol_wfl_lxf_dhc" type="a">
<li class="li">In the action builder, click the <strong class="ph b">Add step</strong> icon (<img class="image" id="topic_npy_2wf_dhc__image_ixj_mxf_dhc" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/icon_action_flows_add.png" width="16">).</li>
<li class="li">In the step sidebar, under <strong class="ph b">External actions</strong>, click
<strong class="ph b">Microsoft Calendar</strong> and then select <strong class="ph b">Create
event</strong>.</li>
<li class="li">Under <strong class="ph b">Calendar</strong>, select the appropriate calendar from the
connected account in which to create the event.</li>
<li class="li">Under <strong class="ph b">Title</strong>, enter <strong class="ph b">Handoff ticket</strong> and then click
<strong class="ph b">add variable</strong>
<strong class="ph b">Ticket ID</strong>.</li>
</ol>
</li>
<li class="li">Click <strong class="ph b">Save</strong>.</li>
<li class="li">Click <strong class="ph b">Test</strong> to <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/9052312956570#topic_uyj_qsw_3fc" target="_blank">test the action flow</a>.</li>
<li class="li">Click the options menu (<img class="image" id="topic_npy_2wf_dhc__image_uls_2xf_dhc" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/options-menu-icon-small.png">) and select <strong class="ph b">Activate</strong> to begin using the
action flow to automatically schedule ticket handoff meetings when a
ticket's assignee changes.</li>
</ol>
</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/9849724302234",
"url": "https://support.zendesk.com/hc/en-us/articles/9849724302234-Using-Microsoft-Calendar-actions-in-action-flows",
"headline": "Using Microsoft Calendar actions in action flows",
"description": "You can connect Microsoft Calendar to an action builder to automate creating, updating, searching, and deleting calendar events based on ticket activities, such as scheduling handover meetings when tickets are reassigned.",
"articleSection": "Extending Zendesk",
"datePublished": "2025-10-20T17:01:04+00:00",
"dateModified": "2025-12-10T15:48:01+00:00",
"inLanguage": "en-US",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://support.zendesk.com/hc/en-us/articles/9849724302234"
},
"author": {
"@type": "Organization",
"name": "Zendesk",
"@id": "https://www.zendesk.com"
},
"publisher": {
"@type": "Organization",
"name": "Zendesk",
"@id": "https://www.zendesk.com"
},
"isPartOf": {
"@type": "WebSite",
"name": "Zendesk Help",
"@id": "https://support.zendesk.com/hc/"
},
"about": {
"@type": "SoftwareApplication",
"name": "Zendesk",
"@id": "https://www.zendesk.com"
}
}</script>