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
- Click Copy workflow on an example.
- Open Automations in the dashboard, then start a new workflow.
- Press
Ctrl+V(Cmd+Von a Mac) on the empty canvas. - Open the nodes marked as not configured and fill them in.
- 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.