Skip to content
Guide8 min readTracee team

UTM parameters for social media posts: a practical guide

The five UTM parameters as GA4 defines them, a naming table for 13 networks, how GA4 and HubSpot bucket social visits, and the mistakes that break reports.

UTM parameters are the only way most CRMs and analytics tools can tell one social post from another. This guide gives the official definitions, a naming table for every major network, how GA4 and HubSpot read your tags, and the mistakes that quietly break reporting.

UTM parameters are labels added to the end of a URL, such as ?utm_source=linkedin&utm_medium=social&utm_campaign=launch-week, that tell analytics tools where a visit came from. For social posts, use the network as source, social as medium for organic posts, and a campaign value specific enough to identify the post or campaign.

What are the five UTM parameters?

Google Analytics defines five classic UTM parameters, plus a few newer ones most social teams don't need. These definitions are quoted from Google's URL builder documentation as of November 2026.

ParameterGoogle's definitionSocial example
utm_source"Referrer, for example: google, newsletter4, billboard"linkedin
utm_medium"Marketing medium, for example: cpc, banner, email"social
utm_campaign"Product, slogan, promo code, for example: spring_sale"q4-webinar
utm_term"Paid keyword"rarely used on social
utm_content"Use to differentiate creatives"video-a, link-2

Google also lists utm_id (a campaign ID), utm_source_platform, utm_creative_format and utm_marketing_tactic, and notes the last two "isn't currently reported in Google Analytics properties."

Two rules from the same page matter most: "you should always use utm_source, utm_medium, and utm_campaign," and "Parameter values are case sensitive." Missing parameters show up as (not set) in reports.

What naming convention works for each social network?

A naming convention is a fixed set of values your whole team uses, so every report groups the same traffic the same way. The table below uses lowercase network names as source and social as medium for organic posts, which both GA4 and HubSpot recognize.

Networkutm_sourceutm_medium (organic)utm_medium (paid)Notes
LinkedInlinkedinsocialpaid_socialTag links in the first comment too
Facebookfacebooksocialpaid_socialMeta also adds fbclid on clicks
Instagraminstagramsocialpaid_socialFeed captions aren't clickable; tag bio and story links
Xx or twittersocialpaid_socialPick one and keep it
Threadsthreadssocialn/a
TikToktiktoksocialpaid_socialBio link only for most accounts
YouTubeyoutubesocialpaid_socialTag description and pinned-comment links
Pinterestpinterestsocialpaid_socialPin destination URL
Redditredditsocialpaid_social
Google Business Profilegoogleorganicn/aGA4 files medium organic under Organic Search; utm_campaign=gbp separates it
Slackslacksocialn/aCommunity posts
Discorddiscordsocialn/a
DEVdevsocialn/a

For utm_campaign, choose one of two levels and stick with it:

  • Campaign level: q4-webinar, launch-week. Good when you want totals per initiative.
  • Post level: a short unique ID per post, such as li-2026-11-12-a or a generated code. Good when you want to know which post brought a lead. The social media attribution guide explains why post-level tags are what make a CRM answer that question.

If you need both, put the campaign in utm_campaign and the post ID in utm_content.

How does GA4 classify tagged social traffic?

GA4 sorts every session into a default channel group using your source and medium. The rules below are quoted from GA4's default channel group article as of November 2026.

  • Organic Social: source matches GA4's list of social sites, OR medium is one of "social", "social-network", "social-media", "sm", "social network", "social media".
  • Paid Social: source matches the list of social sites AND medium matches ^(.*cp.*|ppc|retargeting|paid.*)$.
  • Organic Video: source matches a list of video sites, OR medium contains "video".

Three practical consequences follow. utm_medium=social lands in Organic Social whatever the source, so it's the safest organic value. paid_social matches paid.*, and cpc or cpm match .*cp.*, so any of them works for ads as long as the source is a recognized social site. YouTube is on GA4's video site list, so YouTube traffic can show under Organic Video rather than Organic Social; check how it appears in your property before you build a report on it.

HubSpot checks each visit's first URL and referrer against an ordered list of rules and stops at the first match. These come from HubSpot's traffic sources article (updated August 2026).

  • Organic social: "The "utm_medium" parameter is "social", and the "utm_source" is exactly the name of a recognized social network."
  • Paid social: utm_medium contains "paid", "ppc" or "cpc" with a recognized social network as source, or source or medium contains "paidsocial".
  • Other campaigns: any UTM is present but none of the rules above matched and no "email", "adword", "ppc" or "cpc" appears.

So HubSpot is stricter than GA4. utm_medium=social-media works in GA4 but becomes Other campaigns in HubSpot. A source HubSpot doesn't recognize, such as a community platform, also falls to Other campaigns even with utm_medium=social. Test one link per network: click it in a private window, submit a test form, and check the test contact's Original traffic source.

For each contact, HubSpot stores the campaign name from utm_campaign in Original source drill-down 2 for both organic and paid social (HubSpot). That field is what lets you see the post. The HubSpot social attribution guide shows where to find it.

One HubSpot-specific behavior: when you publish through HubSpot's own social tool, it "automatically appends utm_content, utm_medium, and utm_source" and "Custom tracking URLs are not supported in social posts published through HubSpot" (HubSpot, updated March 2026).

What are the most common UTM mistakes?

