UTM naming conventions for social media

A copyable UTM naming convention for social media: lowercase values, fixed lists for source and medium, and how GA4 groups utm_medium into channels.

UTM naming conventions are a written list of the exact values allowed in utm_source, utm_medium, utm_campaign and utm_content, all in lowercase and each with one fixed spelling. Google Analytics treats those values as case sensitive, so the list is what stops one network from showing up as three rows in your reports.

This guide gives you a convention you can copy for social media links, with the allowed values, how GA4's default channel group reads utm_medium, and a governance checklist. Every Google claim links to Google's own help pages, read on October 6, 2026.

What are UTMs, and which parameters does Google Analytics read?

UTMs are parameters added to the end of a URL, such as ?utm_source=linkedin, that tell your analytics tool which campaign sent a visitor. Google's page on collecting campaign data with custom URLs says to add them to the destination URLs you use in referral links and ad campaigns, and that the values appear in the Traffic acquisition report.

The table pairs Google's description of each parameter (paraphrased) with the rule this guide uses for social links.

ParameterWhat Google says it isOur rule for social
utm_sourceThe referrer, such as google, newsletter4 or billboardThe network, lowercase
utm_mediumThe marketing medium, such as cpc, banner or emailOne value from a short list
utm_campaignProduct, slogan or promo code, such as spring_saleStart month plus campaign name
utm_contentTells apart creatives, such as two calls to action in one emailPlacement or variant
utm_termA paid keywordLeft out for organic social
utm_idA campaign ID, matching the IDs in your uploaded campaign dataOptional register ID

Google says you should always use utm_source, utm_medium and utm_campaign. It adds that if you set one UTM parameter you should set all the relevant ones, because missing parameters produce (not set) values in reports. Its note also names utm_source_platform, which we did not test for social links, so this convention leaves it out.

In reports, Google's page on manual tagging maps utm_content to Manual ad content and utm_term to Manual term. Each has Session versions, and the Traffic acquisition report shows the combined Session source / medium.

Are UTM parameters case sensitive in GA4?

Yes. Google's URL builder page says parameter values are case sensitive, so utm_source=google is different from utm_source=Google. Its best-practices table adds that Meta and meta are different values and so are SpringSale and Spring_Sale, and it advises you to "Use lowercase as a standard practice". A different separator splits a value just as a capital letter does, so a convention has to fix both.

Google's default channel group page says channel definitions are not case sensitive. Put the two statements together and Social and social both land in Organic Social, while the Session source / medium report lists them as separate rows. Your channel totals look right and your source and campaign reports are split.

Before and after: how inconsistent tags split a report

Four people tag links to the same Instagram campaign without a convention. Each link is reasonable on its own.

Tag as writtenRow in Session source / mediumDefault channel group
utm_source=Instagram&utm_medium=SocialInstagram / SocialOrganic Social
utm_source=instagram&utm_medium=socialinstagram / socialOrganic Social
utm_source=ig&utm_medium=socialig / socialOrganic Social
utm_source=instagram&utm_medium=social-mediainstagram / social-mediaOrganic Social

Per Google's definitions, all four land in Organic Social, because social and social-media are both on its medium list. But the source / medium report shows four rows for one network. After the convention, all four links use instagram and social, and the four rows become one: instagram / social. The row labels follow from Google's rule that values are case sensitive; we did not run these links through a property.

What are good UTM naming conventions for social media?

A good convention is short enough to remember and strict enough to check. These are the rules we recommend. They are our convention, built on Google's guidance, not a Google requirement.

  • Lowercase only. No capitals anywhere in a value.
  • Letters, digits, hyphens and underscores only. No spaces, accents or symbols, so nothing needs URL encoding.
  • A hyphen between words, an underscore between fields. That gives product-launch inside a campaign name and 2026-10_product-launch for the whole value.
  • One list per parameter. A value is only valid if it is on the list, and the lists live in one place.
Diagram: five rows, one per UTM parameter, each with an example value and its naming rule. utm_source is the network in lowercase, such as linkedin. utm_medium comes from a short fixed list, such as social. utm_campaign is the start month, an underscore and the name, such as 2026-10_product-launch. utm_content is an optional placement or variant, such as post-link. utm_term is left out for organic social.
The naming rule for each UTM parameter, with an example value for a LinkedIn post.

utm_source: one value per network

Use the network's name in lowercase, one spelling per network.

Networkutm_source
Instagraminstagram
Facebookfacebook
LinkedInlinkedin
X (formerly Twitter)x
TikToktiktok
YouTubeyoutube
Threads, Pinterest, Reddit, Bluesky, Mastodonthreads, pinterest, reddit, bluesky, mastodon

Google's best-practices table asks for one unique source per platform and uses fb and insta as examples, so short forms are fine if you use them everywhere. We prefer full names because anyone can read a report without a key. For X, choose x or twitter once, record the choice in your register, and do not mix them.

