Examples

Nineteen ready-made workflows to copy onto your canvas: routing, status follow-ups, closures, AI hand-offs, Discord alerts and more.

Every example below is a real workflow. Copy it, paste it on your canvas, fill in what belongs to your project, and it is ready to run. The empty canvas offers the same list: click Use template in the middle of a new workflow.

How to use an example

  1. Click Copy workflow on an example.
  2. Open Automations in the dashboard, then start a new workflow.
  3. Press Ctrl+V (Cmd+V on a Mac) on the empty canvas.
  4. Open the nodes marked as not configured and fill them in.
  5. Save the workflow. It turns on as soon as it is complete.

An example only ships what any project can use. A value that belongs to one project arrives empty: a team member, a Discord channel, a Tebex category, a form button, a tag or a webhook URL. The text around it is already written, so a Discord notification keeps its title and message while it waits for its channel. Until every node is filled in, the workflow saves as a draft and cannot be turned on.

Two requirements come from the nodes themselves:

  • Assign to a user needs the Team plan. On a lower plan, an example containing it opens the upgrade window instead of landing on the canvas.
  • Ask AI and Tag with AI need the AI assistant to be on for the project. While it is off, those actions are skipped and the rest of the workflow runs.

Messages are written in English. Edit them to your own voice, or turn on Translate for the customer on a chat message (Team plan).

Route tickets by package category

Send each ticket to the maintainer of its package category, whether the package is known at creation or linked later.

Trigger
Ticket creation
Every new ticket
Trigger
Package selected
Runs the flow when a package is linked to an existing ticket
If
Field condition
TrueFalse
Not configured yet
Action
Assign to a user
No user selected

Needs configuration: Field condition, Assign to a user

A rule on a category keeps working as the shop adds scripts, where a rule on packages would need updating each time. The two triggers cover both cases: the package is known when the ticket opens, or it gets linked later. The action uses Add to assignees, so a ticket about two scripts reaches both maintainers when you run one workflow per category.

Ask for the package, then route

Ask the customer which package a new ticket is about, assign it when they answer, and lower its priority when they do not know.

Trigger
Ticket creation
Every new ticket
Action
Ask for the package
Package selectedNone / other
Ask among every package
Action
Assign to a user
No user selected
Action
Post message
Package selected by the customer: {package.names}
Action
Set priority
Set priority to Low
Action
Post message
Thanks! Please tell us a bit more about your request, a team member will take a look.

Needs configuration: Assign to a user

The run waits for the customer's answer. When they name a package, the ticket goes to the member you pick and a system line records the choice. When they answer Other / not listed, the ticket drops to Low and the customer is asked for more detail.

Customer replied, back to the team

Move a ticket out of Awaiting customer as soon as the customer answers, and tell the assigned staff.

Trigger
On chat message
Runs the flow when a chat message is posted
If
Field condition
TrueFalse
Message author type is Customer
If
Field condition
TrueFalse
Current status is Awaiting Customer
Action
Set status
Set status to In Progress
Action
Discord notification
DM Assigned team members

A ticket stays in Awaiting customer after the customer answers, so it can sit unnoticed in a filtered list. This workflow moves it to In progress and sends a Discord DM to the assigned team members. A ticket with no assignee moves all the same, the DM just has nobody to reach.

Staff replied, awaiting customer

Move a ticket to Awaiting customer when a team member replies, so the list shows whose turn it is.

Trigger
On chat message
Runs the flow when a chat message is posted
If
Field condition
TrueFalse
Message author type is Team member
If
Field condition
TrueFalse
Current status is one of Open In Progress
Action
Set status
Set status to Awaiting Customer

The mirror of the previous example. Team member also matches the project owner, and never the assistant or a workflow, so an AI reply does not move the ticket, and neither does an internal note. Use both examples together and the status shows whose turn it is.

Soft close after Resolved

Warn the customer when a ticket is resolved, then close it after 3 days unless they reply.

Trigger
Status changed
Any status change
If
Field condition
TrueFalse
New status is Resolved
Action
Post message
This ticket was marked as resolved. It will close in 3 days unless you reply here.
Action
Schedule closure
Close ticket in 3 days, unless the customer replies

