How to use UTM parameters

Tag every link you share with UTM parameters so Google Analytics shows which post, message or email brought each signup or sale, with a copy-ready naming sheet, a link formula and a 30-minute Sunday check.

ByDinesh BypillaReviewed byMurali SidLast checked 15 min read

You post, you send messages, and a few people sign up or buy, but Google Analytics says most of them came from "Direct" or "Unassigned". UTM parameters are short tags you add to the end of every link you share, so Google Analytics can show which post, message or email each visit came from. Without them you keep guessing, and you spend next week's hours on the place that feels busy instead of the one that brings signups and sales.

Do these three things

About 1 hour today, then 5 minutes a day and 30 minutes every Sunday. Judge each tag after 4 Sundays: about 2,800 messages and 56 posts on each channel.

Show the three actions in full
  1. Today: write one sheet of lowercase tag names, then put tagged links in every bio, profile and email signature you have.
  2. Every day: tag every link you share from that sheet: each of your 2 posts a day on each channel, and the link in your 100 personal messages.
  3. Every Sunday: in Google Analytics, write down visits and signups for each tag, then move next week's hours to the tag that brought the most signups.

Get help doing these

ChatGPT or Claude reads this guide and works through it with you.

1. Write a UTM naming sheet before you tag anything

Write down, in one sheet, the exact words you will use for each tag, all in lowercase. If you skip this, "LinkedIn" and "linkedin" show up as two different rows, because Google Analytics treats capital letters as different values.

A tagged link has up to five tags after a ?. Google says to always use the first three:

TagWhat it saysExample
utm_sourcethe place the click came fromlinkedin, newsletter, partner-name
utm_mediumthe type of linksocial, email, referral
utm_campaignwhy you shared italways-on, launch-oct, webinar-1
utm_contentwhich post or link, when you share more than one2026-10-12-a
utm_termthe keyword, for search ads onlyleave it out

Pick each medium from Google's own list. Google Analytics puts a visit into a marketing channel by its medium. If neither the source nor the medium is a word it knows, such as source "newsletter" with medium "newsletter", the visit goes to "Unassigned" and you lose it in the channel report. Use these:

  • social for posts, comments, bios and messages on LinkedIn, X, Instagram, Facebook, Threads and Reddit. It lands in Organic Social.
  • email for your newsletter, cold emails and your signature. It lands in Email.
  • referral for links on other people's sites: partners, podcast show notes, guest articles. It lands in Referral.
  • paid-social for Meta, LinkedIn and Reddit ads, and cpc for search ads other than Google. They land in Paid Social and Paid Search.
  • affiliate for affiliate links, and sms for text messages.

Copy this into a tab called "Names" and fill it with every place you share links today:

Your UTM naming sheet
Rules: lowercase only. Hyphens, no spaces. Only the words in this sheet.source | medium | campaign | use it for
linkedin | social | always-on | your LinkedIn posts, comments and messages
x | social | always-on | your posts and replies on X
reddit | social | always-on | answers in subreddits that allow links
newsletter | email | always-on | every link in your newsletter
cold-email | email | outreach | the link in your one-to-one emails
signature | email | always-on | your email signature
[partner-name] | referral | [what you did together] | a partner's site, a podcast page, a guest article
facebook, instagram, linkedin or reddit | paid-social | [ad campaign name] | ads on that platformutm_content: the date and a letter, like 2026-10-12-a, so you can tell posts apart.
  • Tool: Google Sheets. Free.
  • Time: 30 minutes.
  • You will have: a "Names" tab with one row for every place you share links.
  • It worked if: every place you post or message has a row, and every medium is one of social, email, referral, paid-social, cpc, affiliate or sms.
  • Common mistake: making up a medium, such as "newsletter / newsletter" or "podcast / show-notes". Those visits land in Unassigned. Put the place in source and one of the types above in medium.

See it done: Quillfox's naming sheet

Quillfox is a made-up one-person agency. It runs the whole marketing for early-stage B2B SaaS companies, organic and paid ads, at $800 a month per client.

Names tab

sourcemediumcampaignuse it for
linkedinsocialalways-onposts and comments
linkedinsocialoutreachthe link in LinkedIn messages
cold-emailemailoutreachthe link in one-to-one emails
redditsocialalways-onanswers in r/SaaS and r/startups
newsletteremailalways-onevery newsletter link
saas-podcastreferralguest-episodethe show notes of one podcast

Why it works: Every medium is a word Google Analytics knows, so each visit lands in the right channel, and the sources match the places it actually works.

Turn your names into links with one formula in a second tab, so each new link takes seconds. For a one-off link, Google's free Campaign URL Builder does the same job.

Make a tab called "Links" with these columns: page (A), source (B), medium (C), campaign (D), content (E). Paste this formula in F2 and copy it down:

