Why so much traffic shows up as Direct
Why visits land under Direct when links from apps, newsletters, PDFs and WhatsApp lose their referrer, and how UTM tags and Google Ads auto-tagging fix it.
Short answer
Tag every link you control with utm_source, utm_medium and utm_campaign, in lower case and spelled the same way everywhere. The medium decides most of the channel, so use cpc for paid search, paid_social for paid social, email for newsletters and social for your own posts.
UTM parameters are the tags that tell your analytics where a click came from when the browser does not. Put three of them on every link you control, keep the values in lower case and spelled one way, and each visit lands in the right channel and campaign. This guide gives you a naming convention, the medium values MIRA FIVE files under each channel, and ready tags for Google Ads, Meta ads and newsletters.
They are query-string tags added after the ? in a link:
| Parameter | What it says | Example |
|---|---|---|
utm_source |
Who sent the visit | google, newsletter, instagram |
utm_medium |
What kind of traffic it is | cpc, email, social |
utm_campaign |
Which campaign it belongs to | autumn_sale, or an ad campaign’s ID |
utm_content |
Which link or ad variant was clicked | header_button, video_a |
utm_term |
Which keyword, for paid search | merino_sweater |
Source, medium and campaign are the three that matter. Content tells apart several links in one newsletter or ad, and term records the keyword.
One that everyone on the team follows without thinking. Many reports treat Newsletter and newsletter
as two values, and a campaign spelled two ways can split its buyers across two rows.
autumn_sale), never spaces.google, meta, newsletter, a partner’s name.autumn_sale.Leave links between pages of your own shop untagged. Tags belong on links that bring people in.
MIRA FIVE checks nine rules in order, and the first that matches wins. For tagged links, utm_medium
decides most of it:
| Channel in MIRA FIVE | Values that put a visit there | Example |
|---|---|---|
| Paid search | utm_medium cpc, ppc, paid, paidsearch, paid_search or paid-search, from a source that is not social |
utm_source=google&utm_medium=cpc |
| Paid social | utm_medium paid_social, paidsocial or paid-social, or a paid medium from a social source such as facebook, instagram, linkedin or tiktok |
utm_source=meta&utm_medium=paid_social |
utm_medium email, e-mail, e_mail or newsletter |
utm_source=newsletter&utm_medium=email |
|
| AI assistants | utm_source chatgpt, openai, perplexity, claude, gemini, copilot, mistral, deepseek or grok |
utm_source=chatgpt |
| Organic social | utm_medium such as social, social-media, social_media or sm, or a social source |
utm_source=linkedin&utm_medium=social |
| Campaign | any other utm_source or utm_campaign |
utm_source=flyer&utm_medium=print |
Three things follow from the order. cpc from Instagram counts as paid social, not paid search. A link
placed in an assistant keeps its AI assistants channel only without a paid or email medium.
And a link with a utm_source or utm_campaign that matches nothing else lands in Campaign, never in
Referral or Direct.
The free UTM builder applies the same rules and shows the channel a link lands in before you send it.
Keep auto-tagging on. The gclid it adds puts every ad click in paid search and lets MIRA FIVE join the
visit to its campaign. Then add the campaign ID as a plain tag in the final URL suffix, under
Admin → Account settings → Tracking:
utm_campaign={campaignid}Google fills in {campaignid} on every click, and the ID stays the same when you rename the campaign.
A suffix set on a campaign or ad group replaces the account’s, so check those levels too.
Meta adds its own click id, fbclid, and MIRA FIVE files those visits under Paid social. Facebook and
Instagram add it to links in organic posts too, so tag organic posts with utm_medium=social: a medium
that says social or organic wins over the click id. To name the campaign of an ad, put this in the URL parameters field of each ad, under Tracking:
utm_source=meta&utm_medium=paid_social&utm_campaign={{campaign.id}}Meta fills in {{campaign.id}}. The tags put each visit on its campaign’s row; the spend stays in Meta’s
Ads Manager, because Meta Ads is next.
Give every link in every send utm_medium=email and the send’s name as the campaign:
https://shop.example/collections/sale?utm_source=newsletter&utm_medium=email&utm_campaign=autumn_saleMany newsletter tools can add tags to every link for you; check that they set email as the medium.
For the rest:
utm_source=instagram&utm_medium=social and a campaign.utm_source=whatsapp&utm_medium=social.utm_source=flyer&utm_medium=print and the campaign. These land in
Campaign.utm_medium=partner. These land in
Campaign too.Untagged, most of these arrive as Direct. Why traffic shows as Direct explains why.
Acquisition › Channels files each visit under the channel its tags decide, and every channel row
opens to its campaigns, named by utm_campaign, with visits, people, buyers and conversion. In the sample
shop, the campaign autumn_sale was new in the last 30 days and brought 10 buyers. With Google Ads
connected under Data → Sources, Acquisition › Ads joins spend to visits by utm_campaign or
gclid. Its diagnosis for untagged campaigns points out paid visits that arrive without a campaign and
gives you the suffix to paste. The guide to Google Ads cost per buyer goes through that screen.
utm_source, utm_medium and utm_campaign. Add utm_content when one send or ad has several links, and utm_term for a keyword.gclid already marks the visit as paid search. Add utm_campaign={campaignid} as the final URL suffix anyway, so every visit names its campaign by an ID that survives renames.Why visits land under Direct when links from apps, newsletters, PDFs and WhatsApp lose their referrer, and how UTM tags and Google Ads auto-tagging fix it.
Google Ads cost per buyer divides spend by the people who paid, not by the conversions Google counts. How MIRA FIVE joins spend to visits and shows ROAS.
Rank marketing channels by the buyers they bring instead of visits, with first or last touch, revenue per channel, campaigns and Google Ads cost per buyer.