Outlook Calendar Node
The Outlook Calendar node provides integration with Microsoft Outlook Calendar in SkyStudio workflows. You can list, create, update, and delete events; check availability; and run AI-powered calendar queries. The same Azure App Registration method used for the Teams node is also used for this connection.
Connection Setup and Management
To use the Outlook Calendar node, you must create an App Registration in the Azure Portal and enter the Tenant ID, Client ID, and Client Secret information into SkyStudio.
🎬 Click to watch the video →
Note: The connection setup process for this node is exactly the same as the Microsoft Teams node. If you have already created a Teams connection, you can use the same Azure App Registration information for Outlook Calendar as well.
Creating an Azure App Registration
1. Register a New Application
- Sign in to portal.azure.com.
- Type
App registrationsin the search bar and go to the related service. - Click the + New registration button.
- Give the application a name, such as
SkyStudio. - Select Accounts in this organizational directory only (Single tenant).
- Click the Register button.
2. Copy Client ID and Tenant ID
After the application is created, go to the Overview page:
- Application (client) ID → Your Client ID
- Directory (tenant) ID → Your Tenant ID
Copy both values. You can access this information again later.
3. Create a Client Secret
- Go to Certificates & secrets from the left menu.
- Click the + New client secret button.
- Add a Description and Expiration Date, then click Add.
- Immediately copy the generated secret’s Value field.
Critical Note: The Client Secret value is displayed only at the time it is created. After you close the page, you will not be able to access the full value again.
4. Add API Permissions
- Go to API permissions from the left menu.
- Select + Add a permission → Microsoft Graph → Application permissions.
- Add the required permissions for Outlook Calendar:
| Permission | Description |
|---|---|
Calendars.Read | Used to read calendar events |
Calendars.ReadWrite | Used to create, update, and delete events |
User.Read.All | Used to access user information for availability checks |
- Click Grant admin consent to approve the permissions.
Adding the Connection to SkyStudio
- Go to Application Connections from the left menu in SkyStudio.
- Click the Add New Connection button.
- Select Outlook Calendar as the provider.
- Fill in the following fields:
| Field | Description |
|---|---|
| Connection Name | A descriptive name, such as Company Outlook Calendar |
| Tenant ID | The Directory (tenant) ID copied from Azure |
| Client ID | The Application (client) ID copied from Azure |
| Client Secret | The secret value copied from Azure |
| User Email | The email address of the user on whose behalf calendar operations will be performed |
- Click the Save button.
Assigning the Connection to the Node
After adding the Outlook Calendar node to the canvas, select the saved connection from the Application Connections dropdown in the right panel.
Operations
The Outlook Calendar node provides 10 operations:
| Operation | Category | Description |
|---|---|---|
| Get Events | Featured | Retrieves events from the calendar with filters |
| Today’s Events | Featured | Lists today’s events |
| Upcoming Events | Featured | Lists events within a specified number of days |
| Availability Check | Featured | Checks users’ availability within a specific time range |
| Outlook Calendar AI Assistant | Featured | Queries calendar data using natural language |
| List Calendars | Standard | Lists all calendars in the account |
| Get Event | Standard | Retrieves the details of a specific event |
| Create Event | Standard | Creates a new calendar event |
| Update Event | Standard | Updates an existing event |
| Delete Event | Standard | Deletes a specific event |
Get Events
Retrieves events from the calendar using a date range and search filter.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Calendar ID | No | The ID of the calendar from which events will be retrieved. If left empty, the primary calendar is used |
| Start Date | No | Start date in YYYY-MM-DDTHH:MM:SS format |
| End Date | No | End date in YYYY-MM-DDTHH:MM:SS format |
| Search Query | No | Keyword for searching in event titles |
| Max Results | No | Maximum number of events to return |
| Order By | No | Sorting criterion selected from the dropdown menu |
Today’s Events
Returns today’s calendar events for the connected account.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Calendar ID | No | Calendar ID from which events will be retrieved. If left empty, the primary calendar is used |
Upcoming Events
Lists upcoming events within the specified number of days.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Calendar ID | No | Calendar ID. If left empty, the primary calendar is used |
| Days Ahead | No | Number of days ahead for retrieving events, such as 7 |
| Max Results | No | Maximum number of events to return |
Availability Check
Checks the availability of specified users within a specific time range. It is used in appointment and meeting scheduling workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| User Emails | Yes | Email addresses of users whose availability will be checked, separated by commas |
| Start Date Time | Yes | Availability check start time in YYYY-MM-DDTHH:MM:SS format |
| End Date Time | Yes | Availability check end time in YYYY-MM-DDTHH:MM:SS format |
| Timezone | No | Time zone, such as Europe/Istanbul |
Outlook Calendar AI Assistant
Queries Outlook calendar data using natural language. As shown in the video, users can easily access calendar data with questions such as “What are my meetings this week?”
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Query | Yes | Calendar query in natural language |
| System Prompt | No | System instruction that customizes the AI assistant’s behavior |
Usage Example
Query: "Can you list my meetings for this week?"
System Prompt: "List only this week’s events. Respond in Turkish and show the title and time."
List Calendars
Lists all calendars and Calendar IDs in the account.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
Get Event
Retrieves all details of a specific event using its Event ID.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Event ID | Yes | The ID of the event whose details will be retrieved |
Create Event
Adds a new event to the Outlook calendar. Optionally, a Teams meeting link can also be created.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Calendar ID | No | The calendar where the event will be created. If left empty, the primary calendar is used |
| Subject | Yes | Event title |
| Body | No | Event description |
| Start Date Time | Yes | Start time in YYYY-MM-DDTHH:MM:SS format |
| End Date Time | Yes | End time in YYYY-MM-DDTHH:MM:SS format |
| Timezone | No | Time zone, such as Europe/Istanbul |
| Location | No | Event location |
| Attendees | No | Email addresses of participants to invite, separated by commas |
| Teams Meeting | No | If enabled, a Teams meeting link is automatically added to the event |
| All Day Event | No | If enabled, the event is created as an all-day event |
Update Event
Updates the information of an existing event.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Event ID | Yes | The ID of the event to update |
| Subject | No | New event title |
| Body | No | New description |
| Start Date Time | No | New start time in YYYY-MM-DDTHH:MM:SS format |
| End Date Time | No | New end time in YYYY-MM-DDTHH:MM:SS format |
| Timezone | No | Time zone |
| Location | No | New location |
| Attendees | No | Updated participant list |
Delete Event
Deletes the specified event from the calendar.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Outlook Calendar connection to use |
| Event ID | Yes | The ID of the event to delete |
Quick Start Examples
Example 1: Daily Calendar Summary
A workflow that summarizes that day’s meetings every morning and sends them to Teams:
Schedule (Every morning at 08:00) → Today’s Events → LLM (summarize) → Send Channel Message (Teams)
Today’s Events settings:
- Calendar ID: empty — primary calendar
Example 2: Automatic Meeting Scheduling
A workflow that checks availability when a form is submitted and creates a meeting at a suitable time:
Form Builder → Availability Check → LLM (select suitable time) → Create Event
Availability Check settings:
- User Emails:
{{form.email}}, manager@company.com - Start Date Time:
{{form.date}}T09:00:00 - End Date Time:
{{form.date}}T18:00:00 - Timezone:
Europe/Istanbul
Create Event settings:
- Subject:
Meeting: {{form.topic}} - Start Date Time:
{{llm.suitable_time}} - Attendees:
{{form.email}} - Teams Meeting: Enabled
Example 3: Calendar AI Chatbot
A chatbot that answers calendar questions asked by the user in natural language:
Text Input → Outlook Calendar AI Assistant → Text Output
Outlook Calendar AI Assistant settings:
- Query:
{{input.text}} - System Prompt:
"You are the user’s calendar assistant. Provide event information in Turkish and in a summarized format."
Example 4: Last Week’s Meeting Report
A workflow that retrieves last week’s meetings and creates a weekly report:
Schedule (Every Monday) → Get Events → LLM (create report) → Send Mail (Outlook)
Get Events settings:
- Start Date:
{{last_week_start}} - End Date:
{{last_week_end}} - Max Results:
50 - Order By:
start
Common Errors
| Error | Possible Cause | Solution |
|---|---|---|
401 Unauthorized | Client Secret has expired | Create a new Client Secret from the Azure Portal |
403 Forbidden | Calendars.ReadWrite permission has not been granted | Add the required permission from Azure → API Permissions and grant admin consent |
Event not found | Invalid Event ID | Find the correct Event ID using Get Events |
Invalid datetime format | Date format is incorrect | Make sure you use the YYYY-MM-DDTHH:MM:SS format, such as 2024-06-01T10:00:00 |
| Empty event list | Calendar ID is incorrect or there are no events on that date | Verify the Calendar ID using List Calendars |
Notes
- When the Calendar ID field is left empty, all operations automatically run on the primary calendar.
- When Teams Meeting is enabled in the Create Event operation, a Teams meeting link is automatically created. For this feature to work, the Azure App Registration must also have the
OnlineMeetings.ReadWrite.Allpermission. - Date and time fields must be entered in
YYYY-MM-DDTHH:MM:SSformat, such as2024-06-01T10:00:00. Timezone is entered as a separate field. - The Availability Check operation can check the availability of multiple users at the same time. You can enter email addresses separated by commas.
- When the Client Secret of the Azure App Registration expires, the connection stops working. It is recommended to create a new secret and update the SkyStudio connection before it expires.