One caution for paid social. Google's Paid Social rule needs the source to be on its list of social sites, which Google publishes as a spreadsheet linked from the default channel group page. We searched that spreadsheet on October 6, 2026. It lists facebook, fb, instagram, ig, linkedin, pinterest, reddit, tiktok and twitter, but we found no row for x, threads, bluesky or mastodon, and it files youtube under video sources. Under Google's rules, a paid_social link with a source that is not on the list goes to Paid Other (or Paid Video for YouTube), not Paid Social. Organic links are not affected, because social as the medium is enough. If you need Paid Social for X, you would have to use twitter as the source or build a custom channel group; either way, write the choice into your register. The list changes, so recheck it.

What should utm_medium be? How GA4 groups it into channels

Use social for unpaid posts and paid_social for boosted posts and ads. Most of Google's channel rules for manual traffic test utm_medium, so this is the value to keep on a short, fixed list.

Google's default channel group page lists the rules. For manual traffic, Organic Social matches when the medium is one of social, social-network, social-media, sm, social network or social media (or when the source is on its social-site list). The paid channels need a medium that matches the pattern ^(.*cp.*|ppc|retargeting|paid.*)$, which in plain terms means it contains cp, equals ppc or retargeting, or starts with paid.

utm_mediumGA4 default channel (Google's rules)Use it for
socialOrganic SocialUnpaid posts on any network
paid_socialPaid Social when the source is on Google's social-site list; otherwise Paid Other (Paid Video for video sources such as YouTube)Boosted posts and social ads
emailEmailLinks in newsletters
referralReferralLinks on other sites, such as a partner's blog
affiliateAffiliatesLinks on affiliate sites
smsSMSLinks in text messages

Near misses are a common trap, and what they do depends on the source. social_media uses an underscore, but Google's medium list has the hyphenated and spaced forms. organic_social, boosted and promoted match neither the Organic Social medium list nor the paid pattern. Google's Organic Social rule also accepts a source from its social-site list, so one of these mediums paired with instagram or linkedin can still land in Organic Social, while the same medium paired with a source that is not on the list is left with no matching rule, and Google says Unassigned is the value Analytics uses in that case. That is our reading of the published rules, not a tested result. Google's best-practices table itself uses paid_social as an example medium, and Google says its channel definitions may evolve, so recheck the page now and then.

How do you name utm_campaign, utm_content and utm_term?

Name utm_campaign as the start month, an underscore, then a short hyphenated name, such as 2026-10_product-launch. Google's best-practices table says to use one unique name that matches the exact campaign name, so a single campaign never splits into several rows.

Use the month the campaign starts, not the month each post goes out, or one campaign splits across months.

  • utm_id (optional). If you keep a campaign register with IDs, put the same ID here on every link, for example c2610-01. The format is ours, not Google's.
  • utm_content. Google says this tells apart creatives or links in the same message. For social, use the placement or variant: bio-link, story-sticker, post-link, video-a, video-b. Google asks that names stay consistent, so call the same thing the same name in every campaign.
  • utm_term. Google defines it as a paid keyword, so leave it out of organic social. If you do tag keywords, Google says to use one strict format, such as all lowercase with identical spelling.

What do UTM source, medium and campaign examples look like?

This set follows the convention for one product launch. The URLs use example.com, and no link in this guide was run through a live Google Analytics property.

Placementutm_source / utm_mediumutm_campaign / utm_content
LinkedIn postlinkedin / social2026-10_product-launch / post-link
Instagram bio linkinstagram / social2026-10_product-launch / bio-link
Instagram Story stickerinstagram / social2026-10_product-launch / story-sticker
X postx / social2026-10_product-launch / post-link
Boosted LinkedIn videolinkedin / paid_social2026-10_product-launch / video-a
Launch newsletternewsletter / email2026-10_product-launch / top-link

Written out, the Instagram Story sticker link is:

https://example.com/product-launch?utm_source=instagram&utm_medium=social&utm_campaign=2026-10_product-launch&utm_content=story-sticker

For the Instagram placements in particular, see our guide to counting Instagram link clicks.

What should never go in a UTM tag?

  • Personal data. Google's page on avoiding personally identifiable information says no data should be passed to Google that it could use or recognize as PII, such as email addresses, personal mobile numbers and social security numbers. It names utm_source, utm_medium, utm_term, utm_campaign and utm_content specifically. A personalized newsletter link that carries a subscriber's email breaks this rule.
  • Anything private. A UTM value is part of the URL, and Google's URL builder page notes that UTM information is captured in the Page location dimension. Keep out internal codenames, ticket numbers and client names you would not print on the link itself.
  • Tags on links between your own pages. Google's page describes UTMs for referral links and ad campaigns. Google's page "Campaigns and traffic sources" says a new session does not start when Analytics sees a new campaign, and that values sent mid-session are used for event-based attribution. It does not recommend tagging internal links, and we did not test it. Our rule, not a measured effect: tag only links that bring people in from outside.

What are the UTM parameter validation rules?

Google publishes the syntax and the case rule, but the UTM pages we read list no allowed-character set and no limit on the length of a value, so your validation rules are your own. One ceiling does exist: Google's page on automatically collected events says the page_location parameter, which carries the full URL, must be 1,000 characters or fewer. Google's syntax is a question mark before the parameters, an equals sign between name and value, and an ampersand between pairs, with source, medium and campaign always present.

Add these checks on top. The pattern allows lowercase letters and digits with single hyphens or underscores between them:

^[a-z0-9]+([_-][a-z0-9]+)*$
  1. Every value matches the pattern.
  2. utm_source and utm_medium are on your allowed lists.
  3. utm_campaign is in your campaign register.
  4. All three required tags are present on the link.
  5. No value contains personal data.

The pattern accepts 2026-10_product-launch and paid_social and rejects Instagram, spring sale and social_. To confirm that a finished link survives redirects and shows up in GA4, follow our guide to checking UTM links in GA4.

What are the UTM best practices for keeping reports clean?

Google's UTM best-practices table asks for one unique source per platform, one unique medium per channel, one name per campaign, consistent content names and dynamic UTMs where a platform supports them. Turn that into a checklist someone owns:

  1. Keep one source of truth. One shared sheet or doc with three lists: allowed sources, allowed mediums, and a campaign register with name, optional ID, start month and owner.
  2. Use only values from the lists. Add a new value to the register first, with the date.
  3. Build links with a tool, not by hand. Google points to its Campaign URL Builder for website links, and recommends dynamic parameters where an ad platform supports them. In TrackMedia, the template below does the repeating part for you.
  4. Validate before publishing. Run the pattern above, then click the link once.
  5. Never rename in place. Because a new spelling is a new value, renaming mid-campaign starts a second row. Finish the campaign under the old name and use the new name for the next one.
  6. Review the report monthly. Open Reports, then Acquisition, then Traffic acquisition, as Google's Traffic acquisition report page describes. Look for capitals, near-duplicates and (not set).

How does TrackMedia apply a UTM convention?

When link tracking is on, which is the default, TrackMedia adds UTM tags to each link it turns into a tracked short link, using a template under Settings, then Links, in the UTM tags section. A link is left as you wrote it, with no tags, if tracking is switched off, its domain is on your excluded list, it is on a network where links are left raw (Pinterest, by default), or the link service does not answer in time. This is what the code does as of October 6, 2026. Crosspost rules have their own optional UTM setting, which this guide does not cover:

  • Three fields. The template has utm_source, utm_medium and utm_campaign. The defaults are {network} for source and social for medium, and the campaign is left off until you fill it in.
  • Two variables. {network} becomes the ID of the network the link goes out on, such as linkedin or x. {post} becomes the post's TrackMedia ID, which means little in a report, so we do not recommend it for utm_campaign.
  • Your tags win. A UTM parameter already in the link is never overwritten, so you can write utm_campaign and utm_content into a link yourself. TrackMedia has no template field for utm_content, utm_term or utm_id, so add those by hand. TrackMedia rebuilds the query string when it adds a tag, so the values you wrote keep their meaning, but a space written as %20 comes back as +.
  • No validation. The fields trim spaces and cap each value at 100 characters. They do not lowercase what you type or check it against a list, so enter lowercase values yourself.
  • Some IDs are not the plain network name (as of October 6, 2026). {network} is TrackMedia's internal ID for the account, so a LinkedIn company Page writes linkedin-page and Instagram connected without a Facebook Page writes instagram-business. Neither is on Google's social-site list, and each gets its own source row next to linkedin or instagram. To keep one row, write utm_source=linkedin (or instagram) into the link yourself; TrackMedia never overwrites it. If other networks share that link text, they will get the same source, so keep the written tag to the network it is for.
  • Hand-made links are not tagged. A link you shorten with Shorten a link keeps its destination exactly as pasted, so tag it first.

The settings page shows a preview URL as you type. Links are rewritten only where people can click them, never in an Instagram or TikTok caption. For the full flow, see how publishing works and how click analytics work.

What to do next

Write the three lists, set the template, and tag your next post with them. Start for free with TrackMedia to apply the template to the links it tracks for you.

How we checked this

We read each page below on October 6, 2026 and describe only what it says. The convention itself (lowercase values, separators, the YYYY-MM_name pattern, the allowed lists and the validation pattern) is our recommendation, not a Google rule. TrackMedia's behavior comes from reading its own source code that day. We did not run these links through a live Google Analytics property.

We opened Google's source-category spreadsheet and searched it for the networks in this guide. Not checked: how Google Analytics treats UTM tags on internal links, and whether the list has changed since October 6, 2026.

Distribute everywhere. Track every click.

See why teams use TrackMedia as the content engine that turns social posts into revenue.

No card required Every network in every plan Cancel in one click