Skip to main content
Agents can run autonomously without manual interaction. Set up scheduled tasks to run on a recurring or one-time basis, or create event-based triggers to fire your agent when something happens in an external service.
Task type selector showing Scheduled Task and Trigger Based Task options
All triggers are managed from the Tasks section of your agent’s configuration page. Click + Task to create a new one.

Scheduled Tasks

Schedule your agent to run automatically on a recurring schedule or as a one-time task. When a task fires, the agent receives a prompt you configure and processes it exactly as if you had typed it in the chat.

Setting Up a Scheduled Task

Go to your agent’s configuration page, find the Tasks section, and click + Task. Choose Scheduled Task as the type, then fill in three fields:
  • Name: A short label (e.g., “Daily Ticket Summary”)
  • Schedule: When the task should run (recurring cron or one-time)
  • Prompt: The message your agent receives when the task fires
Click Create and the task is immediately active.
Runs on a cron schedule until you pause or delete it. You don’t need to know cron syntax: describe your schedule in plain language and the AI generates the expression.Create a Scheduled Task dialog showing the Recurring tab with name, AI-powered schedule field, cron expression, and prompt
Minimum interval is 1 minute. Timezones default to your browser’s timezone.
Once created, tasks appear in the Tasks section. Click to edit, or use the three-dot menu to enable, disable, or delete. Tasks section showing a created Ticket Summary task scheduled at 09:00 PM every 2 days

Writing Good Task Prompts

The prompt is what your agent receives when the task fires. Be specific:
✅ Good❌ Bad
”Give me a summary of all the Zendesk tickets created in the last two days.""Do the usual thing."
"Check my Gmail for unread client emails, summarize them, and post to #client-updates in Slack.""Check emails.”
If your agent has a relevant skill for the task, reference it in the prompt. The agent will load the skill and follow its instructions for consistent results.

Self-Scheduling

Your agent can create and manage its own tasks during a conversation. Just tell it what you need:
What you sayWhat happens
”Remind me to check emails every weekday at 9 AM”Agent creates a recurring scheduled task
”In 30 minutes, check if the deployment succeeded”Agent creates a one-time delayed task
”Show me my active schedules”Agent lists all its tasks
”Pause the daily email check”Agent disables the task without deleting it
Agents can only manage their own schedules, not those of other agents.

Event-Based Triggers

Event-based triggers fire your agent when something happens in an external service. Instead of checking manually, your agent reacts automatically to new emails, messages, database changes, and more. When a trigger fires, the event data (e.g., the email body, the Slack message) is injected into a prompt template you write. The agent processes it as if you had typed it in the chat.

Supported Integrations

Gmail

New email in a label

Slack

New channel message

Microsoft Teams

New channel message

Google Drive

New file in a folder

Google Sheets

New or updated row

Google Calendar

Upcoming event

Notion

New or updated page

Airtable

New or updated record

Zendesk

New ticket or comment
Also supported: Google Forms, Typeform, HubSpot, and incident.io. Some integrations (Gmail, Slack, Teams, Drive, Forms, Typeform, Zendesk) are real-time and fire within seconds. Others (Sheets, Calendar, Notion, Airtable, HubSpot, incident.io) use polling and check for changes approximately every 60 seconds.

Setting Up an Event-Based Trigger

Go to your agent’s configuration page, find the Tasks section, and click + Task. Choose Trigger Based Task as the type. Then follow three steps:
1

Select a Trigger

Choose which integration event should fire your agent.
Select Trigger dialog showing available integrations: Google Drive, Google Sheets, Google Calendar, Gmail, Slack, Teams, Notion, and Airtable
2

Configure the Integration

Connect your credentials and set up the specific parameters for your trigger. For example, with Gmail you can choose which label to monitor, whether to mark emails as read, and whether to read HTML content.
Gmail trigger setup with credential selection, label filter, and options for Mark as Read and Read as HTML
Your agent uses the credentials of the person who created the trigger. Make sure you’ve connected the required app on your Apps page before setting up the trigger.
3

Write a Prompt Template

Define what your agent should do when the trigger fires. Use template variables (shown as badges) to inject event data into your prompt.
Prompt template editor showing trigger name and a prompt with template variables like Email Body, Attached File Name, and more
Template variables are specific to each integration. For Gmail, you get variables like Email Body, Subject, Sender, and Attached File Name. For Slack, you get Message, Sender Name, Channel Name, etc.

Prompt Templates

When an event-based trigger fires, the event data is injected into your prompt template before the agent receives it. How it works:
  1. You write a prompt template with placeholder variables (shown as badges in the UI)
  2. When the trigger fires, each variable is replaced with the actual event data
  3. The agent receives the fully resolved prompt and acts on it
Example: Your template:
New email from {Sender}: Subject: {Subject}
{Email Body}
Please categorize this email and draft a response if it's from a client.
When fired, your agent sees:
New email from john@acme.com: Subject: Q1 Budget Review
Hi, can we schedule a meeting to discuss the Q1 budget numbers?
Please categorize this email and draft a response if it's from a client.
You can also toggle Pass Raw Data to send the entire event payload as JSON instead of using template variables. This is useful when you want the agent to decide what’s relevant.

Managing Active Triggers

All your triggers (both scheduled and event-based) appear in the Tasks section of your agent’s configuration. From here you can edit, deactivate, or delete any trigger.
Tasks list showing active triggers including Slack Events, Incoming Email, and AI Task Editing & Creation with Edit, Deactivate, and Delete options

Integration Details

