Skip to main content

Bulk UTM builder: tag a list of URLs at once

Paste a list of URLs or upload a CSV, and the bulk UTM builder adds your UTM parameters to every row, checks which GA4 channel each lands in, and gives you the tagged list back as CSV.

Runs in your browser; shortening sends the links to SendURL.

Tagging one link? Use the UTM builder.

Tag a list of URLs

One row per link. Where fills utm_source and utm_medium; Content is optional.

Every row uses these unless you give it its own.

  1. Row 1

Fill in a row, paste from a spreadsheet or upload a CSV to see the tagged links.

Copies the tagged URL of every ready row, one per line.

Shorten all with SendURL

With your API key: links you keep

Creates the links in your SendURL workspace, so they appear in the console with their clicks. Free accounts hold 100 links. Make a key under API keys in the console; a project key limits it to one project.

Kept in this tab's memory only: never saved, never put in the page address, and sent only to api.sendurl.to. Close the tab, or press Forget key, to drop it.

Sends at most 4 requests a second and waits when the API asks it to. For scripts, see how to shorten the whole list with the API and the API reference.

Without an account: up to 10 guest links

Guest links redirect and count clicks, but they belong to no account. Each one is kept on its own with its Keep it link (sign up or log in, one link at a time); they can't be claimed together later, and this page forgets them when you leave. For links you'll keep, use your API key above.

Shortening sends each tagged URL to SendURL's API; the tagging itself happens in your browser.

Columns and file format

Each row is one link: the URL people land on, where you'll share it, the campaign name and, if you want one, a content value. Copy the cells from Google Sheets or Excel and paste them, or upload a CSV like this one. A header row lets the columns come in any order.

url,where,utm_campaign,utm_content
https://example.com/autumn-sale,Instagram bio,2026-10-autumn-sale,
https://example.com/autumn-sale,Newsletter,2026-10-autumn-sale,header-button
https://example.com/autumn-sale,Newsletter,2026-10-autumn-sale,footer-link
https://example.com/autumn-sale,SMS,2026-10-autumn-sale,list-a

The download has the same columns plus utm_source, utm_medium, tagged_url, ga4_channel and, once you shorten, short_url. A value starting with =, +, - or @ gets a leading apostrophe, so a spreadsheet shows it as text instead of running it as a formula.

What each Where choice sets

Where fills utm_source and utm_medium with values GA4's default channel rules recognise, and a default utm_content you can override per row. They are the presets of the single UTM builder, which follow the UTM naming convention.

Where choices, the UTM values each sets and its GA4 channel
Whereutm_sourceutm_mediumutm_contentGA4 channel
Instagram bioinstagramsocialbio-linkOrganic Social
Instagram storyinstagramsocialstoryOrganic Social
TikToktiktoksocialbio-linkOrganic Social
LinkedInlinkedinsocialpostOrganic Social
XxsocialpostOrganic Social
FacebookfacebooksocialpostOrganic Social
YouTubeyoutubevideodescriptionOrganic Video
NewsletternewsletteremailnoneEmail
WhatsAppwhatsappsocialnoneOrganic Social
SMSsmssmsnoneSMS
QR / printposterqrnoneUnassigned
Paid socialfacebookpaid-socialadPaid Social

The checks on each row

Every row gets the single builder's checks: capitals and spaces that split one campaign into several report rows, a campaign name containing "shop" or "cross-network", a pasted URL that already had UTM parameters (they're replaced), a snu.to short link (its parameters aren't forwarded) and a URL over 2,000 characters. The badge shows the GA4 default channel; QR / print is Unassigned on purpose, because GA4 has no channel for print.

Shortening the list

Shortening is optional and sits under Shorten all with SendURL. With an API key, each row becomes a link in your workspace, created at most 4 a second; the API allows 50 requests per 10 seconds from one IP address, and the builder waits and retries if it is told to slow down (rate limits). Free workspaces hold 100 links and Pro 1,000, so a long list can stop at the limit; the rows after it are marked as not created.

Without an account, the builder makes up to 10 guest links. Each redirects and counts clicks, but a guest link is kept by signing up or logging in from its own Keep it link, one link at a time, and this page forgets them when you leave. To run the same job from a script, see the URL shortener API guide for Python and the API reference.

Limits

Where offers the builder's 12 choices only; for another source or medium, tag that link in the single builder under Edit UTM fields. The table holds 1,000 rows at a time. SendURL doesn't read UTM parameters: a short link passes them on to the destination, GA4 reports the campaign, and SendURL counts the clicks on the short link.

Frequently asked questions

How do I create multiple UTM links at once?

Paste your URLs from a spreadsheet or upload a CSV, pick where each link will be shared and add the campaign name. Every row is tagged as you type, and Copy all or Download CSV gives you the whole list.

What columns does the CSV need?

URL, Where, Campaign and Content, in that order; Content is optional. With a header row (url, where, utm_campaign, utm_content) the columns can come in any order, and Where takes one of the builder's choices, like Instagram bio, Newsletter or SMS.

Can I use different utm_content for each row?

Yes. Leave Content empty to use the choice's own value (bio-link for Instagram bio, post for LinkedIn), or type one per row, like header-button and footer-link for two links in the same email.

How many URLs can I tag?

Up to 1,000 rows at a time, with no account and no daily cap. The tagging happens in your browser, so a longer list is just a second pass.

Can I shorten all the tagged links?

Yes, through the SendURL API: the Python guide shows how to shorten the whole list with the API, and Shorten all with SendURL on this page does the same with your API key, up to your plan's link limit (100 on Free). Without an account it makes up to 10 guest links, and each one is kept separately.

GA4 channel rules from Google Analytics Help, as used by the UTM builder; checked 15 October 2026.