An automation is a trigger attached to a workflow. The workflow says what to do; the automation says when. Together they're how a request you once typed by hand becomes work that happens without you.
Calendar reminders ask you to do work. Automations do the work, then tell you it's done.
Every automation names three things:
- The workflow to run
- The agent that runs it — which decides the voice, the model, and the connectors in play
- The trigger — a schedule, an event in one of your tools, or an inbound webhook
What runs each time
Each firing starts a fresh chat. The chat re-reads the latest context from your tools, calls the connectors it needs, and produces the result.
This matters for two reasons:
- No accumulated state. Last Monday's run doesn't leak into this Monday's. The procedure is the same; the data is fresh.
- Each run is replayable. Open the automation's run history to see exactly what the last run did, where it spent credits, and what it produced.
If a run fails — network blip, expired token, ambiguous input — Zero records the failure with the reason and notifies you instead of silently dropping it.
Trigger types
Schedules
The most common family. See Schedules for cron syntax, time zones, and the operating tips that come from running these in production.
| Trigger | Fires |
|---|---|
cron | On a cron expression, in the time zone you name — 0 8 * * 1-5 |
once | A single time, at a date and time you set |
loop | On a fixed interval — every 15m, 1h, 90s |
| Trigger | Fires |
|---|---|
gmail-new-message | When a new message arrives |
gmail-label-applied | When a named label is applied to a message |
Both narrow with text rules on the From, To, Cc, Subject, and body — each available as contains and does not contain. With no rules, a Gmail automation matches every inbound message, so start narrow.
Triage support mail without watching the inbox:
gmail-new-messagefiltered tofrom-contains: @customer-domain.com, running acustomer-reply-draftworkflow that prepares a draft for you to review.
GitHub
| Trigger | Fires |
|---|---|
github-label-applied | A label lands on an issue or PR — filter by label, repository, issues/PRs/both, and whether the actor is you or anyone |
github-workflow-run-completed | An Actions run finishes — filter by repository, workflow, conclusion, branch, triggering event, actor |
github-workflow-job-completed | A single job finishes — additionally filter by job name, runner label, runner group |
github-pull-request-review-submitted | A review is submitted — filter by review state (approved, changes requested, commented), base and head branch, trusted authors |
github-deployment-status-created | A deployment changes state — filter by environment, state, ref, creator, app, and production-only |
github-issue-comment-created | A comment appears — filter by repository, issues/PRs/both, actor, and required comment prefix |
GitHub triggers need the GitHub App installed in your workspace. Filters accept comma-separated values; omit one to match anything.
Close the CI loop:
github-workflow-run-completedonconclusion: failureformain, running a workflow that reads the logs, identifies the failing step, and posts a diagnosis to Slack.
Calendar
| Trigger | Fires |
|---|---|
google-calendar-event-created | A new event appears |
google-calendar-event-updated | An event changes |
google-calendar-event-cancelled | An event is cancelled |
Each watches one calendar — your primary calendar by default.
Never walk into a meeting cold:
google-calendar-event-createdrunning a workflow that researches external attendees and their companies, then sends you a pre-meeting brief.
Notion
| Trigger | Fires |
|---|---|
notion-child-page-created | A page is added under a parent page you name |
notion-database-item-created | A row is added to a database you name |
notion-page-content-updated | A page's content changes, watched by page or by database |
CMS
| Trigger | Fires |
|---|---|
strapi-entry-published | An entry is published — optionally narrowed to one content type and locale |
Webhook and chat
| Trigger | Fires |
|---|---|
webhook | Any external system calls a signed webhook URL. The signing secret is shown once, at creation — copy it then. Available on Team and Enterprise. |
chat-run-finished | A run finishes in a chat thread you name — optionally filtered by finish status (completed, failed, cancelled) and a wildcard pattern matched against the run's final message |
chat-run-finished is how you chain work: one automation's output becomes another's starting gun.
Creating an automation
From a chat that works. Run the task as a one-off first. When it produces what you want, say:
"Run this every weekday at 8 a.m. Los Angeles time and DM me the result."
Zero confirms the workflow, the cadence, and the destination, saves the workflow if it doesn't exist yet, and attaches the automation.
Explicitly. Open a workflow in your workspace and add an automation to it, choosing the trigger type and its filters. Useful when you know the shape ahead of time and don't want a dry run.
Automations can be enabled and disabled individually without deleting them — the right move before a vacation, or while you debug a noisy trigger.
Destinations
An automation needs to know where the result goes. State it in the workflow instruction:
- Slack channel or DM — most common; lands in the channel as a message or thread
- Feishu or Microsoft Teams — same idea for teams that live there
- Telegram or text message — for personal, mobile-first alerts
- A Notion page or database — for things that should be archived rather than broadcast
- A Google Doc or Sheet — appended or overwritten
- A GitHub issue or PR comment — for engineering workflows
- A Gmail draft — prepared in your account for you to review and send
- A hosted page — see Hosted sites
- A workspace file — when the artifact is a video, image, or downloadable asset
"Post to #engineering" or "DM me" is clearer than "send it somewhere."
Costs
Each run consumes credits, and every run is attributed to the agent that ran it. Watch the first three runs of any new automation — they're easy to set up and easier to refine once you see what Zero produces in your environment. A morning brief is usually cheap; a weekly multi-tool content bundle costs more. See Credits & billing for how this maps to dollars.
Event triggers can be surprisingly chatty. A Gmail automation with no filters, or a GitHub automation across a busy monorepo, will fire far more often than you expect. Narrow the filter first, then widen it.
What's next
- See Workflows for the procedure an automation runs.
- See Schedules for cron, time zones, and cadence tips.
- See Chat for what happens inside each run.
- See Example workflows for five complete workflow-plus-automation combinations.