Skip to main content
Documentation

Support Flows

Support Flows are visual workflows made from connected nodes. Use them when a ticket needs more than a simple button: ask questions, route by answer, call an external service, create a ticket with context, or run follow-up actions automatically.

Flow types

Type Use it for Triggered by
Interactive Forms, guided intake, knowledge base suggestions, conditional ticket creation Panel buttons, custom commands, or a category's workflow buttons
Automation Background ticket actions, reminders, tagging, routing, auto-close workflows Category auto-actions and automation rules

Interactive flows can ask users for input. Automation flows run without user prompts.

Build a flow

Create it

Open Automations → Flows in the dashboard, choose New Flow, then pick Interactive or Automation.

Add nodes

Drag nodes into the builder and connect them in the order they should run. Every flow starts at a Start node.

Configure each node

Set labels, messages, conditions, variables, or actions on each node. Keep labels short so the builder remains readable.

Test and activate

Run a test, fix any missing connections, then mark the flow active.

Attach interactive flows to a panel button, a command, or a category's workflow button. Attach automation flows from a category auto-action or automation rule.

Node catalog

Node cards in the builder show the exact plan requirement. The groups are:

Interactive nodes

Collect input or show information during an interactive flow.

Embed

Show rich info in a Discord embed: title, description, images, and fields.

Use for:

  • Welcome messages
  • Instructions
  • Formatted info display

Button

Present navigation buttons with customizable styles and emojis. Up to 5 buttons per row.

Use for:

  • Menu navigation
  • Yes/No choices
  • Multi-option selection

Modal

Collect input from users via Discord modals. Each page holds up to 5 fields, and modals can span multiple pages for longer forms.

Use for:

  • Short text answers
  • Long descriptions
  • Multi-page form collection
Community

Application

Multi-page application posted to a review channel, with an optional Approve/Deny step that can grant a role.

Use for:

  • Staff applications
  • Whitelist or allowlist requests
  • Role applications with review

Create Ticket

Final action to create a ticket with collected information in a specific category.

Use for:

  • Creating tickets
  • Routing to categories
  • Setting priority

Condition

Branch based on user responses or variables with multiple condition operators.

Use for:

  • Conditional routing
  • Response-based logic
  • Value checking

Permission Check

Verify user has required Discord permissions with AND/OR logic.

Use for:

  • Admin-only flows
  • Staff verification
  • Role-based access

Logic Gate

Advanced AND/OR/NOT logic branching with multiple condition checks.

Use for:

  • Complex logic
  • Multiple conditions
  • Variable existence checks

Staff Presence

Branch on whether support staff are currently online so the flow can respond differently.

Use for:

  • Offline auto-replies
  • Route to on-call
  • Set wait expectations

Knowledgebase

Display knowledge base articles with pagination controls to reduce ticket volume.

Use for:

  • Self-service
  • FAQ display
  • Troubleshooting guides

Action nodes

Change a ticket, message a channel, tag a role, set a variable, or wait before continuing.

Send Message (Ticket)

Send a message into the current ticket channel, with variable interpolation support.

Use for:

  • Automated notifications
  • Status updates
  • Reminders

Send Message (Channel)

Send a message to any channel you choose, not just the ticket channel, with variable support.

Use for:

  • Post to a log channel
  • Notify a staff channel
  • Cross-post updates

Rename Ticket

Rename the ticket channel from a template, so its name reflects the latest context.

Use for:

  • Add the order number
  • Show the issue type
  • Mark a ticket escalated

DM User

Send a direct message to the ticket creator, the staff member who claimed it, or a specific user.

Use for:

  • Follow-up messages
  • Private instructions
  • Status nudges

Reopen Ticket

Reopen a closed ticket, with an optional reason, so the conversation can continue.

Use for:

  • Customer replies again
  • Reopen on new info
  • Undo an early close

Set Variable

Store a value in a flow variable for use in later nodes, with full variable interpolation.

