Instagram shows as direct in GA4: UTMs for bio, Stories, Reels and DMs

Published by the UTM Builder team at Limner.

When a click reaches the site with no UTM and no referrer, GA4 has no way of knowing it came from Instagram and records (direct) / (none). With a UTM on every link you control (bio, Stories, Reels and DMs) and utm_medium=social, the session lands in Organic Social under GA4’s own rule, and you also know which placement it came from.

Why it turns into direct or referral

The GA4 help defines (direct) / (none) as traffic without a clear referring source and lists the causes: links without UTMs, redirects that strip the parameters, link shorteners that strip the referral details, and ad blockers. Meta doesn’t document when a click leaving the Instagram app carries the referrer with it. Without UTMs, you depend on something you don’t control.

When the referrer does arrive, the source shows up as instagram.com or l.instagram.com, with medium referral. The source list GA4 publishes marks instagram, ig, instagram.com and l.instagram.com as social. Even so, every click from the profile arrives lumped together, and you can’t tell the bio from a Story.

The channel rule

ChannelRule in GA4
Organic Socialsource on the list of social sites or medium equal to social, social-network, social-media, sm, social network or social media
Paid Socialsource on the list of social sites and medium matching ^(.*cp.*|ppc|retargeting|paid.*)$
Referralmedium equal to referral, app or link
Directsource (direct) and medium (not set) or (none)

One link for each placement

The GA4 help asks for utm_source, utm_medium and utm_campaign every time. Keep source and medium fixed and use utm_content to say where the click came from:

PlacementParameters
Bio, first linkutm_source=instagram&utm_medium=social&utm_campaign=perfil&utm_content=bio-link1
Storyutm_source=instagram&utm_medium=social&utm_campaign=lancamento-out26&utm_content=story-20261012
Reelsutm_source=instagram&utm_medium=social&utm_campaign=lancamento-out26&utm_content=reels-bastidores
DMs and automationutm_source=instagram&utm_medium=social&utm_campaign=lancamento-out26&utm_content=dm-palavra-chave

A complete bio link looks like this:

https://www.seusite.com.br/curso?utm_source=instagram&utm_medium=social&utm_campaign=perfil&utm_content=bio-link1

Where to check in GA4

In Reports, Acquisition, Traffic acquisition, change the primary dimension to Session source / medium and look for instagram / social. To separate bio, Story and Reels, add the campaign content (utm_content), as the guide on utm_content in GA4 explains. Whatever still shows as l.instagram.com / referral is a click on a link without UTMs.

Official sources