How to build UTM links in bulk without breaking them
One link is easy. Forty links for one campaign — six creatives across four channels, two landing pages — is where consistency dies, because that is where people start copying and editing by hand.
Option 1: paste from a spreadsheet
Keep your campaign plan in a sheet with one row per link and columns for URL, source, medium, campaign, term and content. Select the rows, copy, and paste them straight into the bulk tab of the builder. Tab-separated columns are handled, so a copy out of Sheets or Excel works as-is.
The advantage over a formula is that the same validation applies to every row: casing, spaces, accents and medium values all get checked, on all forty links, in one pass.
Option 2: a spreadsheet formula
If you would rather keep everything in the sheet, with URL in A2 and the parameters in B2 through F2:
=A2&"?utm_source="&LOWER(B2)
&"&utm_medium="&LOWER(C2)
&"&utm_campaign="&LOWER(SUBSTITUTE(D2," ","-"))
&IF(E2="","","&utm_term="&LOWER(SUBSTITUTE(E2," ","-")))
&IF(F2="","","&utm_content="&LOWER(SUBSTITUTE(F2," ","-")))
It handles lowercase and spaces. It does not strip accents, does not validate the medium against the standard list, and breaks quietly if the destination URL already has a query string — the three failures that cost the most.
Option 3: naming the links as you go
Whichever method you use, keep the generated links in one place with the campaign name attached. When someone asks in June which link was in the March email, you want a list, not an archaeology project.
Check these three things before shipping
- Click one link from each channel and confirm the parameters survive to the final address bar. Redirects drop query strings silently.
- Sort the list by source and look for near-duplicates —
facebooknext tofacebook-adsmeans two rows in your report. - Confirm no internal links got tagged. Every URL should point somewhere your visitor is not already.
Last reviewed 2026-08-13