The link formula for Google Sheets (cell F2)
=A2&IF(ISNUMBER(FIND("?",A2)),"&","?")&"utm_source="&LOWER(B2)&"&utm_medium="&LOWER(C2)&"&utm_campaign="&LOWER(D2)&"&utm_content="&LOWER(E2)

The formula forces lowercase, and adds & instead of a second ? if your page link already has one. A finished link looks like this:

What a tagged link looks like
yoursite.com/pricing?utm_source=linkedin&utm_medium=social&utm_campaign=always-on&utm_content=2026-10-12-a

In the Campaign URL Builder, fill in "website URL", "campaign source", "campaign medium" and "campaign name", plus "campaign content" if you share more than one link. It shows the "generated URL" and a QR code you can scan.

Point each link at the page that does the job: your landing page, your pricing page or your shop, not always the home page.

  • Tool: Google Sheets, or the Campaign URL Builder. Both free.
  • Time: 20 minutes.
  • You will have: a "Links" tab where five short cells make one tagged link.
  • It worked if: you paste the link in a browser, the page opens, and all four tags are still in the address bar.
  • Common mistake: typing tags by hand. One space, a second ? or utm-source with a hyphen, and Google Analytics ignores the tag.

Replace every link you leave in one place with a tagged one today: each social bio, your LinkedIn profile, your email signature, your newsletter footer and any site that links to you. These links bring visits for months, and untagged they show up as Direct or as a plain referral.

Work through this list, and mark each one done in your sheet:

  1. The link in every social profile you use, including your Instagram bio. Source is the platform, medium social, campaign bio.
  2. Your email signature: source signature, medium email.
  3. Every partner, co-marketing or podcast page that links to you. Send the owner the tagged link and ask them to swap it.
  4. Anything printed: flyers, trade show badges, business cards. Make a QR code from a tagged link, with source set to the event or the card and medium referral.
  5. Each micro-influencer or creator you work with gets their own source, so you can tell them apart.

Never tag links inside your own site: your menu, buttons, or a blog post that links to your pricing page. The tag takes the credit away from where the person really came from, so a signup from a LinkedIn post shows up as your own blog.

If you run a D2C store: put a QR code with a tagged link on the card inside every parcel, with source insert-card and medium referral, and point it at the page for your repeat order.

If you run an agency: keep one naming sheet per client, use the same words for every client, and do this step inside each client's own Google Analytics, not a copy you own. The rows then drop straight into your monthly client report.

  • Tool: each platform's profile settings, your email settings, and the Campaign URL Builder's QR code.
  • Time: 45 minutes.
  • You will have: a tagged link in every place that keeps a link for months.
  • It worked if: every row in the sheet's "Done" column is ticked, and no profile still shows a bare link.
  • Common mistake: tagging internal links "to see which button works". Use your conversion tracking for clicks on your own site instead.

4. Tag every link you post or send, every day

Build today's tagged links from the sheet before you post or send anything, so not one link goes out bare. At the default volume, that is 2 posts a day on each channel and 100 personal messages, so it has to take seconds, not minutes.

Each morning, add today's rows to the "Links" tab: one row per post, with utm_content set to the date and a letter (a, b), and one row for all of today's messages. That is 1 minute for 2 channels. ChatGPT or Claude drafts the posts, often by reusing one idea on each platform, and drafts the messages. You add the one true line about each person, and paste the tagged link last.

  • Posts: each post with a link gets its own tag, so you can see which post brought the signup. On Reddit, link only where the subreddit's rules allow it.
  • Messages: 100 a day, one tag for the day. Send most of them by email if LinkedIn's weekly limit on connection requests stops you, and tag your follow-ups the same way.
  • Newsletter and emails from a tool: some email tools add their own tags. Kit, for example, can add utm_source=convertkit and utm_medium=email to every link. Either add those words to your sheet, or turn the setting off and tag the links yourself. Do not do both.
  • Google Ads: leave auto-tagging on and add no UTM tags. Google Analytics uses Google's own click tag first, so your source and medium tags would be ignored.
  • Meta, LinkedIn and Reddit ads: add the same tags to the link in your Meta ads, LinkedIn ads and Reddit ads, with medium paid-social and the ad's name as utm_content. Tags matter more here now: Safari removes Meta's and Google's click tags in Private Browsing, Mail and Messages, but it leaves UTM tags in place.
  • ChatGPT: do not add it to your sheet. ChatGPT adds utm_source=chatgpt.com to the links it shows by itself. Count those AI visits on their own.

Paste each link into its post or message only after its row is in the sheet.

  • Tool: your "Links" tab.
  • Time: 5 minutes a day, every day.
  • You will have: a row for every link that went out today.
  • It worked if: you count 0 untagged links in today's posts and messages.
  • Common mistake: reusing yesterday's utm_content. Two posts then share one row, and you cannot tell which one worked.

