Discord and the dashboard
Scheduling spans two surfaces. Staff create and manage events from the web dashboard, while members interact with the published event right inside Discord. There are no scheduling slash commands: everything members do happens through buttons and menus on the event message.
Open the dashboard for your server and choose Scheduling. Events lists what is coming up, with a List and a Month view; Templates, Attendance, Raid-Helper imports and Scheduling Settings each have their own page.
- In Discord
- Published events post as a rich message with signup buttons and role menus. Members pick a role, set a status (tentative, late, absent), and add a note or toggle DM notifications. They never need the dashboard.
- On the dashboard
- Staff build events in the Event Workbench, configure signup roles and reminders, generate recurring occurrences, manage rosters, track attendance, and share a public calendar link.
Scheduling works on the Free plan within limits; Pro lifts them. The event message refreshes automatically as signups change, and events close themselves once they have started.
The Event Workbench
The Event Workbench is where you create and edit a single event. New events start as a draft, so you can prepare everything before publishing to Discord. The workbench polls the live event and shows an Unsaved badge when you have pending edits.
Header actions let you Save, Publish (or Update Discord once published), Refresh Discord, Lock, Reopen, Cancel, and apply an event profile. Profiles are reusable presets of event defaults such as title, channels, color, image, and role pings.
Workbench tabs
- Setup
- the event details (title, time, description, channel, color and image), how it posts to Discord, the signup roles and rules, the series it repeats in, and diagnostics.
- Roster
- who has signed up, by role and status, with each signup's readiness against their latest gear check, and the final roster you build, version and publish to Discord from them.
- Announcements
- send announcements now, save scheduled reminders that use the event's routing, and review delivery history.
- History
- readable event changes, staff actions, and delivery records.
Key event fields
- Title
- the event name shown on Discord and the calendar.
- Description
- the body of the event embed.
- Start time
- when the event begins; signups close and the event auto-closes at start.
- Timezone
- the timezone the start time is interpreted in and shown to members.
- Duration
- the length in minutes (default 120), used to compute the end time.
- Signup deadline
- an optional cutoff after which signup changes are closed, even before the start.
- Embed color
- the accent color of the Discord embed (defaults to Discord blurple).
- Embed image
- an image URL or a small uploaded image (PNG, JPEG, GIF, or WebP).
- Event channel
- the text, announcement, forum, or thread channel the event message is posted to.
- Voice channel
- an optional voice channel linked to the event and the native Discord scheduled event.
Events move through draft, open, locked, closed, cancelled, and archived states. Once an event's start time passes, it auto-closes and signup changes stop. Cancelling lets you remove the Discord message, post a notice, and DM affected members by status.
Signups and role limits
Every event has one or more signup roles. A role can be a free-form slot (for example, Healers) or mapped to a GearCheck build so the bot can report whether each member's verified gear is ready for that role.
Signup roles, their icons, and their limits are defined in a scheduling template and applied to the event. The template's Roles tab is where you add roles, map them to builds, and set per-role limits.
Per-role settings
- Display name
- the role label shown in the signup menu, with an optional short name and icon for the embed.
- Icon
- an emoji shown next to members signed up for the role.
- Capacity
- the maximum number of active signups for the role; extra signups can be benched automatically when the role is full.
- Minimum
- the target headcount used to flag under-filled roles in roster and readiness views.
- Build mapping
- links the role to a GearCheck pack and build so readiness can be computed for it.
- Ready threshold
- the score a member's GearCheck must meet to count as ready for the role.
- Freshness window
- how many days a gear check stays current before it is treated as stale.
- Discord role rule
- optionally restricts a signup role to members who hold specific Discord roles, either benching or blocking others.
At the event level you can set allowed and banned Discord roles. Banned roles can be benched automatically, while allowed roles restrict who may sign up at all. These Discord-role rules are the enforcement layer; GearCheck readiness itself is used for reporting, not to block signups.
When the role is full, overflow signups go to the bench if bench overflow is on. Members can also open Signup options on the event message to add a note for staff or turn DM notifications off.
Reminders
Each event can have multiple reminders that fire automatically before it starts. Reminders are managed in the workbench's Announcements tab, where you can create, edit, delete, and reorder them, or send an announcement immediately.
A reminder can post to a channel, DM members by their signup status, or both. Each reminder is configured independently:
- Name
- a label so you can tell reminders apart.
- Minutes before
- how long before the start time the reminder is sent.
- Destinations
- any combination of the event channel and DMs to members in the signed, bench, tentative, late, or absent groups.
- Message body
- the reminder text, with a live preview.
- Tokens
- insert placeholders such as the event title, date, time, countdown, channel, and signup counts that fill in automatically.
- Attach roster
- optionally appends the latest roster to the reminder.
Every send is recorded in the delivery history with a status, and failed or partial deliveries can be retried. Members who turn off DM notifications on their signup are skipped for direct messages.
Recurring events
Turn a single event into a repeating series from the workbench's Setup tab. Recurrence settings define the cadence and how far ahead occurrences are created.
The schedule supports a few patterns:
- Interval and unit
- repeat every N days, weeks, or months.
- Days in series
- for weekly schedules, pick the weekdays the event lands on.
- Generate count
- how many upcoming occurrences to create at once (up to 52).
- End after date
- an optional last date the series should not pass.
- Skip dates
- specific dates to leave out of the series, such as holidays.
- Auto-publish
- automatically post each occurrence to Discord a set lead time before it starts.
Use Generate to create the upcoming occurrences as drafts copied from the source event. Each draft starts empty (no signups) and links back to the workbench so you can fine-tune it. If auto-publish is on, due occurrences are published automatically by the bot's maintenance loop using your chosen lead time.
After generating, you can apply the source event's details to the whole series at once, or cancel the entire series, optionally removing each event's Discord message.
Posting to Discord's Events section
Beyond the signup message, GearCheck can also create a native Discord scheduled event so the activity appears in your server's Events tab and channel banner, giving members an Interested button and start notifications for free.
This is controlled per event by the Create a Discord event on publish toggle in the workbench's Setup tab. The native event is created and kept in sync whenever you publish or refresh, links back to the signup message, and is cancelled when the event is cancelled or archived.
The toggle defaults on for new events and off for older events until staff opt in. Creating native events requires the bot to have the Manage Events permission; if it is missing, the signup message still posts and a warning is logged.
The public calendar
The Events page's Month view shows a month grid of your events, with the same filters as the list. Scheduling Settings holds the public calendar feed: share a view-only calendar that anyone can open without logging in.
Generate a share token to enable the public calendar, and make a new address or turn it off at any time. The same token powers both public views:
- Agenda list
- upcoming events grouped by day, each linking to its Discord signup message.
- Month grid
- a familiar month-at-a-glance grid you can page through, with each day's events linking to signup.
The same token also exposes an .ics feed you can subscribe to in Google Calendar, Apple Calendar, or Outlook. Both public pages show your server's icon and name in the header and cross-link to each other.
Public views are read-only and intentionally minimal: they show only the title, time, activity, and difficulty, plus a link to sign up. Draft, cancelled, and archived events are never exposed, and leader IDs, notes, and signup names are omitted.
Templates
A scheduling template is a reusable definition of an activity's signup layout: its roles, icons, build mappings, and per-role limits. Templates are the source of truth for how signups look, so applying one to an event sets up its roles in a single step.
Build templates in the Template Workbench. The Roles tab can auto-generate roles from your GearCheck builds, and the Preview tab shows how the event embed will look. The free tier allows one template; additional templates require a Pro plan.
Templates are portable. Export one as a code or JSON, import another guild's template, or share to the template marketplace and install community templates by code.
Attendance
The Attendance tab builds a matrix of members against events so you can see who shows up over time. Filter by date range, activity, difficulty, channel, event status, signup role, and outcome, then export the matrix as CSV.
Each cell shows an outcome such as present, late, absent, no-show, signed, tentative, withdrawn, or bench. Outcomes are recorded by editing signups in the Event Workbench; the Attendance tab itself is read-only analytics with attendance-rate rollups.
Rosters and readiness
A roster turns your signups into a concrete lineup of who fills which slot. Generate a roster from the current signups, save versions, mark one final, and publish or post it to Discord. Published rosters have their own read-only detail page with a copy-to-Markdown option.
When a role is mapped to a build, the workbench's Roster tab compares each signed-up member against their most recent gear check and assigns a readiness state:
Readiness states
- Ready
- a current gear check meets the role's threshold.
- Partial
- the member has a gear check but it falls below the threshold.
- Stale
- the gear check is older than the role's freshness window.
- Missing
- no completed GearCheck matched the role.
- Not ready
- the latest gear check did not pass.
- Unmapped
- the role is not linked to a build, so readiness cannot be computed.
- Exception
- staff have waived the readiness requirement for that member.
Flex coverage highlights under-filled roles and suggests candidates from your signups who could move to fill the gap, with a one-click Move here action that reassigns them.
When someone is ready in practice but their GearCheck does not reflect it, approve a readiness exception with a reason so they count as ready, then clear it later if needed. Readiness reporting is optional: events set to signup-only mode skip it entirely.
RaidHelper import
If your server already runs RaidHelper, GearCheck can import a RaidHelper event as a read-only snapshot from the Scheduling tab. The import maps RaidHelper's roles and signups into a GearCheck event you can view alongside your own.
Import in snapshot-only mode to just mirror the event, or in snapshot-plus-readiness mode to map its roles to GearCheck builds and run a readiness report on the imported signups. You can refresh the snapshot later to pull the latest RaidHelper data while keeping your mappings.
RaidHelper snapshots are read-only in GearCheck: you cannot edit their signups, publish, or cancel them here. RaidHelper-specific slash commands are covered in the command reference.