Overview
DASHBOARD GUIDE

Giveaways dashboard

Run fair, repeatable giveaways. Pick prizes, set duration and winner counts, lock down requirements, and let the bot draw winners with a verifiable seed. Reroll, cancel, or end early when you need to.

Path
DashboardEngagementGiveaways
Module
giveaways
Required permission
giveaways.view

Before you start

A few things to line up so the first giveaway runs cleanly.

  • The Giveaways module is enabled on the server.
  • You hold giveaways.view, plus giveaways.manage for create/edit/end actions.
  • A target announce channel exists with Send Messages and Embed Links for the bot.
  • Optional: a separate log channel where entry/winner events are recorded.
  • For role-restricted giveaways, the required role(s) already exist.

What you'll see

Five tabs along the top. Most of the daily work happens on the first one.

Giveaways
Entries
Analytics
Audit
Settings
Giveaways
Create new giveaways and act on running, scheduled, ended, or cancelled ones.
Entries
Pick a giveaway and inspect the entrant list — user, when they joined, and eligibility status.
Analytics
Totals over the last 7/30/90 days plus top hosts and key ratios.
Audit
Filterable log of every change made to a giveaway by who and when.
Settings
Server-wide defaults, channels and manager roles, limits, spam protection, throttling.

Giveaways tab

The active workspace. Includes a quick-create card and the table of giveaways.

The quick-create card

The card collapses by default. Expanding it gives you the most common fields up front \u2014 prize, winners, duration, eligibility \u2014 and the Create button opens the full modal.
PrizeText input

The prize text shown in the embed (max 240 chars).

Example: Steam $20 Gift Card

WinnersNumber

Number of distinct winners drawn. Bounded by the per-giveaway max in Settings.

Example: 3

DescriptionText input

Optional flavour text shown beneath the prize (max 1024 chars).

Duration / unitDuration

A number plus minutes/hours/days. Combined into milliseconds for the API.

Example: 48 hours

Image URLText input

Optional image to attach to the embed.

Requirements presetDropdown

None, Role required, No bots, Min account age, Min server tenure, or Custom.

Eligibility policyDropdown

Strict (block at entry), Advisory (warn but allow), Off.

Min account age (days)Number

Used by the matching preset; ignored otherwise.

Min server tenure (days)Number

Days a member must be in the server before they can enter.

Claim window / unitDuration

How long a winner has to react/DM-claim before forfeiting.

Example: 48 hours

DM fallbackDropdown

When DM is closed: post in channel, skip the winner, or retry later.

Public winner listToggle

Whether to show the winners' names publicly in the result message.

Private deliveryToggle

DM the winner privately instead of pinging in channel.

Embed colourColor

Pick from preset swatches \u2014 the chosen hex shows next to the swatches.

The full Create / Edit modal

Clicking Create on the quick card opens the full modal. It validates against live primitives and adds:
  • Searchable Host picker \u2014 attribute the giveaway to any server member.
  • Channel picker for the announce channel.
  • Multi-select for required and blocked roles when using Custom requirements.
  • Toggles for Require verified, Require booster, and Exclude bots.
  • An Announce toggle to skip posting if you only want a silent test.

The giveaway table

One row per giveaway with columns for Prize, Host, Channel, Ends in, Entries, Winners, Seed reveal, and State. State chips colour the row:
SCHEDULED
Will start at a future time. Edit and Cancel are available.
RUNNING
Currently accepting entries. Edit, End early, and Cancel are available.
ENDING
Drawing in progress \u2014 winners are being selected.
ENDED
Finished. Reroll is available to draw new winners.
CANCELLED
Cancelled by a manager \u2014 no winners drawn.
Provably fair seeds
The Seed reveal column shows the verifiable seed once a giveaway ends. Combine the seed commit (set at start) with the reveal to recompute the winner ordering off-platform.

Entries tab

Inspect who joined which giveaway. Layout is a three-column grid.

Pick a giveaway

The left column lists every giveaway from the current server, newest first. Click one to populate the entries table on the right.

The entries table

  • Username / display name and user ID.
  • Join time relative to giveaway start.
  • Eligibility status (eligible / advisory warning / blocked) when you ran with a non-OFF policy.
  • Whether the entry was kept or stripped during the draw (e.g. for failing a requirement).

Analytics tab

Trends and ratios across the last 7, 30, or 90 days.

Date range pills

Three buttons at the top \u2014 Last 7 days, Last 30 days, Last 90 days \u2014 swap the data set. The currently active range is highlighted.

KPI cards

  • Total giveaways in the range.
  • Active right now.
  • Entries (N days) \u2014 sum across all giveaways.
  • Winners (N days) \u2014 total winners drawn.

