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, eventually prochurchtools.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.

ParameterWhat it capturesExampleRequired?
utm_sourceWhere the traffic came from (the platform)youtube, newsletter, instagram✅ always
utm_mediumHow it got there (the channel type)organic-social, email, paid-search✅ always
utm_campaignWhat specific content piece or campaignep-205, 167-issue-247, q2-launch✅ always
utm_contentWhich variant when same campaign has multiple linksheader-cta, pinned-comment, end-screenoptional — only when you have multiple links from one piece
utm_termPaid-search keywordschurch communicationsrarely 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 youtubeYouTube 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_sourceutm_mediumWhen to use
youtubevideoMain Pro Church Tools YouTube channel — descriptions, end-screens, pinned comments. Distinct from The Pro Church Tools Show’s YouTube channel below.
pct-showaudioThe Pro Church Tools Show — Libsyn show-notes links + the audio feed
pct-showvideoThe Pro Church Tools Show — its own YouTube channel (the video version of each episode)
newsletteremailThe 167 newsletter
instagramorganic-socialIG bio link, Stories link sticker, Reels descriptions
tiktokorganic-socialTikTok bio + video descriptions
threadsorganic-socialThreads bio + post links
xorganic-socialX (formerly Twitter) bio + tweets
facebookorganic-socialFacebook posts
pct-websitereferralPro Church Tools site (when wired up)
affiliatereferralPartnerships, sponsored mentions on other people’s content
conferenceeventIn-person event mentions, slides QR codes
email-directemailOne-off emails (not the 167)
helpscoutemailReply-from-team emails to existing leads
aiai-assistantSurfaced 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_medium within utm_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 typeCampaign formatExample
YouTube videoyt-<episode-or-slug>yt-ep-205 or yt-7-comms-mistakes
The Pro Church Tools Show podcastpod-ep-<number>pod-ep-12
The 167 newsletter167-issue-<number>167-issue-247
Instagram post / reelig-<date-or-slug>ig-2026-05-01 or ig-chaos-launch
TikTok videott-<date-or-slug>tt-2026-05-01
Conference talk<conference>-<year>attend-2026, pcsummit-2026
Affiliate / sponsorshipaffiliate-<partner>affiliate-podcast-name
Paid adsads-<platform>-<campaign>ads-meta-q2-launch
Evergreen / standing CTAevergreen 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 buttonutm_content=variant-a vs. 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, never YouTube or Youtube. UTMs are case-sensitive in analytics — Youtube and youtube show up as two different sources, splitting your data.
  • Use hyphens for spaces. utm_campaign=big-boy-fitness, never Big%20Boy%20Fitness. Easier to type, no encoding weirdness.
  • Pick one canonical name per platform. From this doc. Don’t create yt, youtube, youtubecom aliases.
  • 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 tagged utm_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.com to churchchaos.com, the GTM tag automatically handles cross-domain attribution via the _pct URL 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-show should become the-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.
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 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

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_medium within utm_source=pct-show
  • “Show vs. main channel head-to-head?” → compare utm_source=pct-show vs. utm_source=youtube in the by-source rollup

Cheat sheet — the bare-minimum version

If you only remember three things:

  1. Lowercase, hyphens, no spaces.
  2. Always include utm_source + utm_medium + utm_campaign. Skip utm_content unless you have multiple links from the same piece.
  3. 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.