Skip to main content

Ticket Automations

TOW Automations run Jira-style ticket flows from ticket events, schedules, manual runs, and incoming webhooks. Project admins manage project flows from Project Settings -> Automations. Organisation admins manage global flows from Automations in the main navigation.

Flow Shape

Each flow has one trigger and an ordered list of steps.

  • Triggers include ticket created, updated, field value changed, assigned, commented, comment edited, linked, link deleted, transitioned, work logged, manual, scheduled, multiple events, version events, incoming webhook, and connector-backed development events.
  • Conditions include ticket fields, smart-value comparisons, TQL, related tickets, users, attachments placeholders, and if/else blocks with Jira's two-level nesting limit.
  • Branches can run over parents, subtasks, epic children, linked tickets, recently created tickets, TQL lookup results, and advanced smart-value lists.
  • Actions include transition, edit, assign, comment, create, clone, delete, link, unlink, create subtasks, checklist items, log work, lookup tickets, create or release versions, variables, re-fetch, web requests, delays, and connector-gated external actions.

Transition actions use the same workflow enforcement as manual ticket changes. Required fields, project roles, restricted transitions, and ticket.transition permission still apply. Failures are visible in the flow audit log.

Smart Values

Supported smart values include:

  • {{issue.*}}
  • {{triggerIssue.*}}
  • {{branchIssue.*}}
  • {{fieldChange.*}}
  • {{comment.*}}
  • {{webhookData.*}}
  • {{lookupIssues}}
  • {{createdIssue}}
  • {{now}}

Lookup lists can be rendered with:

{{#lookupIssues}}
{{key}} - {{summary}}
{{/}}

Recipes

Comment reopens a closed ticket

Trigger: work_item_commented

Steps:

[
{"type": "condition", "condition": "issue_fields", "field": "status_category", "operator": "equals", "value": "done"},
{"type": "action", "action": "transition_issue", "target_status": "in_progress"}
]

All subtasks done closes the parent

Trigger: work_item_transitioned

Steps:

[
{
"type": "branch",
"branch": "parent",
"steps": [
{"type": "condition", "condition": "related_issues", "relation": "subtasks", "mode": "all", "status_category": "done"},
{"type": "action", "action": "transition_issue", "target_status": "done"}
]
}
]

PR created moves ticket to review

Trigger: development_event

Steps:

[
{"type": "action", "action": "transition_issue", "target_status": "in_review"}
]

Development triggers are connector-backed. The flow validates and appears in the UI, but execution requires a registered connector adapter.

Stale blocked tickets move to triage

Trigger:

{"type": "scheduled", "every_minutes": 1440}

Steps:

[
{"type": "action", "action": "lookup_issues", "tql": "status = blocked AND updated < -7d"},
{
"type": "branch",
"branch": "lookup_issues",
"steps": [
{"type": "action", "action": "comment", "body": "Blocked for more than a week."},
{"type": "action", "action": "transition_issue", "target_status": "todo"}
]
}
]

Scheduled cleanup archives done tickets

Trigger:

{"type": "scheduled", "hour_utc": 2}

Steps:

[
{"type": "action", "action": "lookup_issues", "tql": "status_category = done AND updated < -30d"},
{
"type": "branch",
"branch": "lookup_issues",
"steps": [
{"type": "action", "action": "transition_issue", "target_status": "archived"}
]
}
]