Skip to content
flowpeek
flowpeek
Try free for 30 daysBook a demo(30 minutes online, opens in a new tab)

30 days for PLN 0 · first payment after the trial · cancel anytime

flowpeekresources / guides / Marketing

UTM links for online stores: tagging campaigns and sales sources

You'll create consistent UTM links for ads, newsletters and partners, and see campaign sales attributed to the right source.

9 min readUpdated: MarketingBasics

Short answer

The key answer

UTMs are parameters added to a link's URL that tell your analytics tool where a visit came from: utm_source names the source, utm_medium the channel type and utm_campaign the specific campaign. Without them, an order from a newsletter or a partner can end up under direct or unassigned traffic. What matters most is one written convention: lowercase only, a fixed dictionary of sources and mediums, and no UTMs on links inside the store.

  • Five parameters and their role in reports
  • A naming dictionary that doesn't split a channel into several rows
  • Checking links before sending and after publishing

Key terms in plain language

UTM parameter
A tag added to a link address, e.g. utm_source=newsletter, that tells the analytics tool where the visit came from.
Source and medium
Source says where the visit came from (e.g. newsletter); medium says what kind of channel it is (e.g. email).

1. Learn the parameters and their roles.

A tagged link looks like this: yourstore.com/shoes?utm_source=newsletter&utm_medium=email&utm_campaign=autumn_sale_2026. The part after the question mark doesn't change the page the customer sees. It only passes a description of the visit to your analytics tool. Parameters are joined with the & sign.

Google recommends using at least three parameters in every tagged link: utm_source, utm_medium and utm_campaign. Missing fields show up in reports as "(not set)". utm_content is useful when one email or ad contains several links to the same page, and utm_term is mainly used for keywords in search campaigns. Parameter values are case-sensitive: to Google Analytics, "Newsletter" and "newsletter" are two different sources.

1. Learn the parameters and their roles.
ParameterAnswers the questionExample
utm_sourceWhere did the visit come from?newsletter, facebook, partner_name
utm_mediumWhat type of channel is it?email, cpc, paid_social or affiliate
utm_campaignWhich campaign is it part of?black_friday_2026
utm_contentWhich link or creative?top_banner, bottom_button
utm_termWhich keyword?hiking_boots

2. Write down a naming dictionary before your first campaign.

The most common problem with UTMs isn't missing tags, but several names for the same channel. One person types "facebook", another "fb", a third "Facebook". The report ends up with three rows, and sales from one channel get spread across them. So before your first campaign, prepare a short sheet with the allowed source and medium values and share it with everyone who creates links: your agency, the person running the newsletter and your partners.

Choose mediums so that the tool recognizes the channel. Google Analytics 4 assigns traffic to default channels according to rules: the medium "email" goes to the Email channel, "affiliate" to Affiliates, and a medium starting with "paid" or containing "cp", combined with a source from the list of social networks, to Paid Social. A made-up medium, e.g. "newsletter" instead of "email", may not match any rule and land in the Unassigned group. For channels outside these rules, such as creator collaborations, you can create a custom channel group in GA4.

2. Write down a naming dictionary before your first campaign.
Channelutm_sourceutm_medium
Newsletternewsletteremail
Meta adfacebook or instagrampaid_social
Organic social media postfacebook or instagramsocial
Partner or affiliate programpartner_nameaffiliate
Creator collaborationinstagram, tiktok or youtubeinfluencer

3. Tag only links that lead to the store from outside.

UTMs describe an entry from outside the store. Don't add them to banners on the home page, menu links or buttons in the cart. A customer who came from an ad and clicked a tagged internal banner may be recorded as if they came from a "campaign" on your own site, and the real source of the visit disappears from the report. Use click events to measure internal banners.

Check your paid campaigns too. Google Ads and Meta can append their own click IDs to links, e.g. gclid or fbclid. Don't remove them when editing the URL. If you add manual UTMs to ads, use the same dictionary as in your other channels, so the same campaign doesn't appear in reports under two names.

4. Check the link before publishing.

Open the finished link in a private browser window and check the URL once the page loads. Redirects, e.g. from http to https, from the non-www version or from a link shortener, sometimes drop parameters. If the utm_ part is no longer in the URL after you land, the visit won't be recorded the way you planned. Also make sure the landing page exists and shows the offer the campaign promotes.

