tellmetric
Guide

Discord invite tracking: which link, ad or post brought each member

"Track who joined through what invite" is one of the oldest requests on Discord's feedback board, and it is still open. Discord counts how often each invite was used but never tells you which member used which. This guide explains what the usual workarounds get right and wrong, and how to attribute members exactly when the invite comes from an ad.

What Discord gives you

Every invite link in a server has a use counter, visible under Server Settings → Invites and readable by a bot through the API. Larger community servers also get Server Insights, with joins over time and where members came from in broad groups. What Discord does not provide, in the app or in the API, is the invite behind a particular member: when someone joins, the server learns that a member arrived, not through which link.

So "which invite link did this member use?" cannot be answered from Discord's data directly. Everything below is a way around that gap.

How invite-tracker bots work, and where they fail

Invite-tracker bots keep a copy of every invite's use count. When a member joins, the bot fetches the counts again and looks for the one that went up by one; that invite is credited with the join. It works most of the time and it is the basis of every "invite leaderboard" bot.

  • Simultaneous joins. Two people joining through different links within the same moment produce two counters that moved; the bot has to guess who used which.
  • Vanity and single-use links. A single-use invite disappears when used, so there is no counter left to compare; vanity URLs expose no counter at all.
  • Bot downtime. Joins while the bot is offline are lost; counts drift and later joins are mis-credited.
  • Nothing leaves the server. Even when the credit is right, it stays in the bot. The ad platform that paid for the member never hears about it, so it keeps optimising for clicks.

For organic growth, a leaderboard is fine. For paid growth, where each member has a price, guessing from counters and a dead end at the ad platform are the two problems to solve.

Attribution by authorised join

The exact method does not rely on invite links at all. Discord lets a server owner's own application add a person to the server once that person has authorised the application. The authorisation happens on Discord's own screen, and the request that leads to it can carry a signed value, so the person who comes back is tied to one click.

  1. The ad or post points at a Tellmetric tracking link of the kind "Opens your Discord server". The click is recorded with the platform's click id and campaign parameters.
  2. The link sends the visitor to Discord's authorise screen for your application ("know your username, join servers for you"), with the click id in the signed state of the request. Someone who authorised the app before skips the screen.
  3. On authorise, your application adds the person to the server through Discord's API and opens the channel you chose. The join belongs to that one click, with no counters involved.
  4. The join is reported to the ad platform that showed the ad, with the click's identifiers only; nothing from Discord about the person is sent.
  5. After the days you choose, the server is asked whether the member is still there, so members who stay are separated from members who left.

A visitor who presses Cancel on the authorise screen is still let into the server through a plain invite; that join is simply unattributed, and the counters show it as any other invite use.

Choosing between the two

QuestionInvite-tracker botAuthorised join link
Credits a member to a linkInferred from use countersExact, one click per member
Works for organic shares between membersYes, that is its purposeOnly for links you control (ads, posts, partners)
Simultaneous joinsGuessedNot affected
Tells the ad platformNoYes, to Meta, TikTok, Snapchat, Reddit, Spotify and X
Needs a bot process runningYes, with member intentsNo; the app's bot user holds one permission
Extra step for the visitorNoneOne authorise screen, once per app

Many servers use both: a tracker bot for member-to-member invites and leaderboards, and authorised join links behind every ad, partner placement and social post where the member's source matters.

Setting it up

Create an application in the Discord Developer Portal, paste its Application ID, client secret and bot token on Connections, add the bot to your server with the Create Instant Invite permission, pick the channel new members land in, and create a tracking link per ad or post. Test a join from your phone with an account that is not in the server yet. Every screen is in Discord ads tracking setup.

Frequently asked

Can Discord show which invite link a member used?

No. Discord shows use counts per invite and, on larger servers, joins over time in Server Insights, but never the invite behind a specific member. Tracker bots infer it from counters; an authorised join link records it exactly.

Do I need a bot running on a server for the authorised join?

No bot process and no privileged intents. Your application's bot user sits in the server with one permission so the app can add people; Tellmetric calls Discord's API when someone authorises.

Does this work for invites members share with friends?

Not on its own: those are plain invites, and only a counter bot can credit them. The authorised join is for links you place yourself.

What does the ad platform receive?

Only what the ad click carried: the click id, browser id, IP address, user agent and campaign parameters. Discord's developer policy forbids sending Discord data to ad networks, and none is sent.

Related guides

Track Telegram and Discord conversions from your ads

The Free plan requires no card. Upgrade to Pro at any time.