Skip to main content
A member is active today, their streak goes up. They miss a day, it resets — unless a freeze saves it.
Free on every tier, apart from milestone role rewards (which scale by tier) and custom emoji.
Streaks must be enabled in Server Setup. This page stays editable while it is off, with only a banner as warning.

What counts as an active day

Four options:

Send messages

Spend time in voice

Messages or voice

Messages and voice

Then the thresholds: minimum messages per day (1–100) and minimum voice minutes per day (1–1440), plus what makes a single message count at all — minimum words per message (1–50), measured in words or characters.
Measure in characters for Chinese, Japanese, Thai and other languages that do not put spaces between words. Measured in words, those messages score 1 and almost nothing qualifies.
The page shows a plain-language sentence summarising exactly what a member must do, quoting these thresholds back to you — read it after every change, it is the fastest way to catch a mistake.

Qualification rules

Who is eligible, where activity counts, and how much slack members get around midnight. These sit in full view on the Activity tab.
The grace window defaults to 30 minutes, so late-night activity just after midnight already counts for the previous day. Raise it toward the 240-minute maximum if your community is most active in the small hours.

Anti-farm

Two controls, on the same Activity tab, that stop a member inflating a streak instead of earning it.
These are Streaks’ own rules. Battle Pass has its own separate anti-farm settings, and changing one never affects the other.
Bot and webhook messages never count toward a streak, and that is not configurable — a streak measures human presence.

Milestones and role rewards

Two independent lists: Milestone days is the complete set of streak lengths that get celebrated — not an addition to a hidden built-in list. It merely starts out as 3, 7, 14, 30, 60, 100 and 365, and every one of those is editable: remove 3 and reaching 3 days is no longer announced. Those seven have their own written congratulation; any other day you add uses a generic one. Milestone role rewards grant an actual Discord role at a given day count.
The two lists are independent. A reward on a day that is not one of your milestone days is still granted — the member simply gets the role with no announcement. The page flags those rows so it is never a surprise.
Milestone role rewards: 1 on Starter, 5 on Basic, 15 on Max, unlimited on Black.
Two related switches: remove reward roles when a streak breaks, and keep only the highest milestone role.
The page limits you to 25 custom milestones, though the server accepts up to 50. A milestone day is 1–3,650, and the role-reward list is capped at 100 rows whatever your tier. Rewards over your tier’s cap are marked “Disabled · over tier limit” rather than deleted, and return when you upgrade.
Vetox refuses to grant any reward role holding Administrator, Manage Server or Manage Roles — a safety measure that cannot be overridden.

Freezes

A freeze spends itself automatically to bridge a missed day, so a streak survives one day off per freeze. Freezes are configured in their own section of the Rewards tab, and they come from two places. Starting freezes (0–10) are credited once, the first time a member’s streak is created. This is an ordinary setting you control, and it is free on every tier. Monthly top-ups are the premium part, added automatically on the 1st of each month: A member can bank at most twice their tier’s monthly top-up, or your starting-freeze allowance if that is higher — whichever is greater. Starter has no monthly top-up at all, so there the ceiling is simply your starting freezes.
Downgrading clamps every member’s unused freezes to the new tier’s ceiling, and anything stockpiled above it is gone. Dropping to Starter is not a wipe: members keep up to your starting-freeze allowance, exactly as a server that had always been on Starter would give them.

Notifications

  • DM streak reminders — a nudge before their day runs out
  • DM when a streak is lost
  • Show streak in nickname — requires Manage Nicknames
  • Milestone announcement channel
Reminders are DM-only. The channel setting is for milestone announcements — it cannot be used to post reminders publicly. Members with DMs closed get no reminder.
Members can opt out of reminders themselves from the DM.

Appearance

Requires Basic.
Replace the default flame with your own emoji, with optional distinct emoji from 100 days and from one year. The longest qualifying one wins: a member on 400 days shows the one-year emoji, on 150 days the 100-day one, below that your base emoji. Leave a tier blank and it falls through to the one beneath it.
Downgrading to Starter clears your custom emoji permanently. Unlike milestone rewards, they are not kept and restored — note them down before downgrading.

Leaderboard

Rank by current streak or longest ever. Members whose value on the ranked dimension is zero are not listed — a broken or reset streak is not a ranking.

Reset all streaks

In the red Danger Zone at the bottom of the Leaderboard tab, beside the data it affects. It sets every member’s current and longest streak back to zero and clears the milestones they had already been awarded. What it deliberately leaves alone:
  • Opt-out preferences — members who opted out stay opted out
  • Freeze inventory — unused freezes are kept
  • Discord roles — milestone roles already granted stay on members; remove them from role settings if you want them gone
It also clears today’s activity markers, so a member who had already counted today can start a fresh streak the same day instead of waiting until tomorrow.
Immediate and irreversible once confirmed. It does not go through the save bar, and there is no preview of how many members it affects.

Troubleshooting

Check the module is on in Server Setup, the member’s channel and roles are not excluded, and the thresholds are actually achievable — the plain-language sentence on the Activity tab is the quickest way to verify.
Their messages are probably below the minimum word count, or they are active after midnight with no grace window. Both are common on servers with short, chatty messages.
Vetox needs Manage Nicknames, and it can never rename the server owner — that is a Discord restriction.
Every enabled row must have a role selected. Rows sharing the same day are merged, keeping the enabled one.
It must be a plain pictographic emoji, or one custom emoji in <:name:id> form.The check is stricter than “a single emoji” suggests: anything carrying a variation selector, a skin-tone modifier or regional indicators is rejected even though it looks like one emoji — ❤️, ☺️, 👍🏽, 🏳️‍🌈 and 🇺🇸 all fail. Pick an emoji without those, such as 🔥 or .A custom emoji is also not checked against the servers Vetox is in. One from elsewhere saves without complaint and then renders as raw text.

Battle Pass

A separate engagement feature: seasonal quests and reward tiers. It runs independently of Streaks — neither one requires or affects the other.