Charts and breakdowns

  • Line chart: entries over time across the range.
  • Top hosts: a bar list of which managers ran the most giveaways.
  • Activity card with average entries per giveaway, win rate, completion rate, and average winners per draw.

Audit tab

Every change to every giveaway, with a per-giveaway filter.

Filter and refresh

  • Use the dropdown to scope to a single giveaway, or leave it on All giveaways.
  • The Refresh button re-pulls the latest changes.
  • Pagination buttons sit beneath the table, paged 100 entries at a time.

Columns

When, prize, editor, a human-readable changes summary, and an optional reason left by the editor.

Settings tab

Server-wide defaults plus the safety knobs.

DefaultsChannels & rolesLimitsSpam protectionCard update throttling
SettingTypeDefaultDescription
Default requirements presetDropdownNONEPreset applied to new giveaways unless overridden.
Eligibility policyDropdownSTRICTHow violations are handled: STRICT, ADVISORY, OFF.
Default winnersNumber1Pre-fill for the winners field.
Default durationDuration24 hPre-fill for duration.
Default claim windowDuration48 hPre-fill for the claim window.
Default DM fallbackDropdownPOST_IN_CHANNELBehaviour when a DM cannot be delivered to a winner.
Default public winner listToggleOnWhether new giveaways announce winners publicly.
Default private deliveryToggleOffWhether new giveaways DM the prize details to winners.
Default embed colourColorNoneOptional swatch applied to new giveaways.
Announce channelChannelNoneDefault channel for new giveaways.
Log channelChannelNoneChannel where entry / winner events are mirrored.
Manager rolesMulti-selectEmptyRoles allowed to manage giveaways without server admin.
Max concurrent giveawaysNumber5Cap on simultaneously running giveaways.
Max winners per giveawayNumber20Hard ceiling on winner count.
Entrant soft capNumber10000Soft warning when a giveaway exceeds this entrant count.
Join cooldown (ms)Number2000Per-user cooldown between rapid entry presses.
Burst capNumber20Max joins allowed inside the burst window.
Burst window (ms)Number5000Window size for the burst cap.
Card update interval (ms)Number5000How often the giveaway embed re-renders entrant counts.
Min entry count deltaNumber5Skip embed updates that change the count by less than this.
Throttling protects the channel
The card-update throttle keeps Discord rate-limits in check on hot giveaways. Loosen it for slow-moving giveaways, tighten it for huge ones.

Common tasks

Three workflows to get you to a clean first run.

1

Schedule a 24-hour giveaway

Open DashboardGiveawaysGiveaways.

  • Click the Create giveaway card to expand the quick-create.
  • Set Prize and pick Winners = 1.
  • Set Duration = 24 and Unit = hours.
  • Pick a requirements preset (NO_BOTS is a safe default).
  • Click Create. The full modal opens \u2014 confirm the channel, host, and embed colour, then save.
2

End a giveaway early and pick winners

Open DashboardGiveawaysGiveaways.

  • Find the giveaway in RUNNING state. Click End on its row.
  • Confirm in the dialog. The state moves to ENDING while winners are drawn.
  • The row settles to ENDED. Click Reroll if you need a different winner pool.
  • Switch to Audit to confirm the action was logged with your name.
3

Restrict entries to verified members with a role

Open DashboardGiveawaysGiveaways.

  • Click Create giveaway. Pick Custom as the requirements preset.
  • In the modal, add the required role(s) under Custom requirements.
  • Toggle Require verified on.
  • Set Eligibility policy to STRICT so unverified members are rejected at entry.
  • Save the giveaway. Use the Entries tab to confirm the eligibility column reads correctly.

Troubleshooting

Most issues map to permissions, requirement presets, or throttling.

The giveaway message never appeared
The bot needs Send Messages, Embed Links, and (for buttons) Use Application Commands in the announce channel. Check the channel override matrix and re-run the create from the Audit tab if it failed mid-flight.
Winners are never DMed
The user has DMs closed for non-friends or has blocked the bot. The configured DM fallback on the giveaway decides what happens \u2014 set it to POST_IN_CHANNEL if you want a public ping instead, or RETRY_LATER to schedule a follow-up.
Entries are stuck at zero
Either the Eligibility policy is STRICT and your audience doesn't meet the requirements, or the Join cooldown / Burst cap in Settings are too tight. Loosen them for that test run, then re-run the giveaway.
The embed lags behind on big giveaways
Drop Min entry count delta in the throttling section so smaller jumps trigger an update, but raise Card update interval (ms) if Discord starts rate-limiting the bot in that channel.