UTM-tagging — canonical taxonomy + best practices
Why you should care. UTMs are the only thing that lets the attribution dashboard tell which YouTube video drove revenue, vs. just “YouTube did.” Without UTMs the dashboard sees most traffic as
direct/none— useless for content prioritization. With UTMs, every dollar traces back to a specific piece.The discipline this asks of you. Every link from your content to any of our sites (
thecommsdept.com,churchchaos.com, eventuallyprochurchtools.com) gets UTM tags. No exceptions. The 30 seconds it takes to tag a link multiplies into months of clean data.
The 5 UTM parameters
Standard URL query parameters Google Analytics popularized in 2005. Universal — every analytics tool reads them.
| Parameter | What it captures | Example | Required? |
|---|---|---|---|
utm_source | Where the traffic came from (the platform) | youtube, newsletter, instagram | ✅ always |
utm_medium | How it got there (the channel type) | organic-social, email, paid-search | ✅ always |
utm_campaign | What specific content piece or campaign | ep-205, 167-issue-247, q2-launch | ✅ always |
utm_content | Which variant when same campaign has multiple links | header-cta, pinned-comment, end-screen | optional — only when you have multiple links from one piece |
utm_term | Paid-search keywords | church communications | rarely used these days |
The three required ones (source, medium, campaign) are non-negotiable. Any tagged link should always have at least those three.
Canonical taxonomy — Pro Church Tools / The Comms Dept
The single canonical name per property. Use these exact strings — UTMs are case-sensitive and youtube ≠ YouTube in the data.
The source-vs-medium principle
utm_source = the property / brand (which thing of yours did the click come from).
utm_medium = the format (audio, video, email, social post, etc.).
This matters because the same property can ship across multiple mediums — The Pro Church Tools Show is published as audio (Libsyn) AND video (its own YouTube channel) for the same episode. Both should share utm_source=pct-show so the dashboard can roll them up as one show, with utm_medium distinguishing audio listeners from video viewers within that show.
A property is a thing you’d talk about as a discrete brand: “the show,” “the newsletter,” “the main YouTube channel.” The platform that hosts it is just a delivery channel.
Sources + mediums
utm_source | utm_medium | When to use |
|---|---|---|
youtube | video | Main Pro Church Tools YouTube channel — descriptions, end-screens, pinned comments. Distinct from The Pro Church Tools Show’s YouTube channel below. |
pct-show | audio | The Pro Church Tools Show — Libsyn show-notes links + the audio feed |
pct-show | video | The Pro Church Tools Show — its own YouTube channel (the video version of each episode) |
newsletter | email | The 167 newsletter |
instagram | organic-social | IG bio link, Stories link sticker, Reels descriptions |
tiktok | organic-social | TikTok bio + video descriptions |
threads | organic-social | Threads bio + post links |
x | organic-social | X (formerly Twitter) bio + tweets |
facebook | organic-social | Facebook posts |
pct-website | referral | Pro Church Tools site (when wired up) |
affiliate | referral | Partnerships, sponsored mentions on other people’s content |
conference | event | In-person event mentions, slides QR codes |
email-direct | email | One-off emails (not the 167) |
helpscout | email | Reply-from-team emails to existing leads |
ai | ai-assistant | Surfaced in HDYHAU when user reports ChatGPT/Claude recommended us — no proactive UTM, just a self-report bucket |
If you find yourself reaching for a source that’s not on this list, add it here first before using it in the wild. One inconsistency now becomes 10,000 split data points later.
Multi-medium content — same property, multiple formats
When the same content piece ships across multiple formats (The Pro Church Tools Show as audio + video; eventually maybe newsletter clips re-cut as social, etc.), tag them all with the same utm_source and the same utm_campaign, but different utm_medium. That way:
- Dashboard rolls up: “Episode 12 drove $X total” (group by
utm_campaign) - Dashboard splits: “Of that, audio listeners drove $Y, video viewers drove $Z” (group by
utm_mediumwithinutm_source) - Cross-property comparison: “The Pro Church Tools Show vs main PCT YouTube channel” (group by
utm_source)
Anti-pattern to avoid: tagging the audio version utm_source=libsyn and the video version utm_source=youtube. That makes the same episode look like two different traffic streams and you lose the rollup.
Campaign naming conventions per content type
The utm_campaign is the unique-piece identifier. The dashboard groups by it, so consistency matters more than cleverness.
| Content type | Campaign format | Example |
|---|---|---|
| YouTube video | yt-<episode-or-slug> | yt-ep-205 or yt-7-comms-mistakes |
| The Pro Church Tools Show podcast | pod-ep-<number> | pod-ep-12 |
| The 167 newsletter | 167-issue-<number> | 167-issue-247 |
| Instagram post / reel | ig-<date-or-slug> | ig-2026-05-01 or ig-chaos-launch |
| TikTok video | tt-<date-or-slug> | tt-2026-05-01 |
| Conference talk | <conference>-<year> | attend-2026, pcsummit-2026 |
| Affiliate / sponsorship | affiliate-<partner> | affiliate-podcast-name |
| Paid ads | ads-<platform>-<campaign> | ads-meta-q2-launch |
| Evergreen / standing CTA | evergreen or evergreen-<location> | evergreen-bio-link |
utm_content — when it actually matters
Only set utm_content when the same campaign has multiple links and you want to know which one converted. Otherwise leave it blank.
Examples where it matters:
- YouTube video with 3 CTAs — description link vs. pinned comment vs. end-screen card. Tag each with
utm_content=description,utm_content=pinned-comment,utm_content=end-screen. - Newsletter issue with multiple CTAs — header CTA vs. inline link vs. P.S. link.
utm_content=header,utm_content=inline,utm_content=ps. - A/B test on a hero button —
utm_content=variant-avs.utm_content=variant-b.
When there’s just one link in the piece, leave utm_content blank.
Best practices — the do’s and don’ts
✅ Do
- Lowercase everything.
youtube, neverYouTubeorYoutube. UTMs are case-sensitive in analytics —Youtubeandyoutubeshow up as two different sources, splitting your data. - Use hyphens for spaces.
utm_campaign=big-boy-fitness, neverBig%20Boy%20Fitness. Easier to type, no encoding weirdness. - Pick one canonical name per platform. From this doc. Don’t create
yt,youtube,youtubecomaliases. - Use stable identifiers for
utm_campaign. Episode numbers, issue numbers, slugs you control — not titles that might change. - Build the URL once, reuse forever. Once you’ve tagged “your YouTube channel link in your IG bio,” that link doesn’t change.
- Use Google’s Campaign URL Builder if you’re not sure — it generates clean URLs from form input.
❌ Don’t
- Don’t tag internal links. UTMs OVERWRITE last-touch state on the destination domain. If a user lands from YouTube (
utm_source=youtube) and then clicks an internal link taggedutm_source=internal, you’ve just clobbered their YouTube attribution. Internal links never have UTMs. - Don’t tag link-decorator-managed cross-domain links. When you link from
thecommsdept.comtochurchchaos.com, the GTM tag automatically handles cross-domain attribution via the_pctURL param. Don’t add UTMs on top — they’d interfere. - Don’t put PII in UTMs. They show up in URLs, browser history, server logs. Never put email addresses, names, or sensitive identifiers in any UTM field.
- Don’t get clever with
utm_term. Mostly ignored by tooling; reserve it for paid-search keywords. Don’t use it as a generic “extra metadata” slot. - Don’t change the canonical names retroactively. If we decide
pct-showshould becomethe-pct-show, that breaks all historical campaign data. Only change with deliberate migration; otherwise live with the original choice. - Don’t forget to tag. This is the most common failure. The 30 seconds of tagging upfront unlocks months of clean data.
Workflow — when you’re about to share a link
1. Is this link going to one of our sites (thecommsdept.com, churchchaos.com)?
→ No → no UTM needed; ignore this whole doc.
→ Yes → continue.
2. Is the link going INSIDE the same site I'm linking from?
→ Yes → no UTM (internal links). Done.
→ No → continue.
3. Look up your `utm_source` from the table above.
4. Look up the matching `utm_medium` from the table above.
5. Build a `utm_campaign` using the convention for the content type.
6. (Optional) Add `utm_content` only if the piece has multiple links to the same destination.
7. Append to the URL: ?utm_source=X&utm_medium=Y&utm_campaign=Z
(or &utm_source=... if the URL already has a ? in it)
8. Use the tagged URL in your content.
Examples
YouTube video description link to the audit
YouTube episode 205, single link in description, going to the audit funnel:
https://churchchaos.com/get-started?utm_source=youtube&utm_medium=video&utm_campaign=yt-ep-205
Newsletter issue with header + P.S. CTA both going to audit
Newsletter issue 247:
header CTA: https://churchchaos.com/get-started?utm_source=newsletter&utm_medium=email&utm_campaign=167-issue-247&utm_content=header
P.S. link: https://churchchaos.com/get-started?utm_source=newsletter&utm_medium=email&utm_campaign=167-issue-247&utm_content=ps
Instagram bio link
Standing IG bio link to the audit:
https://churchchaos.com/get-started?utm_source=instagram&utm_medium=organic-social&utm_campaign=evergreen-bio
When IG runs a Reel for a specific drop, that Reel’s bio-link swap can use:
https://churchchaos.com/get-started?utm_source=instagram&utm_medium=organic-social&utm_campaign=ig-2026-05-01-launch
Affiliate / podcast guest appearance
Brady’s a guest on Podcast XYZ; the podcast’s show notes link to the audit:
https://churchchaos.com/get-started?utm_source=affiliate&utm_medium=referral&utm_campaign=affiliate-podcast-xyz-2026-05
The Pro Church Tools Show — episode 12 across audio and video
Same episode published as audio (Libsyn show notes) AND video (The Pro Church Tools Show’s own YouTube channel). Same utm_source + same utm_campaign, different utm_medium:
Libsyn show notes link:
https://churchchaos.com/get-started?utm_source=pct-show&utm_medium=audio&utm_campaign=pod-ep-12
The Pro Church Tools Show YouTube channel description link:
https://churchchaos.com/get-started?utm_source=pct-show&utm_medium=video&utm_campaign=pod-ep-12
In the dashboard, you’ll be able to ask:
- “How did Episode 12 perform overall?” → filter by
utm_campaign=pod-ep-12, see total revenue across both mediums - “Do audio listeners convert better than video viewers on this show?” → group by
utm_mediumwithinutm_source=pct-show - “Show vs. main channel head-to-head?” → compare
utm_source=pct-showvs.utm_source=youtubein the by-source rollup
Cheat sheet — the bare-minimum version
If you only remember three things:
- Lowercase, hyphens, no spaces.
- Always include
utm_source+utm_medium+utm_campaign. Skiputm_contentunless you have multiple links from the same piece. - Never tag internal links.
When in doubt, use the URL Builder and stick to the canonical names in this doc.
When to revisit this doc
- A new content channel comes online (e.g., LinkedIn, Substack) — add to the canonical taxonomy table before tagging the first link.
- Quarterly review — scan the dashboard’s “by-source” panel for sources that don’t appear here. Either standardize them retroactively (via attribution.manualOverride on affected churches) or formalize them in this doc.