How do you use this tool?
- Paste the destination URL — source, medium and campaign are required, term, content and ID optional.
- Keep auto-lowercase on so Facebook/facebook/FB do not show up as three sources in GA4.
- Check the GA4 channel-group preview — when it reads "Unassigned", the hint shows which medium token GA4 does not recognise.
- In bulk mode, paste many landing pages, one per line — the same UTM set applies to all, CSV export gives you the list to share.
- Optional: turn on team taxonomy — set the allowed source/medium values once and the tool blocks every typo afterwards.
What does the UTM Link Builder do?
The builder takes a destination URL and appends the five canonical UTM parameters plus the newer utm_id slot. You see the assembled URL live, can export it as Markdown or HTML snippet, download it as a PNG or SVG QR code or in bulk mode tag ten landing pages at once with the same parameters. The validator and GA4 channel-group hint run in real time below the form — you see immediately whether your medium token is recognised by GA4 or whether the click would land in “Unassigned”. Pure-client, no server, no account, no tracking.
Where do UTM parameters come from?
UTM stands for Urchin Tracking Module. In 2005 a company called Urchin built the first widely used web-analytics product — and defined the five tokens utm_source, utm_medium, utm_campaign, utm_term and utm_content. That same year Google acquired Urchin, integrated the product as Google Analytics and inherited the UTM convention. Ever since, it has been the industry standard for campaign attribution: every ad platform, every newsletter tool, every marketing-automation system knows the UTM shape.
GA4 — the current generation of Google Analytics — extended the convention with a sixth field in 2023: utm_id. It is optional but required when you import ad spend from external platforms (Google Ads, Meta Ads, LinkedIn Campaign Manager) as CSV into GA4 and want to link it with click data.
The convention is intentionally informal. There is no RFC, no W3C recommendation, no compliance body. UTM works because everyone agreed to it — and that is precisely why data quality is so fragile: one typo, one capital letter, one extra space, and your campaign shows up across three different reports.
Which mistakes does the pre-flight validator catch?
The builder runs five pain checks live as you type:
- Uppercase in a value —
Facebookandfacebookare two separate dimensions in GA4. With auto-lowercase on, this is silently fixed; with auto-lowercase off, it surfaces as a warning. - Whitespace in a value — spaces get encoded as
%20in URLs; that works technically, but reports become unreadable and tend to spawn duplicates (q1%20promovsq1+promovsq1-promo). - Medium not in GA4 default channel group — tag with
utm_medium=qrcodeand the click lands in “Unassigned”. The validator shows the recognised mediums and suggests what would fit. - Special characters like
&,+,#,?— those carry semantic meaning in URLs. The builder encodes them automatically but warns because they rarely appear in source lists on purpose. - Internal link — when the
utm_sourcetoken shares a hostname with the destination URL, GA4 overwrites the original session source. The builder warns the moment this combination appears so the click does not lose its attribution.
Every warning is a hint pill, not a hard stop. The URL is still built — you just see what to fix or knowingly accept.
How does convention lock work?
Inconsistent naming conventions are the most common UTM bug. A solo marketer who tags today forgets tomorrow whether they wrote facebook or fb or Facebook. A three-person team is guaranteed to produce three variants of the same value.
In the Team taxonomy block you enter the allowed values per field, comma-separated. Example for utm_source:
newsletter, google, facebook, linkedin, partner
After saving, those values appear as quick-pick chips below the input. Click a chip → value applied. Type something else — Instagram, mc, Insta — and the field gets a red outline plus the hint “Value is not in the team taxonomy”. You can still save it, but you see you are stepping outside the agreed set.
Optionally you can define a Campaign pattern, e.g. {year}_{product}_{region} — which matches values like 2026_promo_eu but not promo-2026 or q1. Three templates ship as quick picks in the convention editor:
| Template | Example | Fits |
|---|---|---|
{year}_{product}_{region} | 2026_promo_eu | Seasonal campaigns per market |
{quarter}_{objective} | q1_leadgen | Performance campaigns on a quarterly rhythm |
{month}_{product} | 03_pricing-launch | Monthly newsletters with a fixed schema |
The full convention is stored as JSON in browser LocalStorage. It survives tab closes, browser restarts and routine cache clears — only an explicit cookies + LocalStorage wipe removes it. Team members copy the list manually; we deliberately do not offer cloud sync because that would require accounts, an auth layer and servers that would unwind every other privacy promise.
When does bulk mode pay off?
As soon as you want to tag more than three URLs. The “Multiple URLs” mode accepts one URL per line, applying the same UTM set to each. You get a two-column table (input ↔ output), a summary line (“7 of 10 URLs built successfully”) and three actions:
- Copy all — every valid UTM URL lands in the clipboard as a list, one per line.
- Export CSV — RFC-4180 compliant CSV with the columns
input_url,output_url,has_error,first_error_message. Opens directly in a spreadsheet or imports into your newsletter tool. - Errors stay visible — an invalid line (bad URL shape, wrong protocol) is flagged in red with the specific error. You never lose the information.
Typical bulk use cases:
- Newsletter with ten CTA buttons — each button points to a different landing page but shares utm_campaign so you can compare conversion.
- Cross-platform posting — the same promo page posted on Facebook, LinkedIn, X — each platform gets its own UTM-tagged URL.
- Influencer campaign with twenty creators — the same landing page, but a unique utm_content per creator for performance differentiation.
How does the GA4 channel-group preview help?
Once utm_source and utm_medium are filled in, a hint block appears below the form:
→ GA4 will report this as Email
The builder maps the most common source/medium combinations onto the GA4 default channel groups (Direct, Organic Search, Paid Search, Paid Social, Organic Social, Email, Affiliates, Display, Referral, Video, Audio, SMS, Push). When your medium is not recognised, the hint shows Unassigned in red — you know immediately that GA4 would bucket the click as Unassigned, where it is invisible in most standard reports.
The mapping approximates GA4’s logic, it is not a 1:1 replica — Google updates its official channel-group logic occasionally with source-specific rules we do not all replicate. The hint is a directional signal, not an audit. If channel-group distribution is mission-critical, verify in GA4 itself.
Which tools are related?
More tools from the kittokit ecosystem that fit UTM workflows:
- Clean tracking URL — strips UTM and 50+ other trackers (fbclid, gclid, mc_cid) from URLs before you share them. Mirror image of the builder.
- QR code generator — when you need UTM URLs as QR outside this tool, with extended modes for Wi-Fi and vCard.
- URL encoder & decoder — when you want to test UTM values with exotic characters (emoji, special chars), the encoder is the clean pre-check.
Frequently asked questions?
The answers to the key questions are in the FAQ block at the top — they are emitted as JSON-LD (FAQPage) for search engines and answer voice-search queries directly.
Last updated: