Guide

UTM spreadsheet template

A shared sheet is how most teams start tracking campaign links. Here is the column layout, the formula that builds the URL, and the validation rules that keep it from rotting.

The columns your sheet needs

A UTM spreadsheet is a shared log of every tagged link you have created. Its job is to stop two people inventing two names for the same campaign, and to let you look up what a strange row in analytics actually was.

ColumnPurpose
destination_urlThe clean page you want people to land on, no parameters
utm_sourcePlatform or list — from your fixed vocabulary
utm_mediumDelivery method — from a short fixed list
utm_campaignThe initiative name, with a year if it repeats
utm_contentWhich link inside the same message (optional)
full_urlFormula column that assembles the final link
ownerWho created it, so questions have an answer
launch_dateWhen it went live, for lining up against reports

The formula

In Google Sheets or Excel, put this in your full_url column and drag it down. LOWER() enforces the casing rule that causes most duplicate rows in Google Analytics.

=LOWER(A2&"?utm_source="&B2&"&utm_medium="&C2&"&utm_campaign="&D2)

If you also use utm_content, extend it with &"&utm_content="&E2 — but wrap the whole thing in IF() so empty cells do not append a dangling parameter.

Guardrails worth adding

  • Data validation dropdowns on utm_source and utm_medium so nobody free-types a new value.
  • Conditional formatting that highlights any cell containing a capital letter or a space.
  • A COUNTIF column flagging duplicate full_url values.
  • A locked reference tab listing your approved vocabulary.
  • Never delete rows — archive them, so an old link found in the wild can still be identified.

Where spreadsheets stop working

A sheet records intent. It cannot tell you whether a link worked, it cannot stop someone pasting an untracked URL into an email, and it silently rots the moment a second team starts their own copy.

The moment you care about results rather than record-keeping, you need the links and the performance data in the same place — a saved campaign library with GA4 sessions, conversions and revenue attached to each URL.

Moving off the sheet

  • Recreate your recurring source and medium pairs as presets so they can never be mistyped.
  • Save each live campaign so the URL, its QR code and its results stay together.
  • Keep the old sheet as a read-only archive for historical lookups.

Skip the formula

Build the link, save the campaign and keep every URL in one library — with presets that make mistyping impossible.

Open the UTM builder

Frequently asked questions

What columns should a UTM spreadsheet have?

Destination URL, utm_source, utm_medium, utm_campaign, optional utm_content and utm_term, a generated full URL formula, the owner, the launch date and a notes field.

How do I build the full URL in Google Sheets?

Concatenate the base URL with each parameter, for example: =A2&"?utm_source="&B2&"&utm_medium="&C2&"&utm_campaign="&D2. Wrap it in LOWER() to enforce casing.

Is a spreadsheet enough for UTM tracking?

It works for a single person on a handful of campaigns. It breaks once several people edit it, because there is nothing stopping typos, duplicates or inconsistent casing — and it never shows you results.

Can I import my existing spreadsheet?

You can rebuild any row in the Trace UTM builder in seconds and save it as a campaign, keeping the same naming you already use.