Automations
Trigger-based workflow rules — assign, notify, change status, post to Slack, call a webhook, and more.
Automations are "when this, do that" rules that run without any manual work. Use them to keep tasks assigned to the right person, nudge stalled work, post Slack notifications, create subtasks, and keep statuses moving.
Two systems, two surfaces. This page covers project-scoped automations that live at /projects/[id]/automations and only act on tasks inside the project. For cross-module workflows — where a trigger in one module drives actions in another — use the Visual Automation Builder at /automations.
Screenshot needed — add an annotated image showing this UI
Where Automations Live
Automations can be scoped two ways:
- Project-level — runs only on tasks in that specific project (
Project → Settings → Automations) - Workspace-level — runs on every project (
Projects → Settings → Automations)
Triggers
An automation starts when one of these events happens:
| Trigger | Fires When |
|---|---|
| status_changed | A task moves to a new status |
| assignee_changed | A task's assignee changes |
| due_at_approaching | A task's due date is coming up (configurable window) |
| created | A new task is created |
| comment_added | Someone comments on a task |
| cron | On a schedule (e.g. every weekday at 9am) |
Conditions
Narrow down when an automation fires with optional conditions. Examples:
- Only if priority is Urgent or High
- Only if the task has the label "customer-reported"
- Only if the assignee is empty
- Only if a custom field equals a specific value
Conditions support equals, not equals, greater than, less than, is empty, is not empty, and contains.
Actions
When the trigger fires and the conditions match, Workestra runs one or more actions:
| Action | What It Does |
|---|---|
| assign | Set the assignee (specific person, round-robin, or project lead) |
| change_status | Move the task to a given status |
| change_priority | Set priority |
| add_label | Add one or more labels |
| add_comment | Post a comment (supports templating) |
| notify_slack | Post a message to a Slack channel |
| notify_email | Send an email to specific users or the assignee |
| create_subtask | Create a subtask under the task |
| webhook | POST a signed payload to any HTTPS URL |
Example Rules
Auto-assign bug reports
- Trigger:
created - Condition: label contains
bug - Action:
assign→ QA lead
Nudge when done
- Trigger:
status_changed - Condition: new status =
Done - Actions:
notify_slack→#releases,add_comment→ "Ready for release notes"
Escalate unassigned urgent work
- Trigger:
cron(every weekday, 9am) - Condition: priority = Urgent AND assignee is empty
- Action:
notify_email→ project lead
Remind before due
- Trigger:
due_at_approaching(24 hours out) - Action:
notify_slack→ assignee
Run History
Every automation keeps a run log showing:
- Timestamp of each firing
- Whether it matched conditions
- Whether each action succeeded or failed
- Error messages for failed runs
Use the run history to debug rules that aren't doing what you expect.
Enabling and Disabling
Toggle automations on or off without deleting them. Disabled automations keep their history but stop firing.
Next Steps
- Custom Fields — use custom fields in conditions
- Slack integration — where
notify_slackposts - Webhooks — signature format for the
webhookaction - SLA Enforcement — related, rule-based time tracking