The customer gets a heads-up, then 3 days to answer. Cancel if the customer replies is checked: a reply cancels the closure and hands the ticket back as Open.

Follow up, then close silent tickets

Check in when a customer has not answered for 3 days, then close the ticket 3 days later unless they reply.

Trigger
No activity
No activity for 3 days
If
Field condition
TrueFalse
Last author is Team member
Action
Post message
Is your issue solved? Anything else we can help with?
Action
Schedule closure
Close ticket in 3 days, unless the customer replies

The No activity trigger is set to 3 days, and the condition keeps it to tickets where a team member spoke last, so a customer waiting for an answer is never chased. Team member does not include the assistant: a ticket the AI answered last gets no follow-up. The follow-up does not restart the silence clock. If the customer answers, the closure is cancelled and the ticket goes back to Open; if not, it closes 3 days later.

AI first, then hand off

Let the AI answer a new ticket, and assign a team member when it says a human will take over.

Trigger
Ticket creation
Every new ticket
Action
Ask AI
Standard AI reply
If
Field condition
TrueFalse
AI asked for a human is true
Action
Assign to a user
No user selected
Action
Discord notification
DM Assigned team members

Needs configuration: Assign to a user

The assistant answers the ticket as soon as it opens. When it tells the customer that a person will take over, the AI asked for a human field turns true: the ticket goes to the member you pick, who gets a Discord DM. With the automatic reply on, the customer still gets a single answer, because the auto-reply is not scheduled for a message Ask AI already answered.

First reply takes the ticket

Assign an unassigned ticket to the team member who answers it first.

Trigger
On chat message
Runs the flow when a chat message is posted
If
Field condition
TrueFalse
Message author type is Team member
If
Field condition
TrueFalse
Assignees is empty
Action
Assign to a user
Assign to whoever triggered this

Assign to a user targets Whoever triggered this, so there is nobody to pick. The check on Assignees is what makes it "first": once someone is assigned, later replies stop at the condition. An internal note does not take the ticket. This example is complete as soon as you paste it, but it still needs the Team plan.

Urgent Discord alert

Mark tickets opened from one form button as urgent and post them in a Discord channel.

Trigger
Ticket creation
Every new ticket
If
Field condition
TrueFalse
Not configured yet
Action
Set priority
Set priority to Urgent
Action
Discord notification
No channel selected

Needs configuration: Field condition, Discord notification

Pick the form button customers use for urgent requests, and the Discord channel to alert. The workflow sets the priority itself because portal tickets start at Medium: a condition testing for Urgent right after Ticket creation would only ever match tickets opened by your team.

Qualify with buttons

Ask the customer what they need with three buttons, and treat each answer its own way.

Trigger
Ticket creation
Every new ticket
Action
Post message
I found a bugI have a questionSomething else
What can we help you with?
Action
Set priority
Set priority to High
Action
Ask AI
Standard AI reply
Action
Post message
The customer needs a team member on this one.

Each button is an output of the message, and the run waits for the customer's click: a bug raises the priority, a question goes to the assistant, anything else leaves an internal note for the team. The question branch needs the AI assistant to be on. Only a package question holds the automatic reply back, so with the auto-reply on, the assistant can answer next to the buttons, then again if the customer picks the question.

Reopened ticket alert

Tell the assigned staff when a closed ticket comes back, and set its priority to High.

Trigger
Status changed
Any status change
If
Field condition
TrueFalse
Previous status is Closed
Action
Discord notification
DM Assigned team members
Action
Set priority
Set priority to High

The DM goes to the assigned team members only: the customer who reopened the ticket does not need to hear about it. A ticket with no assignee has nobody to notify, and the priority is set all the same. The action sets High whatever the ticket had, so a ticket that was Urgent comes back at High.

Sync status changes to your tools

Send every status change to your own endpoint, and leave an internal note when it refuses the call.

Trigger
Status changed
Any status change
Action
Call a webhook
No URL configured
If
Field condition
TrueFalse
Webhook succeeded is false
Action
Post message
The status sync was refused with status {webhook.status}.

