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

ActionDescription
set_statusChange status (open, pending, solved, closed)
set_prioritySet priority (low, medium, high, urgent)
assign_toAssign to user ID, "ai", or "unassigned"
add_tagsAdd tags to the ticket
remove_tagsRemove tags from the ticket
add_internal_noteAdd private note for agents

Communication Actions

ActionDescription
send_replySend email reply to customer
send_emailSend email to any address
send_slack_messagePost to Slack channel
send_teams_messagePost to Teams channel
send_webhookHTTP request to external URL

AI Actions

ActionDescription
generate_ai_responseGenerate response using AI
classify_ticketAI categorization and sentiment

Platform Actions

ActionDescription
execute_connector_actionRun 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: summary

Use in subsequent action: {{variables.summary}}

Configuration Examples

Send Reply:

actionType: send_reply
config:
  content: "Hi {{customer.name}}, your request has been received."
  includeSignature: true

Webhook:

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: true

Error Handling

  • Timeout: Default 30 seconds, configurable via timeout (ms)
  • Require Approval: Set requireApproval: true for 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

  1. Label clearly: "Assign to Billing Team" not "Action 1"
  2. Test with manual trigger: Verify before enabling live triggers
  3. Use approval for sensitive ops: Refunds, deletions, external APIs
  4. Save AI outputs: Store generated text for later steps

Next Steps