See it done: Quillfox's link in a LinkedIn post

Before

quillfox.example/free-audit

After

quillfox.example/free-audit?utm_source=linkedin&utm_medium=social&utm_campaign=always-on&utm_content=2026-10-12-a

Why it works: Source, medium and campaign come from the sheet, and the content tag names the day and the post, so this one post gets its own row.

Open every new tagged link once in a private browser window and check the tags are still in the address bar when the page loads. If they vanish, something on the way removed them, and every visit from that link will show up as Direct.

If the tags vanish, it is usually one of these:

  1. A redirect drops everything after the ?: from http to https, from yoursite.com to www.yoursite.com, or to a login page. Link to the final address, or ask whoever built your site to keep the tags when it redirects.
  2. A link shortener that does not pass the tags on. Click the short link and check.
  3. A typo: a space, a second ?, or a capital letter. Rebuild it with the formula.

Then, 24 to 48 hours later, check Google Analytics. Go to Reports, then Acquisition, then Traffic acquisition. Change the first column from "Session default channel grouping" to Session source / medium. Your words should be there exactly as you wrote them, such as "linkedin / social". Do not judge it in the Realtime report: it shows how each person first found you, not this visit, and Google says to use the Acquisition reports for this.

Switch back to "Session default channel grouping" and look at "Unassigned". If it is more than 1 in 10 visits, a medium is off your sheet. Sort by Session source / medium to find it.

  • Tool: a private browser window, and Google Analytics 4. Free.
  • Time: 1 minute per new link, and 10 minutes the next day.
  • You will have: proof that each link reaches Google Analytics with your words.
  • It worked if: every tag you used yesterday has its own row in Session source / medium, and Unassigned is under 1 in 10 visits.
  • Common mistake: checking an hour later, seeing nothing, and deciding tags do not work. Reports can take 24 to 48 hours.

6. Every Sunday, count visits and signups by UTM tag and move your hours

Every Sunday, write one row per tag in your sheet: visits, and signups, enquiries or orders. After 4 Sundays, stop the tags that brought nothing and give their hours to the tag that brought the most.

You need your signup, enquiry or order set up as a key event first. If it is not, do it today with conversion tracking; without it, you can see visits by tag but not which ones turned into customers.

  1. Open Traffic acquisition, set the date to the last 7 days, and change the first column to Session source / medium. Write down Sessions and Key events for each tag.
  2. Change the first column to Session campaign to compare campaigns, such as outreach against always-on.
  3. Add the answers to "Where did you hear about us?" from your signup form or first call. People name things no tag can see, like a friend or a podcast. This is self-reported attribution. It fills the gaps your tags leave, and the two together are your attribution.

Visits from Google search cannot carry your tags. Read those in Google Search Console and judge them on a longer clock, as in how to measure SEO success.

The rule, after 4 Sundays (about 2,800 messages and 56 posts on each channel): stop sharing on any tag with 0 signups. Move its hours to the tag with the most signups. Keep anything that brought at least 1. Visits alone decide nothing: a post that brings 200 visits and 0 signups loses to messages that bring 40 visits and 3 calls. If a tag brings visits but nobody signs up, the problem may be the page, not the channel: fix it with the SaaS website guide or the Shopify store guide.

If you run a D2C store: also check Shopify. Go to Analytics, then Reports, filter Category to Marketing, and open Sales attributed to marketing, which lists sales by UTM campaign. For one order, open it, click View conversion details, then View full sessions; the tags can take up to 48 hours to show. Then compare each tag's sales with its ad spend using your break-even ROAS.