Use for:

  • Save a computed value
  • Carry state between nodes
  • Flags
Community

Round-robin Assign

Assign the ticket to the next staff member in a role, spreading work evenly across the team.

Use for:

  • Even workload
  • Fair distribution
  • Auto-claim by rotation
Community

Request Rating

Ask the ticket creator to rate their support, using a five-star scale or a thumbs up/down.

Use for:

  • Collect CSAT
  • Post-close feedback
  • Measure quality

Add User

Add users to ticket channels automatically for team collaboration.

Use for:

  • Adding staff
  • Including users
  • Team collaboration

Remove User

Remove users from ticket channels for access control.

Use for:

  • Removing users
  • Access control
  • Temporary participants

Close Ticket

Automatically close tickets with optional reason and silent mode.

Use for:

  • Auto-close inactive
  • Close after resolution
  • Scheduled closing

Tag Role

Mention roles in tickets for notifications and escalation.

Use for:

  • Notify teams
  • Escalation
  • Role alerts

Claim Ticket

Automatically assign tickets to staff members for load balancing.

Use for:

  • Auto-assignment
  • Load balancing
  • Round-robin

Update Priority

Change a ticket's priority as part of a flow, for example when triage detects an urgent issue.

Use for:

  • Escalate urgent tickets
  • Set priority on triage
  • Re-prioritize on reply

Add Note

Add an internal staff note to the ticket, visible to your team but not to the ticket creator.

Use for:

  • Record context
  • Hand-off notes
  • Triage findings

Move Category

Move the ticket to a different category, updating its support roles and settings.

Use for:

  • Re-route to the right team
  • Escalation paths
  • Reclassify tickets

Generate Transcript

Save a transcript of the ticket conversation to the configured transcript channel.

Use for:

  • Archive on close
  • Compliance records
  • Supervisor review

Delete Ticket

Permanently delete the ticket channel. A transcript is saved first when auto-transcript is enabled.

Use for:

  • Remove spam tickets
  • Clear test tickets
  • Close-and-purge flows
Community

Wait / Delay

Pause an automation for a set time, up to your plan's max, before the next node runs. Automation only.

Use for:

  • Send a reminder later
  • Stagger follow-ups
  • Wait before auto-close
Pro

Wait for Reply

Pause until the ticket opener (or anyone you pick) replies, then branch on reply vs timeout. Automation only.

Use for:

  • Ask for missing details
  • Confirm before closing
  • Chase a stalled ticket
Pro

Wait for Reaction

Post a prompt and wait for a reaction, routing each emoji to its own branch, plus a timeout path. Automation only.

Use for:

  • Staff approval gates
  • Yes / no confirmations
  • Route by emoji choice

Letting a button run out

A button posted by an automation flow stays in the channel, so by default anyone can press it as often as they like and the flow runs again each time. Give a button a click limit to cap that. Once the limit is reached the button either greys out or disappears, whichever you pick, and the flow can swap the message text for something else at the same time.

The count is per posted message and shared by everyone, so a limit of 1 makes a claim-once button: the first person to press it takes it. Leave the limit empty and the button keeps working indefinitely.

This applies to automation flows. An interactive flow already replaces its message at every step, so its buttons cannot be pressed twice.

How long a flow can wait

Three nodes pause an automation flow: Wait / Delay parks it on a timer, while Wait for Reply and Wait for Reaction suspend it until someone acts. Wait / Delay is available on Community and Pro; Wait for Reply and Wait for Reaction are Pro only.

One maximum covers whichever of the three your plan can use, and it comes from your plan. Community servers can wait up to

7 days, and Pro raises that to 30 days.

That is long enough for the usual follow-up pattern: ask the member for the missing details, wait a couple of days, nudge them, then close if the ticket is still quiet.

Saving a flow whose wait exceeds the maximum is rejected, so the builder always shows what the flow will actually do.

Waits end with the ticket

