What the UTM Campaign Builder does
This bulk UTM builder generates every tagged URL a campaign needs in one pass: it crosses your landing pages with your source and medium pairs, campaign names, content variants and terms, applies your team's naming convention to every value, flags duplicates and values that differ only in case or spelling, and exports the whole table as CSV.
It exists because campaign tracking usually breaks at scale rather than on the first link. Google Analytics treats Facebook, facebook and face-book as three different sources, so one inconsistent link splits a channel's results across rows. Enforcing the convention before the links go out is far easier than cleaning reports afterwards.
How to use it
- Paste your landing page URLs, one per line. Existing query strings and #fragments are kept; any utm_ values already on a URL are replaced rather than duplicated.
- List the channels as source / medium pairs, such as
newsletter / emailorlinkedin / paid-social. Add a third part to fillutm_source_platform. - Enter the campaign name, and optionally content variants (placements or creatives), terms and a campaign ID. Each extra line multiplies the table.
- Set the naming convention: lower case, the word separator, allowed characters, a length limit and, if your team has one, the approved list of mediums.
- Build the table, review the convention report, then download the CSV or copy all URLs into your scheduling or ad tools.
Reading the results
Every row is one tagged URL. The count is pages x channels x campaigns x content variants x terms, so a launch with 3 pages, 4 channels and 2 creatives gives 24 URLs.
Convention problems list the values as you typed them and the rule each one breaks. With fixing on, the URLs already use the corrected value; with fixing off, the table shows exactly what would go live.
A collision means two inputs would become the same value - or should have. Facebook and facebook merged by the convention is good; left unmerged, they become two rows in your reports.
Duplicate URLs usually mean two placements share one set of tags, so you cannot tell them apart later. Give each placement its own utm_content.
Worked example: a product launch across three pages and four channels
A team launching a product has three landing pages - the product page, pricing and a demo page that already carries ?plan=team - and four channels: newsletter / email, linkedin / paid-social, google / cpc and partner-blog / referral. The campaign is aurora-launch-2026.
The builder produces 3 x 4 = 12 URLs. The demo URL keeps its own parameter: https://www.example.com/demo?plan=team&utm_source=newsletter&utm_medium=email&utm_campaign=aurora-launch-2026.
In the messy example, the sources Facebook and facebook and the mediums Paid Social and paid_social all normalise to facebook and paid-social, which the report shows as a collision and a duplicate URL - a problem that would otherwise have surfaced weeks later as a split channel in analytics.
How this differs from the URL Shortener
A2Z's URL Shortener can add UTM tags to a single link and shorten it, which is the right tool for one post or one email. This builder does not shorten anything. It is for the planning step before a campaign: many links at once, the same rules applied to every value, and a table you can hand to the people scheduling the posts and ads.
A naming convention that survives a team
Write the convention down and keep it short: lower case, hyphens between words, a fixed list of mediums, and sources named after the site rather than the format (linkedin, not linkedin-ad). Put the format in the medium and the creative in the content. The Copy naming rules button produces a plain-text version you can paste into your team's wiki.
Google Analytics' default channel groups classify traffic partly by matching utm_medium against expected values such as email, cpc and referral. Using the same approved mediums every time keeps traffic in the channel you expect.
Limitations: what the result does not prove
- It builds and checks the URLs; it does not open them, so it cannot tell whether a landing page exists or redirects and drops the parameters.
- It does not shorten links or store them. Nothing you enter leaves your browser.
- The convention is yours to choose. The defaults (lower case, hyphens) are common practice, not a Google requirement.
- UTM parameters describe traffic after the click; they do not measure impressions, and some platforms add their own click identifiers alongside them.
Privacy: where your data goes
Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics. Session recording and tag-manager scripts are switched off on this page.
Standards and sources
- Google Analytics - URL builders and campaign parameters - checked 19 Sep 2026
- Google Analytics Help - Default channel group
- RFC 3986 - Uniform Resource Identifier: generic syntax
Frequently asked questions
Which UTM parameters are required?
Google Analytics documents utm_source, utm_medium and utm_campaign as the three to always set; without them the session shows up as (not set). utm_content, utm_term, utm_id and utm_source_platform are optional. This builder refuses to build without a campaign name and reports any missing source or medium.
Are UTM parameters case sensitive?
Yes. Google Analytics treats utm_source=Facebook and utm_source=facebook as two different sources, so one capitalised link splits a channel across two report rows. The lower-case rule here catches that, and the collision report shows every value that was spelled more than one way.
How do I create UTM links for many URLs at once?
Paste all the landing pages, list every source and medium pair and any content variants, and build the table. Every combination becomes a row, up to 10,000, and the CSV download gives you the landing page, each parameter and the finished URL in separate columns for a spreadsheet or scheduling tool.
What happens if my landing page already has a query string?
The existing parameters are kept and the UTM parameters are added after them with &. Anything after a # stays at the end, where browsers expect it. If the URL already has a utm_source or other utm_ value that you are setting, it is replaced so the link never carries two conflicting copies.
Should I use hyphens or underscores in UTM values?
Either works as long as everyone uses the same one. Hyphens are slightly more common and read well in reports; underscores suit teams whose other naming already uses them. Pick one in the separator setting and the builder converts spaces and the other separator automatically.
What should go in utm_content?
Use it to tell apart links that share a source, medium and campaign: two buttons in the same email, a banner and a text link, or two ad creatives. Without it those links produce identical URLs, and the duplicate check here will point them out before they go live.
Last reviewed by the A2Z.Tools team against the sources listed above.