Connect triggers, actions, conditions, and delays to automate your server without writing code.
Before you begin
- You need Manage Server, Administrator, server ownership, or a configured bot manager.
- You and Discortics need the permissions required by each action. Publishing a workflow does not grant additional permissions.
- Keep the Discortics role above roles and members it needs to manage. Managed roles and roles with dangerous permissions cannot be assigned by automations.
Create a workflow
Create an automation
- Open Dashboard → Automations.
- Select New workflow.
- Choose a trigger: Message command, Slash command, or Schedule.
- Open Add step and choose an action. New steps are named Step 1, Step 2, and so on. Select a step to configure or rename it, or use its copy and delete buttons on the workflow.
- Steps connect automatically. Select If true or If false on a condition to add to that branch. Actions stay beneath their branch; branches cannot merge or share steps. Use Step type above settings to change an action.
- Select Save draft, then Publish.
[Insert screenshot here]
The visual workflow editor on Dashboard → Automations
Saving a draft does not change the published version. Publish again when your changes are ready. Pause stops new runs and pending steps; it cannot recall an action already sent to Discord.
Manage workflows in Discord
Use /automations action:list to see workflow names, IDs, and enabled status. Use /automations action:enable workflow:<id> or /automations action:disable workflow:<id> to change a workflow's status.
Message commands also support ;automations list, ;automations enable <id>, and ;automations disable <id> with your server's configured prefix. Enabling restores the published version and rechecks your permissions and plan limits. Publish new workflows and draft changes from the dashboard.
Choose a trigger
| Trigger | Configuration |
|---|---|
| Message command | A unique name after your server's configured prefix, optional allowed roles and channels, and a per-member cooldown of at least three seconds. |
| Slash command | A unique name and one description, also shown on the workflow. Add typed arguments, or use optional input. |
| Schedule | A repeating interval in seconds, minutes, hours, or days. |
Built-in command names take priority. Bot and webhook messages do not start message workflows. Restrict commands to allowed channels and roles; leave roles empty to allow any role. The cooldown applies to each member separately.
Add up to ten Arguments to message or slash commands from the argument drawer and use them as {{variables.name}} in steps. Each argument is Text, Number, Member, or Channel mention; user arguments accept a mention, ID or exact username, and channel arguments accept a mention or ID; both resolve to IDs. Names must be unique lowercase identifiers. Message command arguments are Positional (read in order, with quoted values allowed and a final text argument taking the remaining words) or Flag arguments written as --name value anywhere in the command. Required positional arguments come first. Slash commands register each argument as a Discord option of the matching type.
Choose how often the workflow repeats. Missed schedule times are combined into one run rather than replayed in a burst.
Build the steps
- Send message: choose a channel and open Edit message. Use the message builder in the drawer for content, Embed V1, or Embed V2 with link buttons. Apply the message to return to the workflow. Mentions do not ping users or roles.
- Add Member Role / Remove Member Role: choose a role and member ID or event variable.
- Set Channel Name / Set Channel Topic / Set Channel Slowmode: choose the specific channel action. Channel changes have a shared ten-minute cooldown.
- Set Server Name / Set Server Icon / Set Server Banner: rename the server or use an HTTPS image URL for an icon or banner. Image fields accept variables, including an earlier Item from list result. Banners require Discord to enable banners for your server. Server changes have a shared six-hour cooldown.
- Create Channel / Delete Channel: create or permanently delete a text channel, voice channel, or category. Choose an optional parent category for text and voice channels.
- Edit Role: choose a role and set its name, color, or both to update. The color picker is always visible; leave it empty to keep the current color.
- Create Role: choose a name, optional color, and an optional role to place it below. Created roles start without permissions.
- Timeout Member: choose the member, duration, and optional reason.
- Condition: compare two values and choose a destination for each result.
- Set variable: store a value for later steps. Insert it from the variable picker under the step's name.
- Item from list: choose Random item or In order and enter up to ten values. Ordered selection persists between runs and starts again from the first item after the last. Both the selected value and its position are available to later steps.
- Wait: pause for one second to one day, then continue. A run finishes after its last step.
When you save, any step or trigger setting that needs attention shows a warning icon on the workflow and next to the field.
Use the search in Add step to find actions by name, description, or group. Select Duplicate step to reuse a step’s configuration. Each branch continues independently and cannot reconnect to another branch. Every step must be reachable from First step. At most two condition levels may appear on any path. Loops are not supported.
Command replies
Message and slash commands show one public reply. If the workflow only sends a message to the channel where the command was used, that message becomes the reply immediately, without a Running... message. When more steps follow, messages are sent separately and the original reply stays dedicated to progress. Otherwise, the reply shows the loading emoji and Running..., then updates to the current activity, such as Adding role... or Sending message.... A message targeting another channel still goes to that channel.
Use Activity text in a step's settings to customize its progress text, including variables. Leave it empty to use the default. This field is available for message and slash commands. Progress has priority on the original reply throughout a multi-step workflow; sent messages remain separate.
Each saved automation has its own URL. You can refresh it or use browser Back and Forward to return to the editor; unsaved changes still prompt before leaving.
Use variables
A Member argument named user1 provides {{variables.user1.id}}, {{variables.user1.mention}}, {{variables.user1.username}}, {{variables.user1.globalName}}, {{variables.user1.avatarURL}}, and the Welcome-style .createdAt, .createdAgo, .joinedAt and .joinedAgo timestamps. Channel arguments provide .id, .mention and .name. The triggering member provides the same user fields under {{event.user.id}}, {{event.user.mention}}, {{event.user.username}}, and the other user properties above. The variable picker lists these event fields and the properties for each argument type. The plain {{variables.user1}} value remains its ID. User arguments must resolve to current members of this server, including IDs, mentions and slash-command selections. External users are rejected. Automations send messages only to channels in this server; direct messages are not supported. Optional arguments left empty render as empty text; mentions do not enable pings.
Created channels and roles are available in later resource pickers. A referenced create step must run on every path to its consumer. Each variable in the inserter includes a description of its source.
Use the controls inside a text field to insert variables, emoji, channel mentions, or role mentions at the cursor. Each field enforces its character limit. Event values depend on the trigger:
| Variable | Value |
|---|---|
{{event.userId}} | Member who triggered the workflow. |
{{event.channelId}} | Channel where the command was used. |
{{event.content}} | Message command content. |
{{event.args}} | Message command arguments or slash-command input. |
{{guild.id}} | Current server ID. |
{{variables.name}} | A command argument. |
{{steps.stepId.field}} | A field returned by an earlier step. |
Schedules have no triggering member or channel. Use explicit resource IDs for those workflows. Values are substituted as text; custom JavaScript and arbitrary network requests are not supported.
Change your server icon every six hours
- Choose Schedule, set Run every to
6, and select Hours. - Add Item from list, name the step
Icon, and choose In order or Random item. - Enter the HTTPS image URLs, one value per item.
- Add Set Server Icon and insert the Icon step's stored value into Server icon URL.
- Save and publish. Ordered selection follows the list and wraps back to the first item.
Server image fields use URLs and variables rather than uploads. Images must be HTTPS PNG or JPEG, up to 2 MB each. Downloads reject private-network destinations and revalidate redirects. Server edits share a six-hour cooldown. List selection is saved for the run, so a retry does not choose a different item. Changing the list or its mode resets its order.
Run history
Open Run history, filter by workflow, and select a run to see each completed step, its output, and any error. Active runs refresh while their details are open. Cancel run stops remaining steps.
Run now executes the published version and affects your server. It provides your member ID, but no originating message or channel; configure a channel explicitly before using it. Workflows with required arguments must be started through their message or slash command, where you can provide those values.
Uncertain means an action may have reached Discord before its result could be recorded. Check Discord before starting another run. Failed and uncertain runs are not automatically replayed.
Limits
| Resource | Free | Prime | Custom |
|---|---|---|---|
| Custom commands | 10 | 25 | 50 |
| Automations | 3 | 10 | 25 |
| Steps per workflow | 5 | 10 | 10 |
| Active runs | 2 | 5 | 10 |
| Runs per minute | 5 | 15 | 30 |
| Minimum schedule interval | 1 hour | 30 minutes | 10 minutes |
| Publications per UTC day | 10 | 30 | 60 |
| Completed run history | 7 days | 30 days | 90 days |
Custom commands use a message or slash command trigger. Automations use a schedule trigger. Pause a published workflow before switching it between the two.
Publication attempts count even when publication fails. Limits are shared across the server's workflows. A run may last up to seven days, including waits. Discord permissions and rate limits still apply; limits are not a promise that every Discord action can run at that frequency.
Retention is set when a run starts and measured from its completion. A plan change affects new runs. Existing history remains available until its original expiry. Saved workflows remain after a downgrade. Publishing, starting runs, and already-active runs are checked against the current plan. Active runs may stop if their workflow, step count, schedule cadence, or concurrency no longer fits. History keeps its original expiry.
Troubleshooting
A workflow will not publish. Check the error, connect every step, and use a command name that does not conflict with a built-in command. Check your plan's workflow limit.
A role or moderation step failed. Check your current permissions, the bot's permissions, and both role positions. A workflow stops if its publisher no longer has the required authority.
The server icon did not change. Check the six-hour server-edit cooldown and the image URL, size, and format.
A delayed workflow stopped. Check whether it was paused, deleted, cancelled, exceeded seven days, or the server changed its serving bot.