Skip to content

Automation Conditions

Conditions determine which work items a rule applies to. When a trigger fires, the automation engine evaluates the rule's conditions against the affected work item. If all conditions pass, the rule's actions execute. If any condition fails (in AND mode) or all conditions fail (in OR mode), the rule is skipped for that work item.

Condition structure

Every condition consists of three parts:

  1. Field -- The work item property to evaluate.
  2. Operator -- How to compare the field's value.
  3. Value -- The target value(s) to compare against.

For example: priority (field) equals (operator) Urgent (value).

Building conditions in the UI

The condition builder is part of the rule editor. To add a condition:

  1. Open the rule editor (via Settings > Automations > Create Rule or edit an existing rule).
  2. In the Conditions section, click Add Condition.
  3. Select a field from the first dropdown.
  4. Select an operator from the second dropdown (available operators depend on the field type).
  5. Enter or select a value in the third input (text input, dropdown, or multi-select depending on the field and operator).
  6. Click Add to save the condition.

Repeat to add multiple conditions. Use the AND/OR toggle to control how multiple conditions combine.

Field types

SetGet supports 7 field types in automation conditions.

priority

Evaluates the work item's priority level.

PropertyDetail
Field keypriority
Data typeEnum
Possible valuesnone, low, medium, high, urgent
Compatible operatorsequals, not_equals, in, not_in

Example: Only match work items with High or Urgent priority.

  • Field: priority
  • Operator: in
  • Value: high, urgent

state_group

Evaluates the group that the work item's current state belongs to. State groups categorize individual states into broader lifecycle phases.

PropertyDetail
Field keystate_group
Data typeEnum
Possible valuesbacklog, unstarted, started, completed, cancelled
Compatible operatorsequals, not_equals, in, not_in

Example: Match work items in active states only.

  • Field: state_group
  • Operator: in
  • Value: unstarted, started

TIP

Use state_group instead of matching individual state names when your rule should apply to any state within a lifecycle phase. This makes the rule resilient to state name changes.

assignee_ids

Evaluates the list of users assigned to the work item.

PropertyDetail
Field keyassignee_ids
Data typeArray of user IDs
Value inputMulti-select user picker
Compatible operatorscontains, is_empty, is_not_empty, in, not_in

Example: Match unassigned work items.

  • Field: assignee_ids
  • Operator: is_empty
  • Value: (none required)

Example: Match work items assigned to a specific team member.

  • Field: assignee_ids
  • Operator: contains
  • Value: Select the user from the picker

label_ids

Evaluates the list of labels attached to the work item.

PropertyDetail
Field keylabel_ids
Data typeArray of label IDs
Value inputMulti-select label picker
Compatible operatorscontains, is_empty, is_not_empty, in, not_in

Example: Match work items tagged with "Bug".

  • Field: label_ids
  • Operator: contains
  • Value: Select "Bug" from the label picker

Example: Match work items that have no labels.

  • Field: label_ids
  • Operator: is_empty
  • Value: (none required)

created_by

Evaluates the user who created the work item.

PropertyDetail
Field keycreated_by
Data typeUser ID
Value inputUser picker
Compatible operatorsequals, not_equals, in, not_in

Example: Match work items created by external stakeholders.

  • Field: created_by
  • Operator: in
  • Value: Select the external stakeholder users

updated_at_age_days

Evaluates the number of days since the work item was last updated. This is a computed field calculated at evaluation time.

PropertyDetail
Field keyupdated_at_age_days
Data typeInteger (days)
Value inputNumber input
Compatible operatorsequals, not_equals, greater_than, less_than

Example: Match work items not updated in over 30 days.

  • Field: updated_at_age_days
  • Operator: greater_than
  • Value: 30

TIP

Combine updated_at_age_days with a scheduled trigger to build periodic cleanup rules that archive stale items.

created_at_age_days

Evaluates the number of days since the work item was created. This is a computed field calculated at evaluation time.

PropertyDetail
Field keycreated_at_age_days
Data typeInteger (days)
Value inputNumber input
Compatible operatorsequals, not_equals, greater_than, less_than

Example: Match work items created more than 90 days ago.

  • Field: created_at_age_days
  • Operator: greater_than
  • Value: 90

Operators

SetGet provides 9 operators for condition evaluation.

OperatorDescriptionApplicable to
equalsField value exactly matches the target valueAll field types
not_equalsField value does not match the target valueAll field types
inField value is one of the target valuesEnum fields, user IDs, label IDs
not_inField value is not any of the target valuesEnum fields, user IDs, label IDs
containsArray field includes the target valueassignee_ids, label_ids
is_emptyArray field has no elements or field is nullassignee_ids, label_ids
is_not_emptyArray field has at least one elementassignee_ids, label_ids
greater_thanNumeric value exceeds the targetupdated_at_age_days, created_at_age_days
less_thanNumeric value is below the targetupdated_at_age_days, created_at_age_days

Operator compatibility matrix

Fieldequalsnot_equalsinnot_incontainsis_emptyis_not_emptygreater_thanless_than
priorityYesYesYesYes----------
state_groupYesYesYesYes----------
assignee_ids----YesYesYesYesYes----
label_ids----YesYesYesYesYes----
created_byYesYesYesYes----------
updated_at_age_daysYesYes----------YesYes
created_at_age_daysYesYes----------YesYes

AND/OR logic toggle

When a rule has multiple conditions, you control how they combine using the logic toggle at the top of the conditions section.

AND mode (default)

All conditions must be true for the rule to match. The work item must satisfy every condition.

Example: Match urgent bugs assigned to no one.

#FieldOperatorValue
1priorityequalsurgent
2label_idscontainsBug
3assignee_idsis_empty--

Logic: AND -- all three conditions must be true.

OR mode

At least one condition must be true for the rule to match. The work item must satisfy any single condition.

Example: Match items that are either urgent or overdue.

#FieldOperatorValue
1priorityequalsurgent
2updated_at_age_daysgreater_than14

Logic: OR -- either condition being true is sufficient.

WARNING

The logic toggle applies to all conditions in a rule uniformly. You cannot mix AND and OR logic within a single rule. If you need complex logic (e.g., "A AND (B OR C)"), create separate rules for each branch.

Condition examples

Example 1: High-priority unassigned items

Route high-priority items that have no assignee to the team lead.

FieldOperatorValue
priorityinhigh, urgent
assignee_idsis_empty--

Logic: AND

Example 2: Stale items in progress

Find items in active states that have not been updated recently.

FieldOperatorValue
state_groupequalsstarted
updated_at_age_daysgreater_than7

Logic: AND

Example 3: Bugs from external reporters

Match bugs created by specific external stakeholders.

FieldOperatorValue
label_idscontainsBug
created_byin(select stakeholder users)

Logic: AND

Example 4: Items needing attention

Broad filter for items that may need intervention.

FieldOperatorValue
priorityequalsurgent
assignee_idsis_empty--
updated_at_age_daysgreater_than3

Logic: OR -- any one of these conditions flags the item.

Condition evaluation order

Conditions are evaluated in the order they are listed in the rule. However, due to short-circuit evaluation:

  • In AND mode, evaluation stops at the first condition that returns false.
  • In OR mode, evaluation stops at the first condition that returns true.

This means placing the most selective (most likely to fail/pass) condition first can improve performance, especially for rules that evaluate against many work items (such as scheduled triggers).

TIP

Put cheap, selective conditions first. For example, checking priority equals urgent is faster than checking updated_at_age_days greater_than 30 because the priority check is a simple enum comparison while the age check requires date arithmetic.