If the ticket is closed or deleted while a flow is waiting, the wait is canceled and the run is marked abandoned. A paused flow never resumes into a ticket nobody can reply to.

When a flow loops back on itself

A step wired back to an earlier one can send a run round the same circle over and over. A run that takes 50 steps in a row without any of them doing anything is stopped and marked abandoned.

Bad wiring often only breaks one way of starting the flow. A form step waits for a person, so the flow finishes when someone drives it from a panel, and the same flow can circle when it carries on by itself after a ticket is created, because nothing left in the circle can act without input. So the pause is per trigger: five circling runs on one trigger within 24 hours pause that trigger for 24 hours, and every other way of starting the flow keeps running. Switching the whole flow off would take the working path down with the broken one.

The server owner gets one DM naming the flow and the way of starting it that paused, in plain words rather than internal names. There is nothing to switch back on, since the pause lifts itself when the 24 hours are up, so fix where the last step points before then or it will pause again.

Advanced nodes

Compose flows out of other flow blocks.

Call Flow

Trigger another flow with variable passing for reusable workflows.

Use for:

  • Flow reusability
  • Nested workflows
  • Shared sub-flows

Integration nodes

Call webhooks, external APIs, connected apps, or AI features.

Community

Send Webhook

Send data to external webhooks with custom headers and JSON body interpolation.

Use for:

  • External services
  • Trigger automations
  • Zapier/Make/n8n
Pro

API Request

Fetch data from external APIs with authentication and JSONPath extraction.

Use for:

  • User verification
  • Data lookup
  • External integration
Pro

AI Logic

AI-powered routing and response generation with knowledge base context.

Use for:

  • Intelligent routing
  • Automated responses
  • Sentiment analysis
Pro

AI Summarize

Generate a short summary of the ticket conversation so staff can catch up at a glance.

Use for:

  • Hand-off summaries
  • Quick context
  • Transcript recaps
Pro

AI Sentiment / Route

Read the tone of a message and branch the flow, for example sending frustrated users to a priority path.

Use for:

  • Detect frustration
  • Priority routing
  • Escalate by tone
Pro

AI Suggested Reply

Draft a reply for staff to review and send, based on the ticket and your knowledge base.

Use for:

  • Faster responses
  • Draft answers
  • Assist new staff
Pro

AI Auto Reply

Send an AI-written reply automatically, grounded in your knowledge base, to handle common questions.

Use for:

  • Answer FAQs
  • Reduce ticket load
  • First-line support
Pro

Translate

Translate a message between languages so your team can support users in any language.

Use for:

  • Cross-language support
  • Translate replies
  • Global teams

Plan gates

Webhook nodes require Community or higher. API and AI nodes require Pro.

Variables

Most text fields support double-brace variables, for example {{user.username}}.

Common variables:

Variable Meaning
{{user.id}} User ID
{{user.username}} Discord username
{{user.mention}} Mention for the user
{{guild.name}} Server name
{{ticket.number}} Ticket number, when a ticket exists
{{responses.fieldName}} Value collected from a modal or select menu
{{aiOutputs.name}} Output saved by an AI node

When a ticket exists, a few more describe what has happened in it so far:

Variable Meaning
{{ticket.lastMessage.mention}} Mention whoever spoke last
{{ticket.lastMessage.content}} The text of that message
{{ticket.lastStaffReply.mention}} Mention the staff member who replied most recently
{{ticket.staffReplied}} true once any staff member has replied
{{ticket.messageCount}} How many messages people have sent, not counting the bot

{{ticket.lastMessage}} skips the bot's own messages, and skips anonymous dashboard replies so they stay anonymous. If the newest message is one of those, it names the person who spoke before it. Each of these also has a .username and an .id form.

{{ticket.lastMessage.content}} is the text of that same message, and it is empty for an attachment-only reply. It is the right input for an AI node that should judge only what was just said. Leave an AI node's input blank and it reads the last ten messages instead, so it keeps matching on something raised earlier in the ticket.

