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

  1. Switch it on

    Essentials → Invite Tracking. Arclo needs Manage Server to read your invite list.

  2. Decide what counts

    Minimum account age for a real invite, whether rejoins count, and whether leavers are subtracted.

  3. Pick a join channel

    Optional — an announcement each time somebody arrives, saying who brought them.

  4. Add rewards

    A role at N invites. Roles reconcile, so somebody whose total drops loses the role again.

#welcome

ArcloBOTToday at 14:32

Welcome @newcomer — invited by @mira, who now has 34 invites.
The inviter is resolved before the greeting is sent, not edited in afterwards.

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]
    Everyone

    Shows a member's invite card — their total and the breakdown behind it.

  • /inviter [member]
    Everyone

    Shows who invited a member, and which link they came in through.

  • /invites-leaderboard [timeframe]
    Everyone

    Shows the top 10 inviters with a link to the full web leaderboard.

  • /invite-codes [member]
    Everyone

    Lists a member's invite links and how many times each has been used.

  • /invited-list [member] [code]
    Everyone

    Lists who a member — or a specific invite link — brought into the server.

  • /invites-add <member> <amount> [type]
    Administrators

    Adds invites to a member by hand.

  • /invites-remove <member> <amount> [type]
    Administrators

    Takes invites away from a member by hand.

  • /invites-reset [member] [confirm]
    AdministratorsCannot be undone

    Clears 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.