Fires when: A new email arrives in the specified label. (Real-time)Configuration: Choose your Gmail credential, select a label to monitor (e.g., INBOX, a custom label), and optionally enable “Mark as Read” and “Read as HTML”.Available variables: Email Body, Subject, Sender, Attached File Name, Date, Message ID, Thread ID
Due to Google API limitations, only one Gmail account can be monitored per credential. For multiple accounts, create separate triggers with different credentials.
Fires when: A new message is posted in the specified channel. (Real-time)Configuration: Choose your Slack credential and select the channel to monitor. Optionally ignore bot messages (recommended) and thread replies.Available variables: Message, Sender Name, Channel Name, Channel ID, Date, Thread ID, Attachment Names
Always enable “Ignore Bot Messages” to prevent infinite loops if your agent posts back to the same channel.
Fires when: A new message is posted in the specified Teams channel. (Real-time)Configuration: Choose your Teams credential, select the team and channel. Optionally ignore bot messages and thread replies.Available variables: Message, Sender Name, Channel Name, Channel ID, Date, Subject
Teams triggers only work with Microsoft 365 work or school accounts. Personal Microsoft accounts are not supported.
Fires when: A new file is uploaded to the specified folder. (Real-time)Configuration: Choose your Google Drive credential and select the folder to watch.Available variables: File Name, File ID, File Type, Modified Date
Fires when: A new row is added or an existing row is updated, depending on your trigger mode. (Polling, ~60s)Configuration: Choose your Google Sheets credential, select the spreadsheet and worksheet. Pick a trigger mode: “Create Row” (new rows only) or “Create or Update Row” (new and modified rows).Available variables: All column values from the row that triggered the event
Fires when: An event is approaching on your calendar. (Polling, ~60s)Configuration: Choose your Google Calendar credential, select the calendar, and set how many minutes before the event the trigger should fire (default: 15 minutes).Available variables: Event Title, Start Time, End Time, Attendees, Description, Location
Fires when: A new page is created or an existing page is updated in the specified database. (Polling, ~60s)Configuration: Choose your Notion credential and select the database to monitor.Available variables: All database property values from the page that triggered the event
Fires when: A new record is created or an existing record is updated in the specified table. (Polling, ~60s)Configuration: Choose your Airtable credential, select the base, table, and optionally a view. Requires a “Last Modified Timestamp” field in your table.Available variables: All field values from the record that triggered the event
Fires when: Depending on your trigger mode: new ticket created, new comment added, ticket status changed, or ticket enters a view. (Real-time)Configuration: Choose your Zendesk credential and select a trigger mode. Optionally filter by ticket type, priority, or status.Available variables: Ticket ID, URL, Subject, Description, Status, Priority, Type, Requester Email, Assignee Email, Comments
Fires when: A new form response is submitted. (Real-time)Configuration: Choose your Google credential and select the Google Form to monitor.Available variables: All submitted form field values
Fires when: A new form submission is received. (Real-time)Configuration: Choose your Typeform credential and select the form to monitor.Available variables: All submitted form field values
Fires when: New records appear in a specified HubSpot list. (Polling, ~60s)Configuration: Choose your HubSpot credential, select the list to monitor, and configure the object type.Available variables: All property values from the records that triggered the event
Fires when: A new incident is detected. (Polling, ~60s)Configuration: Choose your incident.io credential. Optionally filter by severity (Minor, Major, Critical) and mode (Standard, Retrospective, Tutorial, Test).Available variables: Incident ID, Name, Status, Severity, Timestamps, Summary, Permalink, Slack Channel ID

Good to Know

File and Attachment Handling

When a trigger passes files or attachments to your agent, the agent automatically receives and can process them. This includes:
  • Email attachments from Gmail triggers (PDFs, spreadsheets, images, etc.)
  • Slack file attachments from Slack message triggers
  • Google Drive files from Drive triggers (the actual file content, not just the metadata)
  • Teams attachments from Microsoft Teams message triggers
Your agent can read text-based files (PDFs, CSVs, DOCX, etc.), parse images using vision capabilities, and use file contents as context for its response. No additional configuration is needed.

Credentials

Triggers use the credentials of the person who created the trigger, not whoever is chatting with the agent. Make sure you’ve connected the required app on your Apps page before setting up a trigger. For team agents, if team credentials are configured, those can be used instead of personal credentials.

Auto-Disable on Failure

All triggers (scheduled and event-based) automatically deactivate after 3 consecutive failed runs. Common causes include expired credentials, deleted resources (channels, folders, databases), or permission changes. To fix: resolve the underlying issue, then re-enable the trigger from the Tasks section.

Overlapping Runs

If a previous trigger execution is still running when the next one fires, the new execution is skipped. This prevents duplicate work and ensures your agent finishes one task before starting the next.

Credits

Each trigger execution costs credits based on model and tool usage, the same as a normal chat message. One-time scheduled tasks are automatically deleted after execution (whether they succeed or fail).

FAQ

No. Delete the existing task and create a new one with the desired type.
The same model configured for the agent. There’s no separate model setting for triggered vs. interactive runs.
Yes. They appear in the agent’s run history as triggered executions.
Yes. When a trigger includes files (email attachments, Slack files, Google Drive uploads), the agent automatically receives them and can read text-based files, parse images, and use the content in its response.
Some integrations use polling instead of real-time webhooks. Polling-based triggers (Google Sheets, Notion, Airtable, Google Calendar, HubSpot, incident.io) check for changes approximately every 60 seconds. Real-time triggers (Gmail, Slack, Teams, Google Drive, Zendesk, Google Forms, Typeform) fire within seconds.
Yes. You can add as many scheduled tasks and event-based triggers as you need to a single agent. Each trigger operates independently.
Agents can create and manage their own scheduled tasks (recurring and one-time) during conversations. Event-based integration triggers must be set up manually from the agent’s configuration page.