Needs configuration: Call a webhook

Add your endpoint's URL and adapt the JSON body, which is already filled with the ticket number, the subject and both statuses. An endpoint that answers with an error still counts as reached, so the condition on Webhook succeeded can leave a note. An endpoint that cannot be reached at all fails the run, which then shows in the run history.

Welcome and triage

Greet the customers who open a ticket from one form button and set the priority of that request.

Trigger
Ticket creation
Every new ticket
If
Field condition
TrueFalse
Not configured yet
Action
Post message
Thanks for reaching out! A team member will get back to you shortly.
Action
Set priority
Set priority to Medium

Needs configuration: Field condition

Pick the form button this greeting is for. Add one workflow per button when each request type deserves its own message and priority.

Tag with AI, flag the rest

Let the AI tag new tickets, and leave a note on the ones none of your tags fits.

Trigger
Ticket creation
Every new ticket
Action
Tag with AI
No tag selected
If
Field condition
TrueFalse
Tags added is empty
Action
Post message
Not classified, please tag this ticket.

Needs configuration: Tag with AI

Pick the tags the assistant may use. It adds the ones that clearly apply, and an empty Tags added is what tells the workflow nothing fit, so a team member can tag the ticket by hand. It does not use your monthly AI responses, and each run only counts as an automation run. The note is also posted when the node is skipped: the AI is off for the project, or every tag you allowed is already on the ticket.

Escalate command

Add an /escalate command to the composer: it sets the priority to Urgent, logs why and warns the assigned staff.

Trigger
Command
/escalate
Action
Set priority
Set priority to Urgent
Action
Post message
Escalated: {trigger.command.args.reason}
Action
Discord notification
DM Assigned team members

Adds /escalate <reason> to the staff composer. The reason is required, and the note is posted under the name of the team member who ran the command. This is the one example a private workflow can hold, since it starts from a command. Command names are unique per project: if /escalate is already taken, saving the workflow is refused until you rename it on the trigger.

Guided install by framework

Ask which framework the customer runs on an install request, then let the AI give the matching steps.

Trigger
Ticket creation
Every new ticket
Trigger
Package selected
Runs the flow when a package is linked to an existing ticket
If
Field condition
TrueFalse
Not configured yet
If
Field condition
TrueFalse
Not configured yet
If
Field condition
TrueFalse
Not configured yet
Action
Post message
ESXQBCoreQboxOther
Which framework runs on your server?
Action
Add tag
No tag selected
Action
Add tag
No tag selected
Action
Add tag
No tag selected
Action
Add tag
No tag selected
Action
Set status
Set status to Required Action
Action
Discord notification
No channel selected
Action
Ask AI
The customer runs {choice.label}. Give the install steps of {ticket.package_names} for this framework.
If
Field condition
TrueFalse
AI asked for a human is true
Action
Set status
Set status to Required Action
Action
Discord notification
No channel selected
Action
Set status
Set status to Awaiting Customer

Needs configuration: Field condition, Add tag, Discord notification

Pick the form button customers use for install help, the Tebex category of your scripts, one tag per framework, and the Discord channel of both alerts. The two triggers cover a package known when the ticket opens and a package linked later. List the same four tags in the third condition: a ticket already carrying one stops there, which is what keeps the question from being asked twice. Each button adds its tag. ESX, QBCore and Qbox then meet on Ask AI, which reads the answer through {choice.label}. Other skips the assistant: the ticket moves to Required action and the channel is alerted. After Ask AI, when the assistant says a person should take over, the ticket moves to Required action and the channel is alerted; otherwise it moves to Awaiting customer. The AI assistant has to be on. Only the AI's own package question holds the automatic reply back, so with the auto-reply on, the assistant can answer next to the buttons, then again once the customer picks.

No customer left waiting

Alert the team when a customer has been waiting for 24 hours and raise the ticket to Urgent after 3 days. When the customer stopped answering, follow up then close it.