If you run a B2B company: Google Analytics sees the enquiry but not the deal 3 months later. Save the tags with each enquiry using hidden fields in your form (Tally's are free), and copy them into your CRM with the deal. The full method is in how to track which channel brought each deal.

If you run a SaaS: count trials and paying users per tag, not only signups. A tag that brings signups who never use the product is not your best tag; check it against your activation rate.

  • Tool: Google Analytics 4, Google Sheets, and Shopify Analytics if you sell on Shopify.
  • Time: 30 minutes every Sunday.
  • You will have: one row per tag per week, and a clear answer on where your customers come from.
  • It worked if: every signup, enquiry or order this week has a tag or a "where did you hear about us" answer next to it.
  • Common mistake: judging after one week or 50 messages. At this size, one week of numbers is noise. Wait for 4 Sundays.

Once you know which tag brings customers, work out what each customer costs on it, and bring the sheet to your monthly marketing review. If one channel clearly wins, choose the next one to add only after it is full, and fit the hours into your week.

See it done: Quillfox after 4 Sundays

4 Sundays, by tag

Tag (source / medium, campaign)VisitsCalls bookedNew clients
linkedin / social, always-on21230
linkedin / social, outreach9641
cold-email / email, outreach6110
newsletter / email, always-on2510
reddit / social, always-on3800

The decision: stop putting links in Reddit answers and move those hours into more LinkedIn messages. Keep the posts, cold email and the newsletter, since each brought at least 1 call.

Why it works: It moves hours by calls booked, not visits: LinkedIn posts brought the most visits, but LinkedIn messages brought the most calls and the client.

Your UTM checklist for the next 4 weeks

0 of 11 done

Work through this list with an AI assistant

It drafts the work and keeps track of what is done.

Step 1 · Write a UTM naming sheet

Step 2 · Build each UTM link

Step 3 · Put tagged links in bios, signature and QR codes

Step 4 · Tag every link you post or send

Step 5 · Check each new link reaches Google Analytics

Step 6 · Count visits and signups by tag every Sunday

Frequently asked questions

Why do my UTM links show as Unassigned in GA4?

Usually the medium is a made-up word, such as "newsletter" or "show-notes", and the source is not a site Google knows either. Google Analytics only sorts visits into channels by its own lists. Use social for social posts and messages, email for email, referral for other sites, and paid-social or cpc for ads. New visits land in the right channel once you fix the link.

Are UTM parameters case sensitive?

Yes. Google Analytics treats utm_source=LinkedIn and utm_source=linkedin as two different sources, so your numbers split across two rows. Use lowercase for every tag, every time. The sheet formula in step 2 changes everything to lowercase for you.

Do I need UTM parameters on Google Ads?

No. Leave auto-tagging on in Google Ads and link it to Google Analytics. Google Analytics uses Google's own click tag before your UTM tags, so tags you add by hand are ignored for source and medium. Do add tags to Meta ads, LinkedIn ads and Reddit ads.

Can I use UTM parameters on a QR code?

Yes. A QR code only holds a link, so build the tagged link first, then turn it into a QR code. Google's Campaign URL Builder shows one for each link it makes. Use the event, flyer or card as the source and referral as the medium. Scan it once with your phone before you print anything.

Should I tag links that ChatGPT shows to people?

You cannot, and you do not need to. ChatGPT adds utm_source=chatgpt.com to the links in its answers by itself, and Google Analytics also has an AI Assistant channel. To count those visits and check whether ChatGPT names you, follow how to track AI traffic and ChatGPT mentions.

Sources

  1. 1.[GA4] Collect campaign data with custom URLs — Google Analytics Help, checked 12 October 2026
  2. 2.[GA4] Default channel group — Google Analytics Help, checked 12 October 2026
  3. 3.[GA4] Traffic-source dimensions, manual tagging, and auto-tagging — Google Analytics Help, checked 12 October 2026
  4. 4.[GA4] Traffic acquisition report — Google Analytics Help, checked 12 October 2026
  5. 5.[GA4] Realtime report — Google Analytics Help, checked 12 October 2026
  6. 6.Campaign URL Builder — Google Analytics demos and tools, checked 12 October 2026
  7. 7.About auto-tagging — Google Ads Help, checked 12 October 2026
  8. 8.Marketing reports — Shopify Help Center, checked 12 October 2026
  9. 9.Conversion summary — Shopify Help Center, checked 12 October 2026
  10. 10.Hidden fields — Tally, checked 12 October 2026
  11. 11.Automatic UTM parameters — Kit Help Center, checked 12 October 2026
  12. 12.Dynamic UTM tracking — Microsoft Learn (LinkedIn Marketing API), updated 17 August 2026
  13. 13.Does Safari strip click IDs (gclid, fbclid)? — Able CDP, 23 August 2026
  14. 14.UTM parameters not working in Google Analytics 4? Here are the solutions — Analytics Mania, 20 November 2025
  15. 15.Campaign tracking in Google Analytics 4 using UTMs — Loves Data, updated 11 September 2025
  16. 16.Why ChatGPT traffic shows as direct in GA4 — Clickport, data from April 2026, checked 12 October 2026

Next article to read

How to calculate CAC and payback periodOnce you know where buyers came from, work out what each one cost.Read it next

Guides that link here

Cite this page

Dinesh Bypilla (2026). How to use UTM parameters. Scout7 Academy. https://scout7.ai/academy/measurement/how-to-use-utm-parameters

Written by Dinesh Bypilla, Agentic systems engineer at Scout7. Reviewed by Murali Sid. Last checked 12 October 2026.

Quote any part of this guide with a link back to this page. © 2026 Scout7.

Markdown version of this page: https://scout7.ai/academy/measurement/how-to-use-utm-parameters.md