Workflows
Workflow Actions
Execute operations when workflow conditions are met
Actions are the operations your workflow performs. After a trigger fires and conditions are evaluated, actions execute to update tickets, send notifications, call APIs, and more.
Ticket Actions
| Action | Description |
|---|---|
set_status | Change status (open, pending, solved, closed) |
set_priority | Set priority (low, medium, high, urgent) |
assign_to | Assign to user ID, "ai", or "unassigned" |
add_tags | Add tags to the ticket |
remove_tags | Remove tags from the ticket |
add_internal_note | Add private note for agents |
Communication Actions
| Action | Description |
|---|---|
send_reply | Send email reply to customer |
send_email | Send email to any address |
send_slack_message | Post to Slack channel |
send_teams_message | Post to Teams channel |
send_webhook | HTTP request to external URL |
AI Actions
| Action | Description |
|---|---|
generate_ai_response | Generate response using AI |
classify_ticket | AI categorization and sentiment |
Platform Actions
| Action | Description |
|---|---|
execute_connector_action | Run action from connected platforms |
Available on: Shopify (84), Stripe (64), GitHub (61), Slack (41), Jira (47), and more.
Using Variables
Actions support dynamic values with double-brace syntax:
- Ticket:
{{ticket.id}},{{ticket.subject}},{{ticket.status}} - Customer:
{{customer.name}},{{customer.email}},{{customer.isVip}} - Message:
{{message.body}},{{message.senderName}} - Custom fields:
{{customFields.order_number}} - Workflow vars:
{{variables.aiResponse}}
Saving Action Output
Store results for later steps:
actionType: generate_ai_response
config:
promptTemplate: "Summarize: {{ticket.subject}}"
saveAs: summaryUse in subsequent action: {{variables.summary}}
Configuration Examples
Send Reply:
actionType: send_reply
config:
content: "Hi {{customer.name}}, your request has been received."
includeSignature: trueWebhook:
actionType: send_webhook
config:
url: "https://api.example.com/notify"
method: POST
body: '{"ticketId": "{{ticket.id}}"}'Platform Action:
actionType: execute_connector_action
config:
connectorId: "shopify-connector-uuid"
actionId: "refund_order"
params:
orderId: "{{customFields.order_id}}"
requireApproval: trueError Handling
- Timeout: Default 30 seconds, configurable via
timeout(ms) - Require Approval: Set
requireApproval: truefor sensitive operations - Failure: Error logged, subsequent actions in path skipped, parallel paths continue
Slack and Teams
Slack:
actionType: send_slack_message
config:
connectorId: "slack-connector-uuid"
channel: "#support-alerts"
message: "New urgent ticket: {{ticket.subject}}"Teams:
actionType: send_teams_message
config:
connectorId: "teams-connector-uuid"
teamId: "team-uuid"
channelId: "channel-uuid"
message: "Ticket escalated: {{ticket.subject}}"Best Practices
- Label clearly: "Assign to Billing Team" not "Action 1"
- Test with manual trigger: Verify before enabling live triggers
- Use approval for sensitive ops: Refunds, deletions, external APIs
- Save AI outputs: Store generated text for later steps
Next Steps
- Conditions - Control action execution
- Templates - See action examples
- Connectors - Available platform actions