
You put the same link in four places in one week: a flyer on the café noticeboard, your Instagram bio, a mention on a friend's podcast and your newsletter. Traffic goes up. Your analytics says most of it is "Direct".
Direct is supposed to mean someone typed your address or used a bookmark. In practice it's where analytics puts every visit that arrives without a referrer, and these days that's a lot of them. Marketers call it dark social. You don't need a name for it, just a way around it.
Why the referrer goes missing
When someone clicks a link on a web page, the browser normally sends the address of that page along with the request, in the Referer header. Your analytics reads it and says "came from news.example". A lot of the places people find links don't produce that header at all:
QR codes. The camera app opens the address directly. There's no page before it, so there's nothing to report.
Chat apps and email. Messaging apps like WhatsApp and iMessage, and most email clients, open links without passing on where they came from (at best you see the webmail's own domain). A link a friend forwarded and a link from your own newsletter look exactly the same.
Podcasts, radio, talks. Someone hears "go to yoursite dot com slash workshop" and types it in. That really is direct, and you'll never know which episode did it.
Mobile apps. Some in-app browsers send a referrer, some don't, and it changes between app versions.
And when a referrer does arrive, it's thinner than it used to be. Browsers now default to a policy called strict-origin-when-cross-origin: when the click goes from one site to another, only the origin is sent. You learn the visitor came from https://news.example/, not which article. If the page linking to you is HTTPS and yours is plain HTTP, nothing is sent at all.
The fix: one link per place
If you can't learn where a click came from, make the link itself say it. Give every place its own address, and count clicks per address. This is what printed coupon codes and "mention this ad" did long before analytics. A short link makes it practical, because you're not asking someone to type a long tagged URL off a poster.
Each one points at the same page. Each one has its own stats. On b59.link that's the stats page for the link: clicks per day for the last two weeks, top referrers (QR and chat clicks show as "Direct / None", which is fine now, because the link already tells you the source), and the split between phones and desktops.
For a spoken link, pick a slug that survives being said out loud. pod-ep42 is fine. x7Kq2 isn't. Avoid letters people mix up when they hear them, and avoid anything that needs "dash or underscore?" explained.

Add UTM tags behind the short link
Short link stats tell you how many people clicked. Your site's own analytics tells you what they did afterwards: signed up, bought, left. To connect the two, add UTM tags to the destination of each short link, not to the short link itself:
Google Analytics, Plausible, Matomo and most others read these. Google's own guidance is to always set utm_source, utm_medium and utm_campaign; anything missing shows as "(not set)" in reports. The visitor never sees them: they see b59.link/oct-flyer, and the redirect carries the tags.
Two practical notes from running this ourselves. First, tags you add after the short link (b59.link/oct-flyer?utm_source=x) are dropped by the redirect, so put them in the destination. Second, b59.link keeps one short link per destination address. Different utm_source values make the addresses different, so tagging each link also lets you make several links to the same page.
Things that inflate the numbers
Link previews. Paste a link into Slack, WhatsApp, LinkedIn or X and their servers fetch it to build the preview card, before anyone has clicked. A shortener that counts those fetches shows clicks from a chat nobody opened. b59.link skips known bots and preview fetchers in its click counts; they still get redirected, so the preview card works.
You. Testing your own QR code ten times before printing is ten clicks. Test, then glance at the count before you hand the flyers out, so you know your baseline.
Forwarding. A link from your newsletter that someone forwards to a group chat still counts as newsletter. That's usually what you want to know (the newsletter started it), but it's worth remembering when one email suddenly does unusually well.
Keep it small
You don't need a link for every tweet. Make one for every place that costs you something: money (a printed run, an ad, a stall at a market), or effort (a guest post, a podcast appearance). Those are the ones where "was it worth it?" is a real question. After a month, the stats answer it.
If some of those places are printed, size the QR code for how far away people will be standing; our guide to printing a QR code that scans covers that, and a short link makes the code smaller too. If you also want to know which pages people read once they arrive, that's the page-view tracker, explained in one b59.link tag on every page.
Sources: MDN, Referrer-Policy (default strict-origin-when-cross-origin); Google Analytics Help, URL builders and UTM parameters.
Make a short link for each flyer, post and episode. Free click stats, no sign-up needed.
Create a short link


