Invite Tracking
Which invite each member used, a running total per inviter that subtracts leavers and fakes, per-code roles, and the inviter's name in your welcome message.
On this page
Discord never tells a bot which invite somebody used. Arclo works it out by holding every code's use count and re-reading them on each join to find the one that went up — which is why attribution is a system rather than a field.
The number
One formula, used by the invite card, the leaderboard image, the web table, the /invites command and the reward checks:
total = regular − left − fake + bonus- Regular counts every credited join, including the ones later marked fake — which is what makes a fake net to exactly zero rather than to minus one.
- Left is arrivals who have since left, and is subtracted only if you ask for it.
- Fake is an arrival that failed your rules — an account younger than your threshold, or a rejoin you chose not to count.
- Bonus is what you add by hand.
- Pending sits outside the sum: an arrival waiting to be validated.
Changing *subtract leavers* rewrites every total
It is baked into the stored number so the leaderboard can be ordered, so flipping it recalculates the whole server. That is intended — it is just not instant on a large one.
Setting it up
Switch it on
Essentials → Invite Tracking. Arclo needs Manage Server to read your invite list.
Decide what counts
Minimum account age for a real invite, whether rejoins count, and whether leavers are subtracted.
Pick a join channel
Optional — an announcement each time somebody arrives, saying who brought them.
Add rewards
A role at N invites. Roles reconcile, so somebody whose total drops loses the role again.
ArcloBOTToday at 14:32
Per-code roles and labels
Give a specific invite link a label and a role: anybody arriving through it gets that role automatically. This is how partner links, event links and campaign links are separated without asking anybody to pick a role afterwards.
The label and the code are available in your welcome message as {invite_label} and {invite_code}.
In the welcome message
{inviter}, {inviter_name} and {inviter_invites} are resolved before the greeting is sent, so “Welcome @newcomer, invited by @someone” arrives complete rather than being edited a second later. See Welcome & Goodbye.
Cards, boards and the web page
- The invite card and the leaderboard image are designed in the same studio as the level cards.
- The leaderboard has a public web page, and can live as a pinned message Arclo keeps up to date.
- Server Analytics reads the same join records for its growth, retention and join-source views.
Joins are recorded even with the system off
The switch governs crediting — counters, rewards and announcements — not recording. Otherwise growth and retention in Analytics would only work for servers that happened to use invite tracking.
Commands
/invites [member]EveryoneShows a member's invite card — their total and the breakdown behind it.
/inviter [member]EveryoneShows who invited a member, and which link they came in through.
/invites-leaderboard [timeframe]EveryoneShows the top 10 inviters with a link to the full web leaderboard.
/invite-codes [member]EveryoneLists a member's invite links and how many times each has been used.
/invited-list [member] [code]EveryoneLists who a member — or a specific invite link — brought into the server.
/invites-add <member> <amount> [type]AdministratorsAdds invites to a member by hand.
/invites-remove <member> <amount> [type]AdministratorsTakes invites away from a member by hand.
/invites-reset [member] [confirm]AdministratorsCannot be undoneClears one member's invites, or everyone's.
Limitations
- Vanity URLs cannot be attributed to a person — Discord reports the use but not an inviter.
- An invite whose uses ran out between two joins is ambiguous; Arclo handles the common case but perfect attribution is not possible from Discord's API.
- Arclo cannot see invites created before it joined until it has read the list once, which it does on startup.
Still stuck? Ask in the support server — somebody there has almost certainly configured this before.

