Free tool

UTM builder

Build tagged links for email, SMS, WhatsApp, push and ads, one at a time or hundreds from a sheet. Set your own naming rules, keep your CRM's personalisation tags, and see which GA4 channel every link lands in before you send it. Free, no sign-up, nothing leaves your browser.

Built by Raviraj Ramavarapu, founder of Compound Lab. Channel rules checked against Google Analytics Help, October 2026.

  1. 1Paste the page you are linking to
  2. 2Pick the channel and the tool sending it
  3. 3Copy the link, or check one you already have

What is a UTM link?

A UTM link is a normal web address with tags on the end, such as ?utm_source=clevertap&utm_medium=email&utm_campaign=diwali_sale_2026. When someone clicks it, Google Analytics reads the tags and records where the visit came from. UTM stands for Urchin Tracking Module, after Urchin, the analytics company Google bought in 2005 and turned into Google Analytics.

A UTM builder adds those tags for you, in the right format, so you don't type them by hand. You'll also see it called a UTM generator, UTM maker, UTM code generator, UTM link builder, campaign URL builder or Google Analytics URL builder. Google has its own Campaign URL Builder, which does the basics. This one adds channel presets for CRM, your own naming rules, bulk links from a sheet, a link checker and a check of the GA4 channel each link lands in.

Tags matter most for CRM. Clicks from email apps and WhatsApp often arrive without a referrer, so untagged visits tend to show up as Direct, and the campaign that earned them gets no credit.

How to create a UTM link

  1. Paste the page you want people to land on, such as a collection or product page.
  2. Pick the channel: email, SMS, WhatsApp, push, in-app, Meta ads, influencer or QR on pack. The medium fills in for you.
  3. Pick the tool sending it, such as CleverTap or MoEngage. That becomes the source.
  4. Name the campaign, for example diwali_sale_2026, and add utm_content if the message has more than one link.
  5. Check the GA4 channel box, then copy the link into your campaign. If your CRM or ad platform has its own field for tags, click Copy tags only. For many links, switch to Many links and download the CSV.

Already have a link and want to know if it's tagged right? Open Check a link, the UTM checker built into the tool, and paste it. It reads every UTM tag and tells you where GA4 will put the visit.

The UTM parameters

Google lists these parameters in its URL builders help page. It says to always use source, medium and campaign. Leave one out and GA4 shows (not set) in its place.

ParameterWhat it recordsExampleWhen to use it
utm_sourceWho sent the visit. Google calls it the referrer.clevertap, facebookAlways
utm_mediumThe marketing medium. For CRM, that is the channel.email, sms, whatsapp, pushAlways
utm_campaignThe offer, product or promotion.diwali_sale_2026Always
utm_contentWhich creative or link was clicked.hero_banner, variant_bWhen a message has more than one link, or you test two versions
utm_termThe paid keyword.kurta_womenPaid search
utm_idA campaign ID.cmp_1042When you import cost data into GA4

What is utm_source?

utm_source names who sent the visit: a tool like clevertap, a site like facebook, or a newsletter. It's the first thing GA4 shows in the Session source / medium report, so keep the names short and the same every time.

What is utm_medium?

utm_medium is the type of marketing. GA4 uses it to sort visits into channels: email lands in Email, sms in SMS, anything ending in push in Mobile Push Notifications. Get the medium wrong and the visit lands in the wrong channel, or in Unassigned.

What is utm_campaign?

utm_campaign is the name of the offer or journey, such as diwali_sale_2026 or cart_reminder. Use the same name on every channel in a campaign, so one filter in GA4 shows email, SMS and WhatsApp side by side.

What is utm_content?

utm_content tells apart links in the same message: the banner, the button and the footer link in one email, or version A and B of a test. Same campaign, different content.

What is utm_term?

utm_term was made for paid search keywords. With Google Ads linked to GA4 and auto-tagging on, GA4 gets keywords from Google Ads itself, so most teams leave it empty. Some use it for the audience or segment, such as lapsed_90d, which works as long as everyone uses it the same way.

GA4 also reads utm_source_platform, utm_creative_format and utm_marketing_tactic. Most CRM teams never need them. If you do, or you need your own parameters like ref or aff_id, add them under More fields in the tool.

utm_source vs utm_medium: the naming rule for CRM

This is where most CRM teams get stuck. If CleverTap sends a WhatsApp message, is CleverTap the source or the medium? Is WhatsApp?

