Skip to content

Invite tracking

Who invited whom: three tracking modes, join, rejoin and leave logs, and an invite leaderboard.

Invite tracking records which invite each new member used and credits the member who created it. It runs in every server from the moment Epix joins; there is nothing to switch on. What you choose is how joins are worked out, and where, if anywhere, joins, returns and leaves are logged.

Where to configure it

  • The Invites page on the dashboard, with tabs for Leaderboard, Member lookup, Logs & messages and Tracking. Custom log messages are written here.
  • The /invites commands in Discord.

Commands

CommandWhat it doesWho can use it
/invites user [user]A member's total invites. Yours if you name nobody.Everyone
/invites info [user]Who invited them, with which code and when, and everyone they brought in, with returns marked.Everyone
/invites leaderboard [limit]The top inviters: 10 by default, up to 25.Everyone
/invites setlog channel [join] [leave] [rejoin]Sends the logs you choose to one text channel. Join and leave default to on; rejoin follows join.Administrator
/invites viewlogWhich logs are on, where they post, and the tracking mode.Administrator
/invites removelogTurns all three logs off. Custom messages are kept.Administrator
/invites mode modeChooses API, Hybrid or Mixed.Administrator
/invites mode mode:mixed
/invites setlog channel:#invite-log leave:false
/invites leaderboard limit:25

Tracking modes

Discord does not tell a bot which invite a member used, so Epix works it out in one of three ways. Every server starts on API, and a new mode applies from the next join.

ModeHow it worksTrade-off
API (default)Asks Discord who invited the member.Always right, but the answer arrives after the join, usually within a minute. A member Discord has still not reported after ten checks, 15 seconds apart, is logged with an unknown inviter.
HybridCompares every invite's use count before and after the join; the code that went up is the one that was used.Instant. When the comparison is not clear, for example two members joining through different invites at the same instant, the join is recorded with an unknown inviter and there is no second attempt.
Mixed (recommended)Hybrid first; anything it cannot answer falls back to API.Most joins resolve instantly, and the rest a little later through the API method.

Hybrid and Mixed need Manage Server, because that is what lets Epix read the server's invite list. When you switch, Epix reads the list straight away and tells you if it cannot. Until it can, Mixed falls back to API for every join and Hybrid records joins with an unknown inviter.

Some joins have nobody to credit: the vanity URL, Server Discovery, the Student Hub, member search, a bot, or an invite with no known creator. These are logged with their source and count towards no one.

How invites are counted

  • An inviter's total is the number of first-time joins credited to them.
  • A member who comes back is a rejoin. It is logged as one, with a running count of their returns, and it adds to nobody's total, even when they return through someone else's invite.
  • A member who leaves stays in their inviter's total. They are marked as left, and the dashboard shows how many of each inviter's members stayed and how many left.
  • A return is only recognized for someone Epix has credited to an inviter before. A member who first arrived through the vanity URL, or before Epix was added, counts as a first-time join the first time an invite is credited for them.

Join, rejoin and leave logs

There are three logs, each with its own channel and its own message. A log is on exactly when it has a channel; there is no separate switch.

LogPosted when
Member joinedSomeone joins through an invite for the first time. A join with nobody to credit posts a short line naming its source instead.
Member came backSomeone who had been here before joins again.
Member leftA member leaves. The log names whoever had invited them most recently.

/invites setlog sends the logs you choose to one channel. On the dashboard, each log can have its own channel and its own message: text up to 2,000 characters, up to 10 embeds, or both, with a live preview. Until you write one, the built-in message is used, in your server's language. The dashboard refuses a channel Epix cannot post in.

**{{user.username}}** joined using invite **{{inviteCode}}** from **{{inviter.username}}**. They now have **{{inviteCount}}** invites.
The built-in join message.
TokenBecomesLogs
{{user}}The member, as a mention. Add .username, .displayName, .id or .avatar for their username, their name in this server, their ID or their avatar URL.All three
{{inviter}}Who invited them, with the same five forms. In a leave log, whoever had invited them.All three
{{inviteCode}}The invite code usedAll three
{{inviteCount}}The inviter's invites, counting this oneJoin
{{rejoinCount}}How many times they have come backRejoin
{{memberCount}}Members in the server nowAll three
{{server}}The server's nameAll three

Mentions in a log never ping anyone. An avatar URL works as an embed image or thumbnail.

The dashboard

  • Leaderboard: the top inviters ten at a time, with how many of the members they brought in stayed and how many left. Select someone to see who they invited.
  • Member lookup: who invited a member, and everyone they brought in.
  • Recent numbers: joins in the last 7 and 30 days, returns in the last 30 days, members tracked, and how many of them left.
  • Logs & messages and Tracking: the logs and the mode, described above.

Permissions Epix needs

ForEpix needs
Hybrid and Mixed modesManage Server, to read the invite list
Each log channelView Channel and Send Messages, plus Embed Links if the message uses embeds

Invite tracking has no Premium-only features.

Troubleshooting

  • Joins show an unknown inviter: on Hybrid this happens whenever the comparison is unclear, so switch to Mixed. On Hybrid or Mixed, also check that Epix has Manage Server.
  • Join logs arrive late: on API the log waits for Discord's answer. Mixed resolves most joins instantly.
  • Nothing is logged: run /invites viewlog. A log with no channel is off.
  • A member's history is long: the dashboard's Member lookup is easier to read than /invites info.