Campaign tagging
Free UTM builder for clean campaign URLs.
A campaign URL builder that lints your naming, supports GA4 parameters and ad-platform macros, and lets you add any custom parameter.
Tag every link the same way, every time. Paste a destination, pick a channel quick start or fill in source, medium, and campaign, then add GA4 parameters or any custom key=value pair. The builder flags inconsistent casing and spacing before they fragment your analytics and previews exactly how each parameter lands in your reports.
Your campaign URL
Enter a destination URL.
How EndFrame parses this
Fill in the fields to see how each parameter is read into your EndFrame reports. Custom parameters are kept on the visit as extra attributes.
How it works
From link to clean data in three steps.
- 1
Paste your destination URL
Drop in the page you're linking to. No https:// needed — we add it and validate the result. Paste a link that already carries UTMs and we split it back into fields.
- 2
Fill in source, medium & campaign
These three are required. Use a Quick start for Google Ads, Meta, LinkedIn, or email, open the GA4 parameters, and add custom parameters like promo codes or partner IDs.
- 3
Copy or save your tagged URL
Grab the finished link, or save it as a preset so your team reuses the exact same naming pattern next time.
Why it matters
Why marketers keep this one bookmarked.
Consistent naming, clean reports
Google and google are two different rows in every analytics tool. The linter catches casing, spacing, and stray characters before they split your data in half.
Any parameter, not just utm_
Add promo codes, affiliate IDs, experiment flags, or ad-platform macros like {keyword} and {{ad.name}} as custom key/value pairs — encoded correctly, every time.
Built for GA4 and EndFrame
Supports utm_id, utm_source_platform, utm_creative_format, and utm_marketing_tactic, and previews exactly how each parameter is read into your attribution reports.
FAQ
Questions, answered.
What are UTM parameters?
UTM parameters are tags you add to a URL (utm_source, utm_medium, utm_campaign, and optionally utm_term and utm_content) so analytics tools can attribute a visit to a specific campaign, channel, and source. GA4 also reads utm_id, utm_source_platform, utm_creative_format, and utm_marketing_tactic.
Which UTM parameters are required?
Source, medium, and campaign are the three that matter most and are required here. Term and content are optional — use them for paid search keywords and to distinguish creative or link variants. The GA4 parameters are optional too.
What is the difference between utm_source and utm_medium?
utm_source names where the click came from — a specific site, platform, or list such as google, facebook, or newsletter. utm_medium describes the channel type — cpc, email, paid-social, social, or referral. Keeping the two separate is what lets GA4 and EndFrame group traffic into channels.
Can I add custom parameters that are not UTMs?
Yes. Use the Custom parameters section to add any key=value pair — promo codes, partner or affiliate IDs, experiment flags, or internal tracking IDs. They are URL-encoded and appended alongside the UTMs, and the builder warns you if a key collides with a utm_ field or is duplicated.
Should UTM values be lowercase?
Yes. Analytics tools treat values as case-sensitive, so Summer-Sale and summer-sale become separate rows. Keep everything lowercase and hyphenated — the Clean values button does it for you without touching ad-platform macros.
Does it work with Google Ads ValueTrack and Meta dynamic parameters?
Yes. Macros such as {keyword}, {creative}, and {{ad.name}} are left unencoded in the final URL so the ad platform can fill them in at click time, and the linter ignores them. For Google Ads, remember auto-tagging adds gclid on top of any UTMs you set.
How is this different from Google's Campaign URL Builder?
Google's builder generates the same utm_ query string but does not lint your naming, support custom parameters, save presets, or split an existing link back into fields. This one does all four, and previews how the parameters map into server-side attribution.
Do these links work with EndFrame?
Yes. EndFrame reads utm_* parameters on every visit and stores any other query parameters alongside them, so the campaigns you tag here report server-side conversions per campaign, source, and custom parameter — even when iOS and ad blockers hide the original click.
Reference
Every UTM parameter, explained.
UTM parameters are query-string tags appended to a link so analytics tools can attribute the visit to a campaign. The classic five come from Urchin (the product that became Google Analytics); GA4 added four more for cost imports and creative reporting. Every one of them is a plain key=value pair, which is also why this builder lets you add any custom parameter alongside them.
| Parameter | Required? | What it captures | Example values |
|---|---|---|---|
| utm_source | Required | Where the traffic comes from — a site, platform, or list. | google, facebook, newsletter |
| utm_medium | Required | The marketing channel or how the link was delivered. | cpc, email, paid-social, social |
| utm_campaign | Required | The promotion, launch, or initiative the link belongs to. | spring-sale, product-launch-q3 |
| utm_term | Optional | The paid keyword or audience that triggered the click. | running-shoes, {keyword} |
| utm_content | Optional | Which creative, link, or button was clicked when several point to one page. | hero-cta, footer-link, video-a |
| utm_id | Optional (GA4) | A campaign ID GA4 uses to join cost data imports to sessions. | spring25-001 |
| utm_source_platform | Optional (GA4) | The buying platform that manages the campaign. | google-ads, meta-ads, dv360 |
| utm_creative_format | Optional (GA4) | The creative type shown to the user. | display, video, carousel |
| utm_marketing_tactic | Optional (GA4) | The targeting approach behind the buy. | prospecting, retargeting, remarketing |
Naming convention
UTM naming examples for the channels you tag most.
Pick one spelling per source and medium and never improvise. These values match what GA4 uses to group traffic into default channels (paid search, paid social, email, organic social, referral), so your reports fill the right buckets automatically. The Quick start buttons above apply them in one click.
| Channel | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Google Ads search | cpc | brand-search-us | |
| Meta (Facebook & Instagram) ads | paid-social | spring-sale-prospecting | |
| LinkedIn ads | paid-social | webinar-june-abm | |
| Email newsletter | newsletter | 2026-09-issue-14 | |
| Organic social post | social | launch-teaser | |
| Partner or affiliate link | partner-name | referral | co-marketing-q4 |
Four rules cover almost every mistake: lowercase everything, separate words with hyphens, keep utm_source to the platform name (not the ad account or the campaign), and reserve utm_medium for the channel type. Our guide to fixing UTM parameters that break reports walks through the normalization side once traffic arrives.
Custom parameters
When to go beyond utm_ with custom parameters.
UTMs describe the campaign. Anything that describes the person, the offer, or the experiment belongs in its own parameter so it never fragments your channel reporting:
Promo and discount codes
promo=spring25 keeps the offer separate from the campaign name, so one campaign can run several codes without splitting its rows.
Partner, affiliate, and referrer IDs
ref=partner-42 or affiliate_id=1088 identifies who sent the click while utm_source stays a clean channel value.
Experiment and variant flags
variant=b or exp=hero-test lets landing-page tests read their arm from the URL without touching utm_content.
Ad-platform macros
Google Ads ValueTrack ({keyword}, {creative}) and Meta dynamic parameters ({{ad.name}}) are left unencoded so the platform can fill them at click time.
EndFrame stores custom parameters on the visit alongside the UTMs, so server-side conversions can be reported by promo code or partner as well as by campaign. Not sure which tags your site is actually collecting? Run the free tracking audit or check what pixels a page loads with the pixel inspector.
By channel
UTM builders pre-filled for each channel.
Each guide opens the builder with that platform's convention and covers its own quirks: dynamic macros, auto-appended click IDs, and which GA4 channel the values land in.
Paid search
Google Ads UTM builder
Build Google Ads UTM parameters with ValueTrack macros like {keyword} and {creative} left unencoded. Free UTM builder pre-filled with the google / cpc convention.
Paid social
Facebook & Instagram Ads UTM builder
Build Meta ad UTMs with dynamic parameters like {{campaign.name}} and {{ad.name}}. Free UTM builder pre-filled with the facebook / paid-social convention GA4 expects.
Organic social
Instagram UTM builder
Build UTM links for your Instagram bio, stories, and posts so organic traffic reports separately from paid. Free builder pre-filled with the instagram / social convention.
Paid social
LinkedIn Ads UTM builder
Build LinkedIn Ads UTM parameters that land in GA4's Paid Social channel. Free UTM builder pre-filled with the linkedin / paid-social convention for sponsored content.
Paid social
TikTok Ads UTM builder
Build TikTok Ads UTM parameters with dynamic macros like __CAMPAIGN_NAME__ and __AID_NAME__. Free builder pre-filled with the tiktok / paid-social convention GA4 expects.
Email marketing
Email UTM builder
Build UTM links for newsletters and email campaigns that land in GA4's Email channel. Free builder pre-filled with the newsletter / email convention, plus ESP auto-tagging tips.
Free tools, free trial
UTMs are step one. Attribution is the payoff.
EndFrame reads these exact parameters and credits each server-side conversion to its campaign and source — so the campaigns you tag here report conversions, even when iOS and ad blockers hide the click.
No credit card required