Know where your Discord members came from

A discord.gg link can’t carry a campaign tag — the parameters are stripped on the redirect. Put your flatpass invite page in front of the join instead, tag that — ?ref=youtube — and every view, visitor and completed join is split by source. Free while you aren’t charging for access.

  • Free up to 15 paid members
  • No card required
  • Works before you sell anything

What Discord tells you, and what it can’t

Server Insights is a real feature and does more than most people think. The gap isn't effort — it's structural.

TL;DR

Discord invite links can't carry a tag — append ?utm_source=youtube to a discord.gg URL and it's stripped on the redirect, which is why no amount of care with your links tells you which one worked. Server Insights fills part of the gap for Community servers: it reports joins by source and a table of the websites people were on before they clicked. What nothing on Discord's side can tell you is how many people saw your link and didn't take it — nothing sits between the click and the join to count them. A page in the middle is the only thing that can, and it's free while you aren't charging: members of a free offer never count toward the 15-paid-member cap.

discord.gg/x?utm_source=yt → discord.gg/x

You can't tag a Discord invite

Query parameters are stripped from discord.gg links on the redirect, so the UTM tags every other channel in your marketing runs on don't survive. This is the whole reason the problem exists.

youtube.com ?ref=launch-video ?ref=pinned-comment

A website isn't a campaign

Server Insights reports referrers, and so does this — but a domain can't separate two videos, a post from a DM, or say anything when the referrer is stripped. A tag you choose can. Insights also needs Community features switched on; this doesn't.

Views · 662 Visitors · 486 Joined · 12

Nobody can count who didn't join

Discord counts joins, because a join is the first thing that happens on Discord. The people who opened your link and left never touched it — so there's no conversion rate to read, and two channels that each sent 40 members look identical.

What lands in your dashboard

A rolling 30-day window, updated as the traffic happens.

Views and visitors, apart. Page loads and people are different numbers, because one person opening your link twice is two loads. Both are shown, and the conversion rate is measured against visitors — the number that can’t be inflated by someone refreshing.

A row per tag. Every tag you’ve ever used gets its own line with views, visitors and joins, busiest first. Untagged visits get a row too, so you can see how much of your traffic arrives on links you never labelled.

The sites they came from. Taken from the browser itself, so it needs no tagging and no discipline — and it carries a conversion rate, because the referrer arrives with the very first request. Links opened inside Discord send none at all, so those arrive together under “direct or app”.

Roughly where they are. Inferred from each visitor’s browser timezone rather than their IP address — a shape rather than a census.

Device split. Mobile, desktop and tablet against the same window. Discord skews heavily mobile, and a join flow that works on a laptop and not a phone is the kind of thing that only shows up here.

Bots filtered out. Discord fetches your page every time someone pastes the link, to build the preview. Unfiltered, that would inflate exactly the pages being shared most. Those fetches never reach your numbers.

Three steps, no code

The bot builds the page. You add a word to the end of a URL.

flatpass bot · Online Free tier · No card

Add the bot

Install flatpass on your server and it builds you an invite page from the server itself — name, icon, roles. No Stripe account needed if you're not charging.

/invite/your-server?ref=youtube

Tag the link

Post the invite page instead of a raw invite code, with a tag on the end for wherever you're posting it. Any word works — it's your label, not a fixed list.

youtube 6twitter 4discord 2

Read the split

Every tag gets a row: views, unique visitors, and how many of them finished joining. Device split beside it, on a rolling 30-day window.

What this can’t tell you

Worth knowing before you set it up, rather than after.

TL;DR

This measures the link you promote, not every route into your server. Someone who joins from a raw discord.gg code — pasted in another server, or forwarded by a friend — never loads the flatpass page, so they won’t appear in the split. If the question you need answered is “which of my thirty invite codes did this specific member use”, that’s an invite-tracker bot, and it’s a different tool to this one.

What you get instead is the half an invite code can’t see. It can tell you a member arrived; it can never tell you how many people saw the link and didn’t, because nothing sits in between to count them. That’s the whole reason the page exists — and it’s also why the two work best the same way round: make the invite page the link you post publicly, and keep raw codes for people who are already inside.

Where Server Insights is still the better tool: it sees every join, including the ones from raw invite codes that never touch a page. Nothing here can, because nothing here sits in that path. If a complete count of arrivals is what you need and your server has Community features on, Insights is already switched on and costs you nothing.

What it still can’t give you, at any setting, is a conversion rate — that needs a count of the people who didn’t join, and nothing on Discord’s side has one. It’s the number here that exists nowhere else, and the reason to put a page in front of the join at all.

Free now, and free later if you never charge

The cap counts paid members. Free ones don't count at all.

flatpass is free until you have more than 15 paid members — and members who join through a free offer never count toward that number. A community that doesn’t sell anything therefore stays on the free tier however large it gets, with the traffic split included rather than held back for a paid plan.

If you do decide to charge later, nothing moves: the same page starts selling roles, the same tags keep working, and the split gains a column — which of your sources produced members who actually paid, rather than only members who arrived.

Common questions

Can you see which invite link someone used in Discord?

Yes, more than most people realise. The invite list (Server Settings → Invites) shows a use count per code, and on a Community server, Server Insights adds joins by source and a table of the websites people were on just before they clicked. Two things it still can't do: separate two campaigns on the same website — both are just youtube.com — and show you anyone who didn't join, since nothing sits between the click and the join to count them.

How do I track where my Discord members come from?

Put a page in front of the join. Install flatpass, then promote your invite page with a tag on the end — ?ref=youtube for the video description, ?ref=twitter for the post. Every visit is recorded against its tag, and the dashboard splits views, unique visitors and completed joins by source.

Does it work if I don't charge for anything?

Yes, and it stays free. flatpass is free until you have more than 15 paid members, and members who join a free offer never count toward that — so a community that doesn’t sell anything stays on the free tier however large it gets.

Will it track members who join with a normal discord.gg invite?

No. Anyone who joins through a raw invite code never loads the flatpass page, so there is nothing for us to record. This measures the link you promote — which is why it works best as your front door, with the raw codes kept for people already inside.

What's the difference between views and visitors?

Views count page loads; visitors count people. One person who opens your link, closes it and comes back later is two views and one visitor. The conversion rate is measured against visitors, because counting reloads would flatter it.

Do members have to leave Discord to join?

They open the page, authorise with Discord and land back in your server with the role already assigned. On a free offer there is no checkout and no card — it’s the same two taps as accepting an invite, with a page in the middle that you control.

You've been invited to join

Chef Society

Monitors, early links, and release guides for sneaker drops.

  • 1,204 online
  • 4,318 members
Join Chef Society

Renews monthly until cancelled

Payments are securely processed by

Example 1 of 8

Your invite page, built from your server — a live preview, not a screenshot

Stop guessing which channel actually works

Free up to 15 paid members · No card required · Set up in minutes