UTM builder: free campaign URL builder | Orwel
Free tool Updated October 21, 2026

UTM builder: free campaign URL builder with utm_id

A UTM builder adds campaign parameters to a landing page URL so analytics tools know where each visit came from. Enter the URL, utm_source, utm_medium and utm_campaign, optionally utm_id, utm_term and utm_content, and copy the tagged link. Keep values lowercase and consistent so one campaign never splits into several rows.

Orwel is an event analytics SDK for startups, developers and vibe coders that maps feature adoption and conversion funnels, and feeds the results back to AI agents through MCP.

Preset
Replace spaces with
Values are lowercased.
Your link
https://example.com/pricing?utm_source=google&utm_medium=cpc&utm_campaign=launch_week

Runs in your browser. Nothing you type is sent or stored.

How to use the UTM builder

  1. Paste the page people should land on into Website URL. If it already has query parameters or a #fragment, the builder keeps them.
  2. Pick a preset (Google Ads, Meta Ads, LinkedIn, Newsletter or X) to prefill source and medium, or type your own.
  3. Fill in utm_campaign. Add utm_id if the ad platform gives you a campaign ID, and utm_term or utm_content if you need them.
  4. Choose whether spaces become hyphens or underscores. Values are lowercased for you, and the builder warns you about mixed case or spaces.
  5. Press Copy and paste the UTM URL into your ad, post or email.

Everything runs in your browser. There is no account and nothing you type is sent anywhere.

What each UTM parameter means

Parameter Required What it records Example
utm_source Yes Who sent the visit: the site, platform or list google, meta, newsletter
utm_medium Yes The type of channel cpc, paid, email, social
utm_campaign Yes The campaign, promo or launch name spring_sale
utm_id No The campaign ID, a stable key for the campaign 120210000000
utm_term No The paid keyword event_analytics
utm_content No Which creative or link inside the campaign hero_button, footer_link

Google Analytics asks you to always set utm_source, utm_medium and utm_campaign, and describes utm_id as the campaign ID. Missing values show up as "(not set)" in GA4 reports. See Google's URL builders help page.

Naming conventions that keep reports clean

Parameter values are case sensitive. Google Analytics treats utm_source=google and utm_source=Google as two different sources, and recommends lowercase as the standard. A few rules that avoid most cleanup:

  • Lowercase everything. The builder does this for you.
  • Pick one separator. Hyphens or underscores, never both, never spaces.
  • Keep a short list of mediums. For example cpc for search ads, paid for paid social, email for newsletters, social for organic posts. Write the list down and share it.
  • Name campaigns the same way everywhere. q4_launch in LinkedIn and Q4-Launch in email are two campaigns in every report.
  • Always add utm_id when you have a campaign ID. A campaign name changes when someone renames it. The ID does not.

Examples by channel

Google Ads

Leave auto tagging on in Google Ads. It adds a gclid to every click, and Google Ads uses it to track conversions and to share cost data with Google Analytics. In GA4, auto tagging takes priority over manual UTMs (Google Ads help on auto tagging). UTMs are still useful for every other tool that reads the URL. Put them in the tracking template or final URL suffix with ValueTrack parameters so Google fills in the ID (ValueTrack parameters):

utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_id={campaignid}

Meta Ads (Facebook and Instagram)

Meta adds an fbclid to clicks, but Meta has no click level report, so that ID alone cannot tell you which campaign paid for the visit. Set the ad's URL parameters with Meta's dynamic parameters (Meta help on dynamic URL parameters):

utm_source=meta&utm_medium=paid&utm_campaign={{campaign.name}}&utm_id={{campaign.id}}

LinkedIn

https://example.com/demo?utm_source=linkedin&utm_medium=paid&utm_campaign=q4_launch

Newsletters

Use utm_content to tell links in the same email apart:

https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=october_update&utm_content=hero_button

Common mistakes

  • Tagging internal links. UTMs on links inside your own site start a new attribution and overwrite the real source. Only tag links that point to your site from outside.
  • Mixed case and spaces. Facebook, facebook and face book become three sources.
  • No utm_id on paid campaigns. Renaming the campaign breaks the match between visits and spend.
  • Putting personal data in UTMs. Never put emails, names or user IDs in a URL. URLs end up in logs, referrers and screenshots.
  • Redirects that drop the query string. Test the final landing URL after shorteners and redirects and check the parameters are still there.
  • Only tagging some channels. Untagged traffic lands in "direct" and makes the tagged channels look better or worse than they are.

How Orwel reads UTMs and click IDs

Tagged links are only half the job. Something has to read them on landing and keep them until the visitor converts, which may be days later.

The Orwel SDK captures utm_source, utm_medium, utm_campaign, utm_term, utm_content and utm_id, plus the ad click IDs gclid, gbraid, wbraid, fbclid, ttclid, msclkid and li_fat_id (SDK 1.7.0 or newer). It keeps a first touch and a last touch across sessions and sends both with every conversion, so you never pass UTMs by hand.

With Google Ads or Meta Ads connected, Orwel joins those leads with campaign spend. Google leads are matched through the gclid. Meta leads are matched through utm_id, which is why the Meta example above includes it. The Campaigns screen then shows cost per lead, cost per qualified lead and spend that brought no qualified leads. Read more about marketing attribution in Orwel or the full guide to UTM tracking.

Why Orwel

One plan

49 USD a month, 2 USD less every paid month down to 35 USD, or 420 USD a year

No caps

Unlimited leads and visitors under fair use

2-minute install

One script or npm package, or ask your coding agent to do it

MCP server

Claude, Cursor or your own agent read real usage before the next prompt

Semantic catalog

257 ready events, so tracking is named the same in every project

Dev mode

A live debugger and development keys that keep tests out of real data

FAQ

What is a UTM URL?

A UTM URL is a normal link with campaign parameters added to the query string, such as ?utm_source=meta&utm_medium=paid&utm_campaign=spring_sale. The page works the same, but analytics tools read the parameters to credit the visit to the right source, channel and campaign.

Which UTM parameters are required?

utm_source, utm_medium and utm_campaign. Google Analytics asks for these three on every tagged link. utm_id, utm_term and utm_content are optional, though utm_id is worth adding to every paid campaign.

What is utm_id used for?

utm_id holds the campaign ID. Names change when campaigns are renamed, but the ID stays the same, so it is the safer key for joining visits with ad spend. Orwel uses it to match Meta Ads leads to their campaign.

Do I need UTMs if Google Ads auto tagging is on?

Google Analytics uses the gclid from auto tagging and gives it priority over manual UTMs. Other tools may only read UTMs, so adding them through a tracking template keeps your data consistent everywhere. Keep auto tagging on either way.

How do I build a UTM for Facebook ads?

Use utm_source=meta (or facebook, as long as you stay consistent), utm_medium=paid, and Meta's dynamic parameters {{campaign.name}} for utm_campaign and {{campaign.id}} for utm_id. Add them in the ad's URL parameters field.

Are UTM parameters case sensitive?

Yes. Google and google are reported as different sources. Use lowercase for every value and one separator, hyphens or underscores. The builder lowercases values and warns you about mixed case and spaces.

Keep reading

See what users do with what you shipped

Install in 2 minutes. 14-day free trial, one plan with everything.