The {{ticket.*}} variables are not limited to automation flows. A click-started flow gets them too whenever the click happened inside a ticket, which is what lets a workflow button reach the ticket's owner rather than the staff member who pressed it. They are empty in a flow that starts a new ticket, since none exists yet at that point.

Variable names are case-sensitive. If a placeholder appears unchanged in the final message, check that the variable exists earlier in the flow and that the spelling matches.

Seeing every variable while you debug

When a message comes out wrong and you are not sure what the flow actually collected, put {{all_variables}} in a step and run it. It prints every variable available at that point, one per line, with the full name on the left:

ticket.number = 42
ticket.status = OPEN
responses.Email = alice@example.com
responses.What happened? = Cannot log in after the update
api.login.user = alice
api.login.token = «redacted: looks like a credential»
custom._apiStatus = 200

That tells you the exact spelling to use, so a wrong guess like {{responses.email}} becomes an obvious {{responses.Email}}.

Three things to know:

  • Values that look like credentials are hidden. Anything under a name like token, password, api_key or authorization is replaced with a redaction marker, as is any value shaped like a key or token even under an innocent name, and any token quoted inside a longer value such as an error body. Ordinary identifiers are left readable, so the ids in an API response still tell you what came back. This matters most for API Request steps, which can save a whole response body.
  • It stays empty inside Send Webhook and API Request steps, so a token left in a flow by accident cannot send your run's data to an outside service.
  • The output is capped in length and long values are shortened, so a large run will not overflow the message.

Take it out when you are done

The dump is meant for a private or staff-only step while you are working on a flow. Left in a message the ticket opener can see, it shows them form answers and internal values they have no reason to read.

Import, export, and templates

Use Templates to start from common flow shapes such as ask-questions-first, route-by-topic, tag-staff, save-transcript, or warn-then-close.

Use the flow card action menu to Export as JSON. Use Import on the Support Flows page to create a new flow from an exported file. Server-specific IDs are not included, so imported flows still need to be linked to this server's panels, categories, channels, and roles.

Limits by plan

LimitFreeCommunityPro
Active flows5UnlimitedUnlimited
Total flows10UnlimitedUnlimited
Webhook nodes010Unlimited
API request nodes00Unlimited
AI nodes00Unlimited
AI tokens / month005,000,000
Longest flow waitNot available7 days30 days

AI usage and limits

AI nodes require Pro. They share the server's monthly AI token budget, and the Plan & Billing page shows usage, limit, and reset date.

The reply nodes (AI Suggested Reply and AI Auto Reply) have an Include knowledge base switch that grounds the reply in published knowledge base articles and approved AI memory. It is on by default for new nodes, and a node saved without an explicit setting inherits the server-wide grounding default from AI Control. AI Auto Reply can post straight to the customer or run in draft mode, where staff review the reply with Send, Edit, and Discard buttons before anything reaches the customer. The AI Decision and AI Classify routing nodes have an opt-in Ground in knowledge + memory switch that adds the same retrieved context to their verdicts. See AI Assist for the reply modes in full.

If your server brings its own OpenAI-compatible provider key, AI runs on your provider account instead of the included platform budget. Plan limits for how many AI nodes a flow can use still apply.

Troubleshooting

Problem Check
Flow does not start It is active and linked to the panel, command, category, or rule that should trigger it.
Flow stops mid-run Every branch has a next node or an intentional end.
A trigger stopped firing on its own It is not looping on that trigger. Five circling runs pause that trigger for 24 hours, and the server owner is DMed once.
Variables show literally The variable name is spelled correctly and exists before it is used. Add {{all_variables}} to a step to see the real names.
A variable resolves to nothing It is set earlier in the run. {{all_variables}} shows what exists at that point and what it is called.
Webhook, API, or AI node is disabled The server plan includes that node type.
Modal does not appear Each modal page has at least one field and no more than five. Longer forms split across multiple pages.