UTM Link Builder
Build campaign tracking URLs with UTM parameters.
Was this tool helpful?
Thanks for the feedback!
UTM Link Builder adds campaign tracking parameters to a landing-page URL, so that visits from a newsletter, ad, social post or printed QR code show up under the right source and campaign in Google Analytics and similar tools. You supply the destination, a source, a medium and a campaign name, and the tool returns the tagged link ready to paste.
The fields and the link they produce
Paste the destination into the main box and fill in the three boxes:
- Source is where the click comes from, such as
newsletter,instagramorgoogle. Left blank, it becomesgoogle. - Medium is the kind of channel, such as
email,socialorcpc. Left blank, it becomescpc. - Campaign name is the promotion the link belongs to, such as
diwali_sale_2026. Left blank, noutm_campaignparameter is added at all.
Press Build link. For source newsletter, medium email and campaign diwali_sale_2026 the result is:
https://example.com/landing?utm_source=newsletter&utm_medium=email&utm_campaign=diwali_sale_2026
How awkward URLs are handled
- Existing query strings are kept, and the tags are joined on with
&. With source whatsapp, medium social and campaign festive_offer,https://example.com/shop?cat=sareesbecomeshttps://example.com/shop?cat=sarees&utm_source=whatsapp&utm_medium=social&utm_campaign=festive_offer. - A # fragment is moved behind the tags. Analytics tools read UTM values from the query string, not from the part after the
#, sohttps://example.com/sale#offersbecomeshttps://example.com/sale?utm_source=instagram&utm_medium=social&utm_campaign=diwali_sale_2026#offers. The visit is tracked and the page still opens at the offers section. - Values are URL-encoded. A campaign typed as
Diwali Sale 2026comes out asDiwali%20Sale%202026. It works, butdiwali_sale_2026is easier to read and filter in reports.
Naming rules that keep reports clean
- Stick to lowercase. Google Analytics 4 treats UTM values as case-sensitive, so
Instagramandinstagramappear as two separate sources. - Use conventional mediums. GA4 assigns traffic to default channel groups partly from the medium, so values like
email,cpc,socialandreferralland where you expect, while invented values often end up as "Unassigned". - Name the promotion, not the channel. Keep one campaign name on every link for the same offer and let source and medium change per channel; you can then compare the newsletter, WhatsApp and Instagram links inside a single campaign report.
- Keep a shared sheet of every tagged link with its source, medium and campaign, so the whole team tags each channel the same way.
Mistakes to avoid
- An empty Campaign name box. The link still records source and medium, but those visits won't be grouped under any campaign. If the result has no
utm_campaign=in it, fill in the box and build again. - Tagging internal links. Don't add UTM parameters to links between pages of your own site; they replace the visitor's original source in attribution reports and make the data less reliable.
- Needing more detail. The tool doesn't add
utm_termorutm_content. To tell two ads or two buttons in the same campaign apart, add something like&utm_content=banner_aby hand, before any#part. - Printing long links. Nobody types a tagged URL from a flyer. Convert it with the QR Code Generator instead, using a distinct source such as
flyer.
To read the parameters of an existing tagged link, paste it into the URL Decoder.