Trigger
No activity
No activity for 24 hours
If
Field condition
TrueFalse
Last author is Customer
If
Field condition
TrueFalse
Current status is one of Open In Progress Required Action
If
Field condition
TrueFalse
Current status is Awaiting Customer
Action
Post message
Is your issue solved? Without a reply, this ticket will close in 2 days.
If
Field condition
TrueFalse
Assignees is empty
Action
Discord notification
No channel selected
Action
Discord notification
DM Assigned team members
Trigger
No activity
No activity for 3 days
If
Field condition
TrueFalse
Last author is Customer
If
Field condition
TrueFalse
Current status is one of Open In Progress Required Action
If
Field condition
TrueFalse
Current status is Awaiting Customer
Action
Set status
Set status to Closed
Action
Set priority
Set priority to Urgent
Action
Discord notification
No channel selected

Needs configuration: Discord notification

Two chains in one workflow, one per No activity trigger, each firing once per silence. Last author is Customer and the status condition keep them to tickets waiting on your team. After 24 hours, a ticket with no assignee alerts the Discord channel you pick, and any other sends a DM to its assigned team members. After 3 days, the priority goes to Urgent and a second channel is alerted. Any message from your team or the assistant ends the silence and starts a new one, so a ticket answered in time never goes Urgent. When the customer is no longer the last author and the status is Awaiting customer, the same two delays follow up instead: after 24 hours the customer gets a reminder, and after 3 days the ticket moves straight to Closed. The reminder does not restart the silence, a customer reply does. Any other status is left alone, so a ticket your team is still working on stays open.

Answer pre-sale questions

Let the AI answer questions before a purchase, and hand them to a team member when it needs a human or the customer wants more.

Trigger
Ticket creation
Every new ticket
If
Field condition
TrueFalse
Not configured yet
Action
Add tag
No tag selected
Action
Ask for the package
Package selectedNone / other
Ask among every package
Action
Ask AI
This is a pre-sale question about {package.names}. Cover features, framework compatibility and requirements. Never promise anything missing from the docs.
If
Field condition
TrueFalse
AI asked for a human is true
Action
Post message
Yes, thanksI have another question
Did that answer your question?
Action
Send payment link
Payment link valid for 7 days
Action
Set priority
Set priority to High
Action
Assign to a user
No user selected
Action
Discord notification
DM Assigned team members

Needs configuration: Field condition, Add tag, Assign to a user

Pick the form button for questions before a purchase, the tag and the member who takes over. The customer picks a product, and the assistant answers about it. Yes, thanks sends a payment link for that product, and the ticket stays open. The ticket goes to High and reaches your member by Discord DM in three cases: the assistant says a person should take over, the customer has another question, or they answer Other / not listed. Send payment link needs the Plus plan, Assign to a user the Team plan, and the AI assistant has to be on. The package question does not hold the automatic reply back: with the auto-reply on, the assistant can answer next to it, then again once the customer picks.

Send feature requests to your roadmap

Let the AI spot feature requests, send them to your roadmap tool, thank the customer and close the ticket.

Trigger
Ticket creation
Every new ticket
Action
Tag with AI
No tag selected
If
Field condition
TrueFalse
Tags added is not empty
Action
Set priority
Set priority to Low
Action
Call a webhook
No URL configured
If
Field condition
TrueFalse
Webhook succeeded is true
Action
Post message
Thanks {customer.name}, your idea is now on our roadmap list. Reply here if you want to add anything.
Action
Schedule closure
Close ticket in 3 days, unless the customer replies
Action
Add tag
No tag selected
Action
Post message
The roadmap sync was refused with status {webhook.status}: copy this idea by hand.

Needs configuration: Tag with AI, Call a webhook, Add tag

Pick the tags the assistant may use, such as feature-request, and add your endpoint's URL. A ticket none of them fits stops at the first condition. The others drop to Low, and the JSON body, already filled with the ticket number, the subject, the packages and the tags, goes to your endpoint. When it accepts the call, the customer is thanked and the ticket closes in 3 days unless they reply. When it answers with an error, the ticket gets the tag you pick and an internal note, so the idea can be copied by hand. An endpoint that cannot be reached at all fails the run, which then shows in the run history.