Automation Actions
Actions define what happens when a rule's trigger fires and its conditions pass. Each rule can have one or more actions, and they execute in the order they are listed. SetGet provides 12 action types covering state management, assignments, organization, communication, and integrations.
How actions execute
When a rule matches:
- Actions execute sequentially in the order they appear in the rule.
- Each action runs to completion before the next one starts.
- If an action fails, subsequent actions in the same rule still execute (fail-open behavior).
- Failed actions are logged in the Execution History with error details.
- Actions that modify the work item save changes to the database immediately.
WARNING
Actions that modify work item properties (state, priority, assignees, labels) can trigger other automation rules. See Advanced Patterns for guidance on preventing infinite loops.
Action summary table
| Action | Effect | Parameters |
|---|---|---|
change_state | Move to a specified state | Target state |
change_priority | Set priority level | Target priority |
assign | Add assignee(s) | User(s) to assign |
unassign | Remove assignee(s) | User(s) to remove, or all |
add_label | Apply label(s) | Label(s) to add |
remove_label | Remove label(s) | Label(s) to remove |
move_to_cycle | Add to a cycle | Target cycle |
move_to_module | Add to a module | Target module |
add_comment | Post an automated comment | Comment text |
send_notification | Trigger notification | Recipients, message |
call_webhook | Make HTTP request | URL, method, headers, body |
archive | Archive the work item | (none) |
change_state
Moves the work item to a specified workflow state.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
target_state | State selector | Yes | The state to transition to |
Configuration
- In the action editor, select Change State.
- Choose the target state from the dropdown. The dropdown shows all states defined in the project, grouped by state group.
- Save the action.
Example usage
Move work items to "In Review" when a reviewer is assigned:
- Trigger:
assignee_changed - Condition: Added assignee has "Reviewer" role label
- Action:
change_stateto "In Review"
Side effects
- Changing state dispatches a notification to all subscribers of the work item.
- The state change is recorded in the work item's activity log.
- Other rules with
state_changedtriggers may fire.
Error handling
If the target state does not exist (for example, it was deleted after the rule was created), the action fails and logs an error: "Target state not found". The work item remains in its current state.
change_priority
Sets the work item's priority to a specified level.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
target_priority | Enum | Yes | none, low, medium, high, or urgent |
Configuration
- Select Change Priority in the action editor.
- Choose the target priority from the dropdown.
- Save the action.
Example usage
Escalate overdue items to Urgent:
- Trigger:
due_date_passed - Condition: Priority is not "Urgent"
- Action:
change_prioritytourgent
Side effects
- Priority changes dispatch notifications to subscribers.
- The change is recorded in the activity log.
- Rules with
priority_changedtriggers may fire.
Error handling
Priority values are fixed enums. This action does not fail under normal circumstances. If an invalid priority value is somehow configured, the action logs an error and skips.
assign
Adds one or more users as assignees to the work item.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
user_ids | Array of user IDs | Yes | Users to add as assignees |
Configuration
- Select Assign in the action editor.
- Use the member picker to select one or more workspace members.
- Save the action.
Example usage
Auto-assign new bugs to the triage lead:
- Trigger:
issue_created - Condition: Label contains "Bug"
- Action:
assignthe triage lead
Side effects
- New assignees are automatically subscribed to the work item's notifications.
- The assignment is recorded in the activity log.
- Rules with
assignee_changedtriggers may fire. - If the user is already assigned, the action is a no-op for that user (no duplicate assignment).
Error handling
If a specified user ID does not correspond to a valid workspace member, that user is skipped. An error is logged but the action continues with remaining valid users.
unassign
Removes one or more users from the work item's assignee list.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
user_ids | Array of user IDs | Conditional | Users to remove. Required if remove_all is false. |
remove_all | Boolean | No | If true, remove all assignees. Default: false. |
Configuration
- Select Unassign in the action editor.
- Either toggle Remove All Assignees on, or select specific members to remove.
- Save the action.
Example usage
Remove all assignees when an item is moved to "Cancelled":
- Trigger:
state_changed - Condition: New state group is "cancelled"
- Action:
unassignwithremove_all: true
Side effects
- Removed assignees remain subscribed to the work item unless they manually unsubscribe.
- The unassignment is recorded in the activity log.
- Rules with
assignee_changedtriggers may fire.
Error handling
If a specified user is not currently assigned, the action is a no-op for that user. No error is logged.
add_label
Applies one or more labels to the work item.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
label_ids | Array of label IDs | Yes | Labels to add |
Configuration
- Select Add Label in the action editor.
- Use the label picker to select one or more project labels.
- Save the action.
Example usage
Tag escalated items with a visual indicator:
- Trigger:
priority_changed - Condition: New priority is "Urgent"
- Action:
add_label"Escalated"
Side effects
- Label changes are recorded in the activity log.
- Rules with
label_changedtriggers may fire. - If the label is already present, the action is a no-op (no duplicate).
Error handling
If a label ID does not correspond to a valid project label (for example, the label was deleted), that label is skipped and an error is logged.
remove_label
Removes one or more labels from the work item.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
label_ids | Array of label IDs | Yes | Labels to remove |
Configuration
- Select Remove Label in the action editor.
- Use the label picker to select the labels to remove.
- Save the action.
Example usage
Remove the "Needs Triage" label after triage is complete:
- Trigger:
state_changed - Condition: New state is "In Progress"
- Action:
remove_label"Needs Triage"
Side effects
- Label changes are recorded in the activity log.
- Rules with
label_changedtriggers may fire.
Error handling
If the label is not currently on the work item, the action is a no-op. No error is logged.
move_to_cycle
Adds the work item to a specified cycle.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
cycle_id | Cycle selector | Yes | The target cycle |
Configuration
- Select Move to Cycle in the action editor.
- Choose the target cycle from the dropdown. Active and upcoming cycles are listed.
- Save the action.
Example usage
Automatically add new high-priority items to the current sprint:
- Trigger:
issue_created - Condition: Priority is "High" or "Urgent"
- Action:
move_to_cyclecurrent active cycle
Side effects
- The work item appears in the cycle's work item list.
- Cycle progress metrics are updated.
- If the work item is already in the target cycle, the action is a no-op.
Error handling
If the target cycle has ended or been deleted, the action fails and logs: "Target cycle not found or inactive". The work item is not added to any cycle.
TIP
When selecting a cycle, choose the current active cycle. If you want the rule to always target the latest active cycle, update the rule's cycle selection at the start of each new sprint.
move_to_module
Adds the work item to a specified module.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
module_id | Module selector | Yes | The target module |
Configuration
- Select Move to Module in the action editor.
- Choose the target module from the dropdown.
- Save the action.
Example usage
Route security-related items to the Security module:
- Trigger:
label_changed - Condition: Added labels contain "Security"
- Action:
move_to_module"Security Hardening"
Side effects
- The work item appears in the module's work item list.
- Module progress metrics are updated.
- If the work item is already in the target module, the action is a no-op.
Error handling
If the target module does not exist, the action fails and logs: "Target module not found". The work item is not added to any module.
add_comment
Posts an automated comment on the work item. The comment is attributed to the automation system, not to any individual user.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
body | String | Yes | The comment text. Supports plain text and basic Markdown. |
Configuration
- Select Add Comment in the action editor.
- Enter the comment text in the text area. You can use Markdown for formatting.
- Save the action.
Template variables
You can include dynamic values in the comment text using template variables:
| Variable | Description |
|---|---|
{{issue.identifier}} | Work item identifier (e.g., PROJ-123) |
{{issue.title}} | Work item title |
{{issue.state}} | Current state name |
{{issue.priority}} | Current priority level |
{{actor.name}} | Name of the user who triggered the event |
{{rule.name}} | Name of the automation rule |
Example comment template:
This item was automatically escalated to **{{issue.priority}}** priority by the "{{rule.name}}" automation.Side effects
- The comment appears in the work item's activity feed.
- Subscribers are notified of the new comment.
- Rules with
comment_addedtriggers may fire. Use caution to avoid loops.
Error handling
If the comment body is empty, the action is skipped. An error is logged: "Comment body is empty".
WARNING
If another rule has a comment_added trigger, adding a comment via automation can cause that rule to fire. Ensure you have re-entrancy guards in place. See Advanced Patterns.
send_notification
Sends an in-app notification and optionally an email notification to specified recipients.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
recipients | Array | Yes | Who to notify: specific users, assignees, subscribers, or project members |
message | String | Yes | Notification message text. Supports template variables. |
include_email | Boolean | No | Also send an email notification. Default: false. |
Configuration
- Select Send Notification in the action editor.
- Choose recipients from the dropdown:
- Specific users: Select individual members.
- Assignees: All current assignees of the work item.
- Subscribers: All users subscribed to the work item.
- Project members: All members of the project.
- Enter the notification message.
- Optionally toggle Send email on.
- Save the action.
Example usage
Alert the engineering lead when a blocker is created:
- Trigger:
issue_created - Condition: Label contains "Blocker"
- Action:
send_notificationto engineering lead with message "New blocker: {{issue.identifier}} - {{issue.title}}"
Side effects
- Notifications appear in recipients' notification center.
- Email notifications are sent if enabled and the recipient has email notifications turned on.
Error handling
If no valid recipients are found (for example, "assignees" is selected but the work item has no assignees), the action completes without sending anything. A warning is logged.
call_webhook
Makes an HTTP request to an external URL. This action enables integration with external services, CI/CD pipelines, monitoring tools, and custom backends.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | String | Yes | The endpoint URL |
method | Enum | Yes | GET, POST, PUT, PATCH, or DELETE |
headers | Key-value pairs | No | Custom HTTP headers (e.g., Authorization) |
body | String (JSON) | No | Request body. Supports template variables. Required for POST/PUT/PATCH. |
timeout_seconds | Integer | No | Request timeout. Default: 30 seconds. Maximum: 60 seconds. |
Configuration
- Select Call Webhook in the action editor.
- Enter the target URL.
- Select the HTTP method.
- Add any required headers (such as
Authorization: Bearer <token>orContent-Type: application/json). - Enter the request body as JSON. Use template variables for dynamic data.
- Save the action.
Example usage
Notify an external monitoring service when an item reaches Urgent:
- Trigger:
priority_changed - Condition: New priority is "Urgent"
- Action:
call_webhookPOST tohttps://monitoring.example.com/api/alerts
Example body:
{
"event": "urgent_escalation",
"issue_id": "{{issue.identifier}}",
"title": "{{issue.title}}",
"priority": "{{issue.priority}}",
"url": "https://app.setget.dev/{{workspace.slug}}/projects/{{issue.project_id}}/issues/{{issue.id}}"
}Side effects
- The HTTP request is made from the SetGet API server.
- Response status and body are logged in the execution history.
- External services may take further action based on the webhook payload.
Error handling
| Scenario | Behavior |
|---|---|
| Connection timeout | Action fails after the configured timeout. Error logged. |
| HTTP 4xx response | Action marked as failed. Response body logged. |
| HTTP 5xx response | Action marked as failed. One automatic retry after 30 seconds. |
| Invalid URL | Action fails immediately. Error logged. |
| Network unreachable | Action fails. Error logged. |
WARNING
Webhook URLs and headers may contain sensitive information (API keys, tokens). These values are stored encrypted in the database and are never exposed in the UI after saving. Treat webhook configurations as secrets.
archive
Archives the work item. Archived items are removed from active views but preserved in the archive for reference.
Parameters
This action has no parameters.
Configuration
- Select Archive in the action editor.
- Save the action. No additional configuration needed.
Example usage
Auto-archive completed items after 7 days:
- Trigger:
scheduled(daily at 2 AM) - Condition: State group is "completed" AND
updated_at_age_daysgreater than 7 - Action:
archive
Side effects
- The work item is removed from active project views (list, board, spreadsheet, calendar).
- The work item appears in the project's archive section.
- Archive status is recorded in the activity log.
- The work item can be restored from the archive manually.
Error handling
If the work item is already archived, the action is a no-op. No error is logged.
Combining multiple actions
A single rule can have multiple actions. They execute in order. Common multi-action patterns:
| Pattern | Actions |
|---|---|
| Triage routing | change_state to Triage, assign triage lead, add_label "Needs Triage" |
| Escalation | change_priority to Urgent, add_label "Escalated", send_notification to lead |
| Completion cleanup | remove_label "In Progress", add_comment "Completed by automation", archive |
| External sync | change_state, call_webhook to sync with external tracker |
TIP
Order matters. If an action depends on a previous action's result (e.g., notifying about the new state), place the state change action first.
Related pages
- Automation Rules -- Creating and managing rules
- Triggers -- Events that start rule execution
- Conditions -- Filtering which items match
- Scheduling -- Time-based rule execution
- Execution History -- Reviewing action results
- Advanced Patterns -- Chaining, loops, and conflicts