Server Configuration

Workflows

Chain a trigger to the things greed should do about it, with conditions and branches.

Overview

A workflow connects something that happens in your server to the things greed should do about it. You build it on a canvas: a trigger on the left, steps to the right, wires between them.

Crucially, a workflow does not replace your existing setup. It runs the features you have already configured — your welcome message, your autoroles, your logs — so there is one place to edit each of them and no chance of two systems fighting over the same job.

If a workflow only does what a feature already does on its own, greed tells you so and suggests deleting it. A workflow earns its place by doing something the feature cannot: branching on a condition, or suppressing a default.

The four kinds of step

A worked example

The problem: you want a welcome message, but not for brand new accounts that are probably throwaways.

Without workflows you would have to turn Welcome off entirely. With one:

When a member joins

Pick the member joins trigger.

Only if their account is older than 7 days

Add an account age condition and set the threshold.

YES — send your welcome and apply autorole

Drag from the green YES output to both steps. They use the message and roles you already configured.

NO — skip the welcome, give them Unverified instead

Drag from the red NO output to a skip the welcome message step and an apply one autorole entry step set to your Unverified role.

Your Welcome configuration stays exactly as it is. The workflow only decides when it applies.

Variables

Steps that render a message reuse the feature they belong to, so they carry that feature's own variables — a welcome step renders your Welcome message with the same {user.mention}, {guild.name} and friends you already use there. There is no second vocabulary to learn.

Invite tracking adds {inviter.mention}, {inviter.invites} and {invite.code} to your welcome and goodbye messages whenever it is on — see Invite Tracking. Those work with or without a workflow.

On top of those, a message rendered by a workflow gets a small {workflow.*} set describing the run itself:

{workflow.trigger} {workflow.invite.code} {workflow.invite.url} {workflow.inviter.mention} {workflow.inviter.id} {workflow.account_age_days}

Anything that does not apply to the current run renders as an empty string rather than leaving the raw name in your message.

Times and timezones

Any step that involves a clock — time of day and on a schedule — carries its own timezone picker, defaulting to UTC.

greed stores the moment in UTC and converts for display and evaluation, so daylight saving is handled for you: a workflow set to run at 09:00 in Europe/London runs at 09:00 local in both winter and summer, without you touching it twice a year.

The zone lives on the step, not the server, so a workflow can mix them — quiet hours in your community's timezone and a staff digest in your own.

Limits

FreeServer Premium
Workflows225
Steps per workflow540
Conditions per workflow110
Runs per day50025,000
Suppression stepsyes

Saving

Workflows are built on the website only — a graph is not something a chat command can express, so there is no ,workflow equivalent.

The name sits at the top of the builder; click it to rename. Changes to the canvas, the name and the enabled toggle are all held until you press Save changes, which turns to Saved once there is nothing outstanding. Leaving without saving discards the edits, and a new workflow always starts disabled so a half-built one cannot fire.

When a step breaks

Servers change. A channel gets deleted, a role gets moved above greed, permissions get revoked — and a workflow that keeps trying would fill your audit log with failures.

Instead, greed checks every reference before it runs a step. If the thing a step points at is gone or unusable, that workflow is switched off and the reason is recorded, rather than retrying forever. Fix the reference and switch it back on.

A disabled workflow stays exactly as you built it. Nothing is deleted, so you never lose work because a channel was renamed.