Workflows

Automation on a visual canvas.

Node-graph workflows triggered by anything in your workspace — with branching, loops, a built-in AI step and dry-run testing.
Builder
Visual node-graph
Triggers
13+ event types + cron
Logic
Branch · loop · delay · AI
Safety
Test runs + traces
Trigger
Email received
in #support inbox
AI step
Extract fields
urgency · topic · customer
If urgent
Create task
assign on-call, ping #support
Otherwise
Upsert table row
CRM table → follow-up Friday
support-triage — enabled
Test run — nothing persisted
01Triggers everywhere

Every event in your workspace is a starting point.

Tasks, messages, tables, email, calendar, webhooks, cron

Because everything lives in one platform, everything can trigger a flow: a task changes status, a message arrives, a table row is created, an email lands in the channel inbox, a meeting is scheduled, a webhook fires from GitHub or HubSpot — or simply on a schedule.

  • Task, message, table & email triggers
  • Calendar & document events
  • Webhooks (GitHub, HubSpot) & scheduled runs
  • Run manually anytime
Add a trigger
What starts this flow?
Workspace events
Task created
A new task is created in this channel
Message posted
Someone posts a message
Email received
A new email arrives in the channel inbox
Table row created
A row is added to a channel table
External & schedule
GitHub event
A webhook (push, PR, issue…) arrives
On a schedule
Recurring — every weekday at 09:00
Manual / Run now
Only when you run it by hand
13+ trigger types · webhooks · cronAdd trigger
02Visual builder

Flows that branch, loop and wait.

A node-graph canvas with an AI step built in

Build on a visual canvas, not a wall of settings: conditions with named branches, for-each loops, delays, and variables like {{trigger.title}} flowing between steps. Drop in an AI step to summarize, extract structured fields or make a call mid-flow — with an explicit tool policy you control.

  • Node-graph canvas, multiple triggers per flow
  • Branching, for-each loops, delays
  • Built-in AI step with structured output
  • Variables & tokens between steps
Trigger
Task status changed
status → Blocked
Condition
If / branch
{{vars.urgency}} = high
urgentelse
Action
Send message
#oncall · {{trigger.title}}
Control
Wait / delay
1 day, then follow up
Add step
StepsAI agentFor eachHTTP request
03Act & verify

Try it first, then let it run.

Test runs, per-node traces, HTTP to anywhere

Test run executes the whole flow without persisting anything, so you see exactly what would happen. Every run keeps a per-node trace — inputs, outputs, warnings. Actions cover the platform (send messages and email, create and update tasks, write table rows) plus an HTTP request node for any external API.

  • Dry-run test mode — nothing persisted
  • Run history with per-node traces
  • Message, email, task & table actions
  • HTTP request node for external APIs
support-triage
Email received · active
Run once Test run
Recent runs
FailedJul 18, 09:12"HTTP request": 502 Bad Gateway
Email receivedDone
AI agentDone
output: { "urgency": "high", "topic": "billing" }
HTTP requestFailed

502 Bad Gateway — POST /tickets

Retry
DoneJul 18, 08:00 Test run
DoneJul 17, 16:45
Waiting (delay)Jul 17, 09:00

Automation

Leave the busywork to the flows.

01
13+
Trigger types
02
AI step
Inside any flow
03
Branch · loop
Real control flow
04
Test run
Preview before enabling

Get started

Build your first flow.

Automation that lives where the work happens — triggered by your tasks, messages and tables, running on your own infrastructure if you want.