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.
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.
| Parameter | Answers the question | Example |
|---|---|---|
| utm_source | Where did the visit come from? | newsletter, facebook, partner_name |
| utm_medium | What type of channel is it? | email, cpc, paid_social or affiliate |
| utm_campaign | Which campaign is it part of? | black_friday_2026 |
| utm_content | Which link or creative? | top_banner, bottom_button |
| utm_term | Which 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.
| Channel | utm_source | utm_medium |
|---|---|---|
| Newsletter | newsletter | |
| Meta ad | facebook or instagram | paid_social |
| Organic social media post | facebook or instagram | social |
| Partner or affiliate program | partner_name | affiliate |
| Creator collaboration | instagram, tiktok or youtube | influencer |
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.

Common mistakes
Several names for the same source
"fb", "facebook" and "Facebook" create separate rows. Stick to the dictionary and lowercase.
UTMs on internal banners
Tagging a link inside the store can overwrite the real source of the visit. Measure banner clicks with events.
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
List all source and medium values from the last month in the sources report.
- 2
Mark the ones that describe the same channel under different names, and pick one name for each.
- 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.
From knowledge to report
Open the right module.
Traffic sources
See where visitors come from, whether ads, search or e-mails, and which sources lead to orders, not just clicks.
Multi-channel attribution
Flowpeek combines its own visit tracking with your store's orders and attributes sales to channels using the model you choose. Compare six models and see which sources start, support and close a purchase.
Live traffic
See current visits, the pages being viewed and where customers came to your store from. Open the details for a specific person and see what they're doing at this moment.
Read the next guide.
All guidesAnalytics / 10 min
Why do GA4, your store and your ads show different results?
Align dates, revenue definitions and attribution. Compare specific orders, find the source of the discrepancy and agree on a shared reporting rule.
Marketing / 11 min
How to measure influencer sales: code, link and time window
Give each creator their own code and UTM link, set the time window before the post goes live and compare sales with a baseline. Calculate the cost per new customer.
Sales / 11 min
Black Friday for online stores: what to measure before, during and after
Black Friday 2026 falls on November 27. Record a baseline, define signals for the sale days and judge the result after discounts, returns and ad costs.
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
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
30 days for PLN 0 · first payment after the trial · cancel anytime
See pricing after the trial