
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
- Recurring
- One-time
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.

Minimum interval is 1 minute. Timezones default to your browser’s timezone.

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.” |
Self-Scheduling
Your agent can create and manage its own tasks during a conversation. Just tell it what you need:| What you say | What 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 |
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: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.

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.
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.
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:- You write a prompt template with placeholder variables (shown as badges in the UI)
- When the trigger fires, each variable is replaced with the actual event data
- The agent receives the fully resolved prompt and acts on it
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.
Integration Details
Gmail
Gmail
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
Slack
Slack
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
Microsoft Teams
Microsoft Teams
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
Google Drive
Google Drive
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
Google Sheets
Google Sheets
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
Google Calendar
Google Calendar
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
Notion
Notion
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
Airtable
Airtable
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
Zendesk
Zendesk
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
Google Forms
Google Forms
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
Typeform
Typeform
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
HubSpot
HubSpot
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
incident.io
incident.io
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
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
Can I change a recurring task to one-time (or vice versa)?
Can I change a recurring task to one-time (or vice versa)?
No. Delete the existing task and create a new one with the desired type.
What model does the agent use for triggered runs?
What model does the agent use for triggered runs?
The same model configured for the agent. There’s no separate model setting for triggered vs. interactive runs.
Are triggered runs visible in history?
Are triggered runs visible in history?
Yes. They appear in the agent’s run history as triggered executions.
Can my agent handle file attachments from triggers?
Can my agent handle file attachments from triggers?
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.
Why is there a delay with some triggers?
Why is there a delay with some triggers?
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.
Can one agent have multiple triggers?
Can one agent have multiple triggers?
Yes. You can add as many scheduled tasks and event-based triggers as you need to a single agent. Each trigger operates independently.
Can my agent create its own event-based triggers?
Can my agent create its own event-based triggers?
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.