Google's own definitions answer it. Source is who sent the visit. Medium is the kind of marketing. So the tool that sent the message is the source, and the channel is the medium. That is the convention this builder uses.

What you are sendingutm_sourceutm_mediumGA4 channel
Email from CleverTapclevertapemailEmail
SMS from MoEngagemoengagesmsSMS
Push from WebEngagewebengagepushMobile Push Notifications
WhatsApp from Kwik EngagekwikengagewhatsappUnassigned, until you add a channel
In-app message from CleverTapclevertapin_appUnassigned, until you add a channel
Meta adfacebook or instagrampaid_socialPaid Social
Influencer storyinstagraminfluencerOrganic Social
QR code on a pack insertpack_insertqrUnassigned, until you add a channel

Two reasons it works this way round. GA4 sorts visits into channels mostly by medium, so putting the channel there gives you Email, SMS and Push without any setup. And keeping the tool in source lets you compare tools, which matters when you run two or move from one to another.

The trap is utm_source=whatsapp. WhatsApp is on Google's list of social sites, so those visits land in Organic Social, mixed in with your Instagram posts. Your CRM numbers drop and your social numbers rise, and neither is true.

How to give WhatsApp its own channel in GA4

GA4's default channels include Email, SMS and Mobile Push Notifications, but not WhatsApp. A link with utm_medium=whatsapp matches none of the default channel rules, so GA4 shows it as Unassigned. Keep the name and fix it once with a custom channel group:

  1. In GA4, open Admin, then Data display, then Channel groups. You need Editor access.
  2. Click Create new channel group. GA4 starts you with a copy of the default channels.
  3. Name it, for example "Channels with WhatsApp".
  4. Add a channel called WhatsApp with the condition: Medium exactly matches whatsapp. Do the same for in_app or qr if you use them.
  5. Click Reorder and drag your new channels to the top. GA4 puts each visit in the first channel it matches.
  6. Save the group, then choose it in your acquisition reports in place of the default channel group.

Per Google's custom channel groups page, the new group applies to your past data in reports as well (audiences only change from then on). A standard property can have two custom groups, with up to 50 channels in each.

Make the builder fit your team

