Build a dictionary your whole team can use
UTM Naming Conventions for Clear Campaign Reports
A useful UTM naming convention lets two people describe the same campaign in the same way without asking each other every time. It also keeps different ideas separate: where a visit came from, how the link was distributed, which initiative it supports, and which version someone used. Start with those decisions, then choose the spelling. A tidy string is helpful only when everyone agrees on its meaning.
Open the UTM Campaign Link Builder with Custom selected while you build the dictionary below. The example follows a fictional equipment workshop releasing a maintenance checklist. Its team needs links for several channels, two creative approaches, and a later reminder. The aim is readable destination-website reporting, not tracking everyone who sees a post or assigning affiliate commissions.
Begin with the questions your reports must answer
Write three reporting questions before creating any values. For the workshop, they are: which distribution sources brought website sessions, which checklist release those sessions supported, and whether the demonstration or comparison creative attracted stronger interest. These questions need separate fields. Putting the platform, month, creative, and outcome into one enormous campaign name makes simple comparisons harder because every difference creates another campaign row.
Create a small dictionary with a row for each allowed value. Include the field, exact spelling, plain-English meaning, an accepted example, an example to reject, and the person who can approve changes. A source row might accept linkedin and reject linked_in. The rejection is your team’s convention, not a statement that the alternative cannot exist in a URL. People need a clear choice, not a mystery rule.
Keep operational details outside the tags. The reviewer, deadline, document location, and landing-page owner belong in a campaign register. They help run the work but rarely belong in acquisition dimensions. Never put customer names, email addresses, access tokens, or private audience details into a UTM value. A tagged address can be copied, forwarded, logged, or shown in a screenshot far beyond its original placement.
Give the dictionary a version and an effective date. For example, version 1.0 can apply to links approved from 2 November onward. Published older links remain documented under their original names. This prevents a useful cleanup from becoming a silent rewrite of the campaign’s history. A one-page convention that people actually consult is more valuable than an elaborate classification system that only its author understands.
Give each of the six UTM fields one job
Use utm_source for the identifiable distribution origin, such as linkedin, and utm_medium for the distribution category, such as social. Source answers where; medium answers what kind. Do not use checklist_launch as a source just because the campaign has that name. Keeping these roles stable allows the same source to appear across many initiatives without inventing a new origin each time.
Use utm_campaign for the initiative you want to group together. The workshop chooses maintenance_checklist_2026q4 for one release across its planned channels. It does not change the campaign every day or whenever a caption changes. Use utm_id as an optional stable campaign identifier, such as mc26q4, if the team maintains an ID register. That identifier does not become an affiliate commission code or an automatic connection to another system.
Use utm_content to distinguish a placement or creative within the campaign, such as feed_comparison_a. Decide whether the field describes placement, creative, or an ordered combination of both. Use utm_term for a meaningful term when the campaign requires one, commonly a paid-search keyword label. It does not discover a visitor’s actual search query. For this unpaid checklist release, the workshop leaves term empty rather than inventing a label to fill the box.
The builder requires source, medium, and campaign, while content, term, and campaign ID are optional. A blank optional field is a deliberate choice, not an unfinished form. Record when each optional field is required by your own workflow. For example, content may be mandatory whenever two placements share a campaign. Do not demand six populated fields for every link if three of the values would add no useful distinction.
Separate spelling consistency from analytics channel rules
Choose one source spelling and keep it. Values such as LinkedIn, linkedin, and linked_in can split manual campaign reporting because UTM values are case-sensitive. Lowercase is a practical house standard for new work. It does not merge old rows retroactively. If an established account uses twitter, for example, a move to x should be a documented decision rather than an accidental result of switching a preset.
GA4 default channel grouping is a different layer. Its definitions evaluate source, medium, and other available information, and the default channel definitions are not case-sensitive. This does not make raw UTM values case-insensitive. Think of channel grouping as a separate classification applied to collected traffic data. Two differently capitalized source values can still need cleanup in your campaign dictionary even when they appear under the same broad channel.
The builder starts TikTok and YouTube with video as the medium, and most other platform presets with social. These are editable starting values, not promises about a particular GA4 channel row. Review your chosen source and medium against the reporting setup you actually use. A custom medium such as demo_clip might be meaningful internally but should not be assumed to match a default channel definition.
Keep paid and unpaid distribution distinguishable without changing the meaning of source. If the workshop later buys distribution on a platform, its analytics owner should approve the paid medium and any associated channel-grouping approach. Do not keep social merely because it was the original default, or label unpaid visits cpc to obtain a preferred report category. A name should describe the campaign, not make the dashboard look more favorable.
Build a small campaign vocabulary with a fixed order
For the workshop, the campaign pattern is asset_topic_period. Its dictionary allows maintenance_checklist_2026q4 and reserves a separate pattern for future event registrations. The period identifies the release window, not the exact day of every visit. A single campaign can continue receiving sessions later. Choose an order people can read without repeatedly decoding abbreviations, and keep the pattern short enough to inspect during review.
Define the boundary of a campaign explicitly. The first checklist release and its reminder belong together because they promote the same asset and objective. A new advanced course with a different landing page and registration goal gets a different campaign. A corrected spelling in the caption does not. The boundary is a business decision; neither the URL syntax nor the builder can decide whether two pieces of work represent one initiative.
Maintain approved tokens for recurring concepts. The workshop uses checklist, not alternating between guide, download, and pdf for the same asset. It uses 2026q4, not a mixture of q4_26 and autumn. Add a short description of the asset beside the code so a future teammate can distinguish a maintenance checklist from another downloadable document without guessing from the abbreviation.
Avoid encoding information twice. When source already says linkedin, the campaign usually does not need that platform name again. Otherwise, grouping the initiative across platforms becomes unnecessary work. Put each approved link beside its planned asset in the Content Calendar Generator output or your existing planning sheet. The calendar helps organize the schedule; it does not assign tags, publish the campaign, or check your analytics.
Put the dictionary to work
Build one approved campaign record
Enter the workshop example or your own agreed values, inspect the six-tag map, and export a link for a second-person review.
Name placements and creative changes without confusing them
Set a content pattern such as placement_angle_variant. For this release, feed_comparison_a means a feed placement, a comparison-led message, and approved variant A. feed_demonstration_a changes the message angle while keeping the placement comparable. Record the underlying asset ID in the register. The UTM value should help a reader understand the distinction, while the register points to the exact file and final copy.
Decide which changes deserve another variant. A different opening promise or destination offer can justify a new content value. Fixing a comma usually does not. Replacing the landing page with a materially different offer should trigger a review of both campaign and content, not a casual letter increment. A version label is useful only when the team can say what changed and why that difference matters to interpretation.
A reusable profile link needs an honest name. If several posts direct people to the same profile destination, profile_checklist_a describes that link, not the individual post that persuaded each visitor. A forwarded tagged URL keeps its labels as well. Do not claim post-level attribution from a shared link. Use separate approved destinations or placement-specific links only where your actual publishing workflow can preserve those distinctions.
Keep the message aligned with the destination when reviewing variants. Use the Caption Builder to develop supporting copy, then match the chosen promise to the correct registered URL. A comparison caption should not silently inherit the demonstration link because someone copied the previous draft. Check that the intended location actually accepts a clickable website link; ordinary caption text is not a universal clickable placement.
Normalize values without damaging the destination
The optional naming toggle lowercases values and changes whitespace to underscores. For example, Maintenance Checklist 2026Q4 becomes maintenance_checklist_2026q4. It is not a complete taxonomy validator: it cannot decide that maint_guide and maintenance_checklist mean the same thing. Enter approved dictionary values whenever possible, and inspect the readable six-tag map after applying normalization rather than assuming every naming issue has been solved.
Let native URL encoding handle special characters. Type a value such as repair & care as normal text rather than manually adding percent escapes. The encoded output protects characters that would otherwise be confused with query separators. Encoding and normalization are different operations: a value can be correctly encoded but poorly named. The Social Media Character Counter can help review surrounding copy, but it does not establish whether a tagged URL is valid or clickable.
Use Read existing tags before revising an existing campaign link. Importing reads the address locally; it does not visit the website. Review the imported values before deciding whether to normalize them. Building the result replaces the six managed UTM keys, including differently cased occurrences. Leaving an optional field blank removes its old managed value. This matters when a reused URL still contains an old term or content label you no longer intend to distribute.
Other query parameters and the fragment are kept semantically, although native URL serialization can change escaping. For a test address like https://workshop.example/checklist?edition=basic#materials, confirm that the edition choice and section destination still make sense after tagging. Review any extended UTM fields the builder does not manage. Avoid signed, expiring, or access-token addresses: adding or reserializing parameters can invalidate them, and they are poor public campaign destinations.
Create a structured release record before copying links
Create release mc26q4-r1 in the team register. Give it one destination, https://workshop.example/checklist?edition=basic#materials, campaign maintenance_checklist_2026q4, and campaign ID mc26q4. Record the dictionary version, planned start date, owner, and approval state separately. These details let another person reproduce the release without stuffing administrative notes into the URL or assuming the builder stores them for later retrieval.
Record A uses source linkedin, medium social, and content feed_comparison_a. Record B uses source youtube, medium video, and content description_demonstration_a. Both leave term empty. The campaign and ID remain unchanged so the initiative can be grouped across sources. These are proposed placement labels; check that the intended account and format offer the necessary clickable destination before approving distribution.
Record C is a later LinkedIn reminder with content feed_reminder_a, not a new campaign called last_chance. Its destination remains the checklist. If the team instead launches a paid workshop registration page, create a separately approved campaign record. This distinction keeps a scheduling change from becoming a reporting change and prevents a genuinely different offer from hiding under an old checklist label.
Build each record in the Custom UTM Campaign Link Builder, then save the copied URL beside the approved values. Use the CSV for field-level review and the PDF for a readable handoff. Neither export contains website performance data. The browser tool has no saved link history, remote destination check, URL shortener, or analytics report, so the external register remains the team’s record of what was approved.
Run a two-person check and manage changes openly
Separate preparation from approval when several people create links. The preparer checks dictionary spelling and completes the release record. The reviewer compares the output against the landing page, source, medium, campaign, content, and optional fields. Read the decoded values as well as the full URL. A long encoded address can look plausible while carrying an old campaign name that is obvious in the six-tag map.
Use three repeatable test cases. A clean address should receive one set of managed tags. An address containing both utm_source=old and UTM_SOURCE=older should end with one managed source value. An address with edition=basic and #materials should retain those meanings. Also test an imported optional content value that should disappear when cleared. These checks catch reuse errors that proofreading a campaign name alone cannot reveal.
After local review, someone responsible for the website should test the intended destination through the real placement and any redirects. Confirm the right page loads and the campaign parameters are available to the destination analytics implementation. The builder does not perform that visit. Record the test date and any limitation, such as an unavailable placement, instead of changing tags repeatedly to chase a report row that has not yet been collected.
When a naming rule changes, add a change note with the old value, new value, reason, and effective release. Keep a mapping for analysis without pretending past URLs have changed. Retire obsolete dictionary entries from new use, but retain their definitions. This gives new teammates a current standard and gives analysts enough history to explain apparent splits without guessing whether the business ran two campaigns or merely used two spellings.
Questions about UTM Naming Conventions
Should we rename every old campaign when adopting lowercase?
Usually, establish a clear boundary for new links first. Renaming a working URL does not rewrite visits already collected under the old value, and replacing published links may be impractical. Keep an old-to-new mapping in the register, note the effective date, and combine values deliberately during analysis when they truly describe the same initiative. Check whether any external system requires an exact existing campaign ID before changing it.
Can one content value contain both placement and creative?
Yes, if the order is fixed and documented. A pattern such as placement_angle_variant makes feed_comparison_a understandable without overloading campaign. The tradeoff is that combined values need to be parsed or grouped when you want placement-only analysis. Keep the allowed placement and angle tokens small. Do not add device, author, audience, and date simply because there is room in the field.
Should our own website buttons use these campaign tags?
Do not use external-acquisition UTMs as a substitute for measuring internal button activity. A visitor has already arrived, and another campaign label can complicate later attribution without describing a new external source. Ask the website analytics owner about an appropriate internal interaction event instead. Keep the button destination functional and measure the interaction separately from the campaign that originally brought the visitor to the site.
Continue with another campaign guide
Explore a different link route or work on consistent naming and report interpretation. Return to the UTM Campaign Link Builder to apply the changes, or browse all free tools.
Make the handoff repeatable
Keep campaign preparation connected to your team routine
Explore SMTasker’s five-day free trial for supported account tasks with connected Android phones and a Windows or macOS client. Keep your link register and destination analytics in their existing workflows.