Most broken social reports come from a short list of mistakes, and each one has a simple rule that prevents it.

  1. Mixed case. LinkedIn, linkedin and Linkedin are three sources in GA4. Lowercase everything.
  2. Inconsistent separators. q4_webinar and q4-webinar split one campaign into two. Pick hyphens or underscores.
  3. Tagging internal links. A UTM on a link from your homepage to your pricing page relabels a visitor who arrived from search as a campaign visit. Use UTMs only on links that point to your site from somewhere else.
  4. Hand-tagging Google Ads. Google's help states that in GA4 "auto-tagging is prioritized over manual tagging due to the absence of an override option" (Google Ads Help). Leave Google Ads to the gclid.
  5. Personal data in tags. Google's policy requires that "no data be passed to Google that Google could use or recognize as personally identifiable information" (Google). Never put an email or a name in a UTM.
  6. Redirects that drop the query string. Some redirects and shorteners strip parameters. Click your own link before publishing and check the address bar.
  7. Forgetting the second link. Links in the first comment, bio, story stickers and video descriptions need tags too.
  8. Reusing an old link. A link copied from last quarter's post carries last quarter's campaign. Generate a fresh one each time.

Copyable UTM templates for social posts

Templates remove most of the mistakes above, because nobody types a value from memory. Replace the parts in angle brackets.

Organic post, campaign level
https://example.com/<page>?utm_source=<network>&utm_medium=social&utm_campaign=<campaign>

Organic post, post level
https://example.com/<page>?utm_source=<network>&utm_medium=social&utm_campaign=<campaign>&utm_content=<post-id>

Paid social ad
https://example.com/<page>?utm_source=<network>&utm_medium=paid_social&utm_campaign=<campaign-name-as-in-ads-manager>&utm_content=<ad-id>

Google Business Profile website link
https://example.com/?utm_source=google&utm_medium=organic&utm_campaign=gbp

For paid social, copy the campaign name exactly as it appears in the ads manager into utm_campaign. That lets a CRM or reporting tool match the contact to the campaign by name. If you fill URL parameters with an ads manager's dynamic placeholders instead, submit a test lead and check that real names arrive in your CRM, not unresolved placeholders or values HubSpot can't bucket.

A simple spreadsheet works as a builder: one column per parameter, a formula that joins them, and a LOWER() around every value.

How do you audit the UTM data you already have?

A 30-minute audit shows whether your existing tags can be trusted before you build reports on them. Do it once a quarter.

  1. List every source/medium pair. In GA4, open the Traffic acquisition report and switch the dimension to Session source / medium for the last 90 days. Export it.
  2. Find the duplicates. Sort alphabetically. Rows like LinkedIn / social, linkedin / Social and linkedin.com / referral are the same traffic split three ways. Note each variant and who created it.
  3. Check the channel column. Anything social that landed in Unassigned or Referral had a medium GA4 didn't recognize. GA4 uses Unassigned "when there are no other channel rules that match the event data" (Google).
  4. Check HubSpot's Other campaigns bucket. In HubSpot's Sources report, open Other campaigns. Social links that ended up there usually had a medium other than exactly social, or a source HubSpot doesn't recognize.
  5. Fix forward, not backward. You can't rewrite history in GA4, and HubSpot's drill-down properties can't be edited manually. Update the convention document and the templates, then note the date of the change on your dashboards so nobody compares the before and after periods as if they were the same.

Tracee adds UTM parameters to every link in a post it publishes, so nobody has to remember. Each link gets utm_source set to the network, utm_medium=social, and a utm_campaign unique to the post, in the form tracee- followed by eight characters. Any UTM values already on the link are replaced, so a stale tag from an old campaign can't carry over.

Because each post has its own tag, Tracee can match a HubSpot contact whose first visit carried that tag to the exact post, and show contacts and MQLs per post next to paid campaigns. The features page shows how the attribution view looks.

Next step

Write your convention down today: the source value for each network, social and paid_social as mediums, and one rule for campaign names. Then test one link per network into a test contact. If you'd rather not maintain tags by hand, Tracee applies them to every post on every plan; pricing lists the plans at the time of writing (November 2026).

Frequently asked questions

What UTM parameters should I use for social media posts?

Use three on every link: utm_source for the network (linkedin, facebook, instagram), utm_medium for the type of traffic (social for organic posts, paid_social or cpc for ads), and utm_campaign for the campaign or the individual post. Add utm_content when one post has two links or you test two creatives. Google says source, medium and campaign should always be present.

Should utm_medium be social or organic_social?

Use social. GA4's Organic Social channel accepts the medium values social, social-network, social-media, sm, social network and social media. HubSpot files a visit as Organic social when utm_medium is exactly social and utm_source names a recognized network. Values like organic_social or organic land outside the social channel in one tool or both.

Are UTM parameters case sensitive?

Yes. Google's documentation states that utm_source=google is different from utm_source=Google, so LinkedIn and linkedin become two separate rows in GA4. Pick lowercase for every value, separate words with hyphens or underscores but not both, and generate links from a template instead of typing them by hand.

Should I add UTM parameters to Google Ads links?

Usually not, if auto-tagging is on. Google's help says that in GA4 auto-tagging is prioritized over manual tagging because there is no override option, so your hand-written UTMs on Google Ads URLs are ignored for source and medium. Keep UTMs for social posts, social ads, email and partner links, and let the gclid handle Google Ads.

Do UTM parameters hurt SEO?

Not when your pages declare a canonical URL without parameters, which most CMSs do by default. Google then treats the tagged and untagged URLs as the same page. The bigger risk is people sharing a tagged link onward, which credits later visits to your original post. Short, clean tags and a canonical tag handle both.

Keep reading

7-day trial. No credit card.

Let your AI run your social media.

Connect ChatGPT, Claude or any agent to Tracee. It plans, writes and schedules your posts across 13 networks, and you approve everything in one calendar.