Automations
Automations help you reduce manual work by automatically performing actions when certain conditions are met.
How Automations Work
When [TRIGGER] happens → Then [ACTION] is performedExample: "When status changes to Done → Notify the team"
Trigger Types
| Trigger | Description |
|---|---|
status_change | When task status changes |
date_arrives | When a due date approaches |
item_created | When a new task is created |
person_assigned | When someone is assigned |
priority_change | When priority changes |
Status Change Trigger
{
type: "status_change",
config: {
fromStatus: "working", // Optional
toStatus: "done" // Required
}
}Date Arrives Trigger
{
type: "date_arrives",
config: {
daysBeforeDue: 3 // Trigger 3 days before due date
}
}Action Types
| Action | Description |
|---|---|
notify | Send notification to users |
change_status | Update task status |
assign_person | Assign user to task |
move_to_group | Move task to different group |
create_item | Create a new task |
send_email | Send email notification |
Notify Action
{
type: "notify",
config: {
message: "Task marked as done!",
notifyPersonIds: ["user-1", "user-2"]
}
}Change Status Action
{
type: "change_status",
config: {
status: "review"
}
}Creating Automations
Via UI
- Open a board
- Click Automations in the header
- Click + Add Automation
- Select trigger type
- Configure trigger conditions
- Select action type
- Configure action
- Save automation
Via Store
import { useAppStore } from '@/lib/store'
const addAutomation = useAppStore((s) => s.addAutomation)
addAutomation({
boardId: 'board-id',
name: 'Notify on completion',
trigger: {
type: 'status_change',
config: { toStatus: 'done' }
},
actions: [{
type: 'notify',
config: {
message: 'Task completed!',
notifyPersonIds: ['user-id']
}
}],
enabled: true
})Automation Schema
interface Automation {
id: string
boardId: string
name: string
trigger: AutomationTrigger
actions: AutomationAction[]
enabled: boolean
runCount: number // How many times it's run
createdAt: string
}Managing Automations
// Toggle automation on/off
const toggleAutomation = useAppStore((s) => s.toggleAutomation)
toggleAutomation(automationId)
// Update automation
const updateAutomation = useAppStore((s) => s.updateAutomation)
updateAutomation(automationId, {
name: 'New name',
enabled: false
})
// Delete automation
const deleteAutomation = useAppStore((s) => s.deleteAutomation)
deleteAutomation(automationId)Example Automations
Notify Manager on High Priority
{
name: "Alert on high priority",
trigger: {
type: "priority_change",
config: { toPriority: "critical" }
},
actions: [{
type: "notify",
config: {
message: "Critical priority task needs attention!",
notifyPersonIds: ["manager-id"]
}
}]
}Auto-Assign New Tasks
{
name: "Auto-assign to John",
trigger: {
type: "item_created",
config: { groupId: "group-id" }
},
actions: [{
type: "assign_person",
config: { personId: "john-id" }
}]
}Due Date Reminder
{
name: "Remind 2 days before due",
trigger: {
type: "date_arrives",
config: { daysBeforeDue: 2 }
},
actions: [{
type: "notify",
config: {
message: "Task due in 2 days!"
}
}]
}