Keep links in a single sheet: date, channel, full URL, person responsible. This makes it easier to read the report later and fix a mistake mid-campaign. After publishing, look at the live traffic or sources report and check whether the new campaign appears under the planned name. It's better to fix a link after the first hour than after a week.

  • The parameters are visible in the URL after all redirects.
  • The values are lowercase and match the dictionary.
  • The link doesn't lead to an error page or an empty category.
  • The campaign appears in the report under the planned name.

5. Read sources together with sales.

A tagged link describes a visit, not an order. To see sales next to a source, the tool has to connect the purchase with an earlier visit. Some orders will always be left without a source: the customer may have switched devices or come back after longer than the attribution window, and in some tools consent to tracking matters as well. Such orders should be shown separately, not added to direct traffic.

In Flowpeek, the source of a visit is recognized from the link parameters and the referring page, and sessions with no evidence of acquisition are counted separately as unassigned. If the share of direct or unassigned traffic grows after a campaign launches, start by checking the links before you judge the channel itself. How sales are assigned to sources depends on the attribution model, so when comparing campaigns, write down which model you're using.

Traffic sources report in Flowpeek: top sources, channel share of sessions and a separate count of unassigned sessions
Traffic sources report. Sessions with no evidence of acquisition are shown separately as unassigned (here 18 out of 30,526), not added to direct traffic.

Common mistakes

01

Several names for the same source

"fb", "facebook" and "Facebook" create separate rows. Stick to the dictionary and lowercase.

02

UTMs on internal banners

Tagging a link inside the store can overwrite the real source of the visit. Measure banner clicks with events.

03

Judging a channel without checking the links

A rise in direct traffic after a newsletter send may mean missing tags, not a sudden surge in brand popularity.

For your next review

Checklist

  • We have a written dictionary of sources, mediums and campaign names.
  • Every external link has utm_source, utm_medium and utm_campaign.
  • Values are written in lowercase, without spaces or accented characters.
  • Internal links in the store don't have UTM parameters.
  • After publishing, we checked that the campaign appears in the report under the right name.

Now your store

Clean up one month of tags.

  1. 1

    List all source and medium values from the last month in the sources report.

  2. 2

    Mark the ones that describe the same channel under different names, and pick one name for each.

  3. 3

    Prepare a dictionary and a link template, then fix the links in active campaigns.

From report to decision

Example: the newsletter that kept disappearing from the report

A practice example. The situation is made up, but it shows the path from a problem to a naming convention.

Observation
On newsletter send days, direct traffic rises, while the Email channel has only a handful of sessions.
Cause
Some links in the email have no UTMs, and the rest have utm_medium=Newsletter instead of email.
Fix
Link template: utm_source=newsletter, utm_medium=email, utm_campaign=send_name, utm_content=link_position.
Check
After the next send, we check the report an hour later and compare the number of sessions with the clicks in the email tool.

The channel is visible under one name, and orders from a send can be linked to a specific campaign. Judging the newsletter is based on data, not guesswork.

Questions and answers

Does letter case matter in UTMs?

Yes. In Google Analytics, parameter values are case-sensitive, so "Facebook" and "facebook" are two sources. The simplest approach is to write everything in lowercase.

Do I need to add UTMs to Google Ads ads?

Google Ads can tag clicks automatically. Manual UTMs are useful when you want to describe a campaign the same way across several tools. In that case, use the same naming dictionary as in your other channels.

Why do some orders have no source despite tagged links?

UTMs describe a visit. An order may not be connected to a visit, e.g. after a device switch or a purchase made much later. Such sales should stay visible as unassigned.

Read the next guide.

All guides

Free · 30 minutes · online

GA4, your store and your ads show different numbers? We'll check it with you.

We compare one month of sales across your tools and point out three fixes to your measurement. No strings attached. What we check

Book a free review(online meeting, opens in a new tab)

30 days on your own data

Check whether your campaigns land in the right sources.

In a 30-day Flowpeek trial, you'll see the sources of visits and orders, including unassigned traffic shown separately. We'll handle the setup within 48 hours and help you check how your campaigns are tagged.

  • No fixed-term contract
  • We set everything up for you in 48 h
  • App servers in Germany (EU)
  • Cancel anytime