The presets are built for CRM, but every part can be changed to match how your team already tags links.

  • Your naming rules. Lowercase is on by default because Google treats values as case sensitive. If your team uses capitals on purpose, switch to Keep what I type. Spaces can become underscores, hyphens or nothing. Tick Remember, and the rules stay in this browser for next time. Nothing is sent to us.
  • Your own sources. Add the names your team uses, such as newsletter or app_inbox, and they show up as one-click options on every channel.
  • Personalisation tags stay as they are. {{first_name}} and other Liquid or Jinja tags, *|FNAME|* from Mailchimp, {#url#} from DLT templates, {keyword} from Google Ads and Meta's {{campaign.name}} are kept exactly as typed, in the address and in the tags, so your tool can fill them in when it sends.
  • App links work. Paste yourapp://product/123 and the tags go on it. They only reach your analytics if the app reads them, through Firebase or your attribution tool.
  • Click IDs are removed. A link copied from your browser often carries gclid or fbclid from someone's ad click. Reusing them sends visits to the wrong campaign, so the builder takes them out and tells you.
  • Bulk from a sheet. Paste two columns from Google Sheets or Excel, or add a header row (url, source, medium, campaign, content, term) and each row can set its own values. Download the result as a CSV that opens cleanly in Excel, Hindi included.

Where to see UTM tracking in GA4

In GA4, open Reports, then Acquisition, then Traffic acquisition. The table starts on Session default channel group, which shows the channel each link landed in. Switch the dimension above the table to Session source / medium to see clevertap / email and the rest, or to Session campaign to compare campaigns. Visits only show up after someone clicks, and GA4 can take up to two days to process them.

Naming rules that keep reports clean

  • Lowercase everything. Google says parameter values are case sensitive, so Diwali and diwali become two rows. The builder lowercases for you.
  • Underscores, no spaces. Spaces turn into %20 or + in the address, and a stray space makes another row.
  • One campaign name across channels. Use diwali_sale_2026 on email, SMS, WhatsApp and push, so one filter shows the whole campaign.
  • Use content for the link, not the campaign. Banner, button and footer links in one email share a campaign and differ in utm_content.
  • Keep "shop" out of campaign names. GA4's Organic Shopping rule matches campaign names containing "shop", so shop_now_diwali sent by email matches two channels.
  • No personal data. Never put a phone number, email address or name in a tag. Google Analytics does not allow personal data to be sent to it.
  • Write the list down. Agree the sources and mediums once and keep them in a shared sheet. The CSV download in bulk mode is a good start.

Mistakes most UTM guides don't mention

What people doWhat GA4 does with itDo this instead
utm_source=whatsapp on CRM messagesOrganic Social, because whatsapp is on Google's social listSource is the tool, medium is whatsapp
utm_medium=whatsapp with no other setupUnassignedAdd a WhatsApp channel in a custom channel group
A paid Meta ad tagged utm_medium=socialOrganic Socialpaid_social, which matches GA4's paid rule
utm_source=x for posts on XNot counted as social, because x is not on Google's listtwitter, which is on the list
Email on one link and email on anotherThe same channel, but two rows in the source and medium reportLowercase every value

Sources: Google Analytics Help, default channel group and its list of sources and categories, URL builders and custom channel groups. Checked 16 October 2026.

Tracking is where retention reporting starts

Clean tags are what let you say which flow, channel and message brought revenue back. For what to measure once the tags are in, read CM1, CM2 and CM3 and global control groups. For links that open a WhatsApp chat with you, use the WhatsApp link generator. For the channels themselves, see sending bulk WhatsApp messages safely and SMS DLT templates.

If your CRM tool and GA4 never agree on what a campaign earned, book a free call and I'll look at how your links are tagged.

Questions about UTM links

What is a UTM builder?

A tool that adds UTM tags to a web address, so Google Analytics can tell which campaign, channel and tool sent each visit. It is also called a UTM generator, UTM link builder or campaign URL builder. This one also checks which GA4 channel the link lands in.

How do I add a UTM source to a URL?

Add a question mark after the address, then utm_source= and the name, for example yourbrand.com/sale?utm_source=clevertap&utm_medium=email&utm_campaign=diwali_sale_2026. If the address already has a question mark, join the tags with & instead. The builder handles this for you.

What are the 5 UTM parameters?

utm_source, utm_medium, utm_campaign, utm_term and utm_content. GA4 also reads utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic. Source, medium and campaign are the ones to use every time.

What does UTM stand for?

Urchin Tracking Module. Urchin was the analytics company Google bought in 2005, and its software became Google Analytics.

Are UTM parameters case sensitive?

Yes. Google says utm_source=google and utm_source=Google are different values, so they show as separate rows. Use lowercase for everything.

What should utm_source and utm_medium be for WhatsApp?

Put the tool that sent the message in utm_source, such as clevertap or kwikengage, and whatsapp in utm_medium. Avoid utm_source=whatsapp, which GA4 counts as Organic Social.

Why does my WhatsApp traffic show as Unassigned in GA4?

GA4 has no default channel for WhatsApp, so utm_medium=whatsapp matches none of its rules. Create a custom channel group with a WhatsApp channel where medium exactly matches whatsapp, and move it to the top.

What is the difference between utm_source and utm_medium?

utm_source is who sent the visit, such as clevertap or facebook. utm_medium is the kind of marketing, such as email, sms or paid_social. GA4 sorts visits into channels mostly by medium.

What does utm_source=chatgpt.com mean?

The visitor clicked a link in a ChatGPT answer. ChatGPT adds this tag to many of the links it shows. You didn't add it, and you don't need to remove it.

Do UTM tags work for push notifications that open my app?

UTM tags are read by Google Analytics when a web page loads. They work when a push opens your website. A push that opens your app needs the app's own attribution setup, such as deep link parameters.

What is a UTM generator?

The same thing as a UTM builder: a tool that adds UTM tags to a link in the right format. People also call it a UTM maker, UTM code generator or campaign URL builder.

Can I use merge tags like {{first_name}} in UTM links?

Yes. This builder keeps personalisation tags exactly as typed, including Liquid and Jinja tags, Mailchimp merge tags, DLT {#url#} tags and Google Ads {keyword}. Send yourself a test so you can see the filled-in link.

Can I add UTM tags to an app deep link?

Yes, paste the app link and the tags are added. Your app has to read them and pass them to your analytics, usually through Firebase or an attribution tool, or they are lost.

Is there a free way to generate UTM codes?

Yes. This UTM builder is free, with no sign-up and no limit. It builds links in your browser, makes up to 500 at a time from a list or sheet, and checks existing links.

More free tools

Calculators, guides and tools for D2C brands, all free. See them all.

Want to move the number?

A 30-minute call. Bring your numbers and you will leave knowing which lever matters most for your brand.