Guide
How to keep a UTM spreadsheet that does not rot
The graveyard version has twenty tabs, three “final_v7” files, and a medium column that includes both paid_social and Paid Social. The useful version is one tab, locked lists, and a URL you can paste into an ad the same day.
One tab. These columns.
Date, owner, destination, source, medium, campaign, content, term, final URL, note. That is enough to rebuild a link and to answer “what was phoenix.” Do not add audience size, creative copy, or the full brief. Those belong in the campaign doc. This sheet is a log of what was on the URL.
Lock medium. Moderate source.
Medium is a closed list: the ones GA4 already groups. See best practices. Source is a growing list of platforms and partners. A new partner gets a lowercase slug once. They do not get a free-text cell. Campaign follows the pattern in naming conventions — generate a candidate in the campaign name generator if people keep writing novels.
The sheet feeds the bulk tool, not the other way around
For a launch, list sources and campaigns, then expand them in the bulk UTM generator. Paste the output URLs back into the log. Do not hand-type fifty links in cells. For last month’s mess, reverse it with the bulk decoder and audit the live ads.
What we will not host for you
This site does not store your campaign archive. Browser history on the homepage is local. A shared sheet (or your own wiki) is the system of record. That is intentional: your URLs are not our product. Privacy note: privacy.
A starter row
| Column | Example |
|---|---|
| Date | 2026-08-30 |
| Owner | alex |
| Destination | https://example.com/sale |
| Source | newsletter |
| Medium | |
| Campaign | spring-sale-2026 |
| Content | hero-cta |
| Final URL | (paste from the builder) |
| Note | same campaign as Meta retargeting |
If a column is not in that list, it probably belongs in the brief. Protected dropdowns on medium stop 80% of rot. Source can be a growing named range. Campaign is free text that still has to match the pattern.