You post a Reel, drop the link in your bio, share it to Stories, and cross-post to Facebook. A week later you open GA4 to see how it did — and instead of one clean row for Instagram, you've got five: "instagram", "Instagram", "IG", "ig-bio", and a mystery "(not set)". Your traffic is real, but it's scattered across duplicate rows that each look tiny and unimportant. That's fragmentation, and it's almost always a UTM naming problem, not a traffic problem.
The good news: this is one of the most fixable analytics issues out there. You don't need a data team — you need a naming convention you actually stick to. Below are the mistakes that splinter your social data in GA4, and the exact fixes (including a copy-paste taxonomy) to keep every platform in one tidy row.
Mistake 1: Mixing uppercase and lowercase (Instagram vs instagram)
GA4 treats UTM values as case-sensitive. "Instagram", "instagram", and "INSTAGRAM" are three separate sources as far as reporting is concerned. So the moment you — or a teammate, or a link tool's autofill — capitalizes differently on different links, your one channel becomes three rows. Each row undercounts, and none of them tells the truth.
The fix: pick lowercase for everything and never deviate. Lowercase is the safest default because it's easy to remember and hard to get wrong. Write it into your convention as rule number one: source, medium, and campaign are always lowercase, always.
Mistake 2: Inventing a new source name every time
"ig" on Monday, "insta" on Wednesday, "instagram-stories" on Friday. Every synonym you improvise creates a fresh row. Multiply that across five platforms and a few months of posting, and your acquisition report becomes unreadable — you can't compare channels when each channel is spelled four ways.
The fix: lock your source values to a fixed shortlist and put the platform's real name in utm_source, not an abbreviation. Use one canonical spelling per platform and treat it like a password — no creative variations allowed.
- utm_source=instagram
- utm_source=tiktok
- utm_source=facebook
- utm_source=youtube
Mistake 3: Cramming the format into utm_source ("instagram-reel")
It's tempting to write utm_source=instagram-reel so you can see the format at a glance. But now every content type spawns a new source: instagram-reel, instagram-story, instagram-carousel. You've defeated the whole point of source, which is to answer one simple question — which platform sent this person?
The fix: keep the platform in source, and describe the format with utm_medium instead. Medium is where the 'how' lives. A clean pattern is source = platform, medium = the placement or format, campaign = the specific push.
| Field | Answers | Example values |
|---|---|---|
| utm_source | Which platform? | instagram, tiktok, youtube |
| utm_medium | What kind of link/format? | social, bio, reel, story |
| utm_campaign | Which specific push? | launch-2025, black-friday, waitlist |
Mistake 4: Spaces and stray punctuation in campaign names
"Summer Launch" looks fine when you type it, but a space in a URL gets encoded as %20 — and now GA4 may show "summer%20launch" alongside a clean "summer-launch" you used elsewhere. Same for ampersands, apostrophes, and emojis. Punctuation quietly forks your data and makes campaign names ugly to read.
The fix: use hyphens as your only separator, and strip everything else. No spaces, no underscores mixed in, no special characters. "summer-launch" reads cleanly, sorts predictably, and never encodes into a duplicate.
Mistake 5: Leaving medium blank so traffic lands in (not set) or referral
If you tag utm_source but skip utm_medium, GA4 can't slot the traffic into a channel group properly — it often ends up in "(not set)" or gets bucketed as a plain referral. That means your carefully tagged Instagram click doesn't even show up under your social numbers, and your channel report lies to you.
The fix: never ship a UTM without a medium. For most organic social links, utm_medium=social is the standard value that keeps GA4's default channel grouping working. If you want more detail, use a specific medium like bio or reel — just always include one.
Mistake 6: Everyone builds links by hand, differently
The real root cause of fragmentation isn't ignorance — it's that hand-typed links drift. You remember the rules today; future-you at 11pm scheduling three posts does not. And if a collaborator touches your links, all bets are off. Consistency is a process problem, not a willpower problem.
The fix: write your convention down once, keep a link-builder template (a spreadsheet or saved snippet), and reuse it. Better yet, let the tool that publishes your content also handle the tagging so the naming is identical every time. Consistency across platforms is exactly the kind of thing a scheduling workflow should enforce for you.
Once your links are consistent, you'll finally be able to trust your reporting — and see which platform and which post actually drove results. If you'd rather not stitch this together across five apps, VibeDay handles creating, scheduling, and reporting on your social content in one place, so you're comparing clean numbers instead of untangling duplicate rows. You can see how the reporting fits into the workflow on the features page, or if you're switching from another scheduler, here's the Buffer alternative breakdown.
Key takeaways
- GA4 UTM values are case-sensitive — commit to lowercase everywhere.
- Use one canonical spelling per platform in utm_source; no synonyms or abbreviations.
- Put the platform in source and the format in medium — don't merge them.
- Separate words with hyphens only; no spaces, punctuation, or emojis.
- Always include utm_medium (social is the safe default) so traffic doesn't fall into (not set).
- Save a link-builder template and reuse it so links never drift over time.
Stop untangling duplicate rows and start comparing clean numbers. Create, schedule, and report on your social content in one consistent workflow with VibeDay.
Start with VibeDay →Put your content engine on autopilot
VibeDay turns one idea into scroll-stopping posts — image, video, and carousel — captioned for every platform.
Start your free 7-day trial →


