Your First Taxonomy
A simple, ready-to-use naming system with a starter template for your UTM parameters.
On this page
- What Is a Marketing Taxonomy?
- The Five Decisions Behind Every Naming Convention
- The Flat Approach: Start Here
- Starter Taxonomy: Copy This and Customize
- Industry-Specific Starter Segments
- Naming Conventions: The Rules That Prevent Data Fragmentation
- Governance Scales Down to One Person
- Small Teams: Keep It Simple, Keep It Consistent
Chapter 1 gave you dimensions. Chapter 2 gave you the parameters that carry them. This chapter turns both into something your team can run tomorrow: a taxonomy, with approved sources, approved mediums, one campaign naming pattern, and the rules that keep all three clean.
Stride Footwear will build theirs in 45 minutes before the chapter is out.
What Is a Marketing Taxonomy?
A structured classification system for everything your marketing team does: campaigns, content, activities, across every channel. In practice, that means a common language plus the rules that govern your URL parameters and marketing metadata, so data collection stays consistent, reporting stays reliable, and teams stay aligned on what the words mean.
Applied well, the taxonomy becomes the single source of truth for campaign metadata. It eliminates data silos by defining precisely what each value means: “Channel: Social” and “Channel: Paid Social” are different things, and the taxonomy is where that difference is written down. That precision is what makes aggregation and comparison across campaigns, channels, and time periods trustworthy.
Without one, marketing data fragments into inconsistent labels, and meaningful analysis becomes nearly impossible.
What’s left is guessing with charts.
The Five Decisions Behind Every Naming Convention
Every naming convention makes the same five decisions, whether it lives in a two-tab spreadsheet or the most sophisticated enterprise taxonomy. Most teams make two of them by accident.
- What segments to include. Channel, source, campaign name, product, region, audience, objective, date: which dimensions does your reporting actually need? Start with the fewest that answer your key business questions. (Chapter 1 is how you find them.)
- What order they go in. When multiple dimensions share a single field (like
utm_campaign), order decides readability and parsing. The dimension you filter by most goes first. - What delimiter to use. Something has to separate segments from each other, and words within a segment. We recommend the two-delimiter convention: hyphens between segments, underscores within (
summer_sale-shoes-2025_q2). Chapter 6 covers advanced delimiter strategies. - What values are allowed for each segment. The controlled vocabulary: the approved list that stops
facebookvs.Facebookvs.fbbefore it starts. A naming convention without a controlled vocabulary is just a suggestion. - Who has authority to add new values. Someone owns the vocabulary or nobody does. Without a clear owner, new values appear organically and consistency degrades. Even a solo marketer should decide consciously when to add a new value versus reuse an existing one.
Decisions 1–3 define the structure. Decision 4 defines the content. Decision 5 defines the governance.
Most teams get 1–3 right and skip 4 and 5. That’s why their data fragments.
Don’t overthink the five on day one. The Flat approach below makes them for you, implicitly. As your taxonomy grows (Chapter 6), you’ll revisit each one deliberately.
The Flat Approach: Start Here
There are several ways to structure UTM values, and Chapter 6 covers the advanced ones. For most teams getting started, Flat is the right answer: human-readable values with no internal structure. You type whatever describes the campaign.
utm_source = facebook
utm_medium = social
utm_campaign = summer_sale
Intuitive, and zero tooling required. It also breaks down fast without governance: one person writes facebook, another writes Facebook, a third writes fb, and your analytics splits one source into three entries.
The fix is not complicated. An approved list of allowed values for each parameter, and everyone draws from it.
Starter Taxonomy: Copy This and Customize
Here’s that list: a ready-to-use set of approved values that works for most businesses. Copy it into a shared document or spreadsheet, then add or remove values for the channels and platforms you run.
Starter utm_source values:
| Value | Use when traffic comes from… |
|---|---|
google | Google Ads, Google organic |
bing | Microsoft/Bing Ads |
facebook | Facebook organic or paid |
instagram | Instagram organic or paid |
linkedin | LinkedIn organic or paid |
twitter | X/Twitter organic or paid |
tiktok | TikTok organic or paid |
youtube | YouTube descriptions, cards, ads |
newsletter | Your own email newsletter |
promotional_email | One-off promotional emails |
partner | Partner or co-marketing (append partner name: partner-acme) |
podcast | Podcast show notes or ads |
qr_code | QR codes on physical materials |
direct_mail | Direct mail pieces |
event | Conferences, trade shows, meetups |
Starter utm_medium values:
| Value | Use for… | GA4 Channel Group (or equivalent) |
|---|---|---|
cpc | Paid search (Google Ads, Bing Ads) | Paid Search |
paid_social | Paid social ads (Facebook Ads, LinkedIn Ads) | Paid Social |
social | Organic social posts | Organic Social |
email | All email (newsletters, promos, drip) | |
display | Display/banner ads | Display |
affiliate | Affiliate links | Affiliate |
referral | Partner links, guest posts | Referral |
offline | QR codes, print, events, direct mail | (Unassigned: custom grouping) |
video | YouTube ads, video campaigns | Organic Video (“video” doesn’t match GA4’s paid rule) |
Why
paid_socialuses the underscore, like everything else: One law covers every value in this taxonomy: underscores join words inside a value, and hyphens only ever separate values from each other. No exceptions, mediums included. The reason is that your medium travels. In a structured campaign name, hyphens are the split points. In an Adobe-style composite parameter, onecidcarries medium, source, and campaign as hyphen-split segments. Put a hyphen inside the value and any parser that splits on hyphens reads two segments where you meant one;paid_socialcomes out whole everywhere. GA4 doesn’t care either way: its paid rule is a prefix pattern, anything starting withpaidfrom a social source lands in Paid Social, sopaid_socialandpaid-socialclassify identically. The trap to respect is GA4’s other rules, the exact-match lists:social-mediais on the Organic Social list,social_mediais not. We defuse that with vocabulary, not punctuation: multi-word mediums exist only in the paid family, and every organic medium is a single GA4-native token (social,display,referral). GA4’s channel grouping is a labeling layer your values should pass through cleanly, not the system your taxonomy serves. See Chapter 11 for the full list of GA4-recognized medium values.
A leaner alternative, for completeness: minimal mediums. Some teams collapse the whole paid family into a single paid value and let the source carry the channel (facebook + paid is paid social; google + paid is paid search). GA4 handles it fine (paid matches the same prefix rule), and the vocabulary gets smaller. The cost surfaces in the warehouse: every channel split now needs a source-to-category lookup joined in, where paid_social and cpc carry the channel on their own. We keep the richer mediums for that reason.
utm_campaign naming pattern:
One consistent structure: [initiative]-[product]-[yyyy_mm]
Examples:
spring_sale-shoes-2025_03webinar-product_demo-2025_04brand_awareness-2025_q2newsletter_weekly-2025_03
The date sits in YYYY_MM format, so campaigns sort chronologically. Initiative and product are separate segments, so campaigns filter by either.
What if a campaign runs past its date? If
spring_sale-shoes-2025_03runs into April, keep the original value. Don’t create new UTMs mid-campaign. The date in your campaign name marks when the campaign launched, not when it ends; change values mid-flight and a single campaign becomes two line items in your reports, and total performance becomes impossible to see. If you regularly run campaigns spanning multiple months, use a quarter (2025_q2) or omit the month entirely. Match the date granularity to your actual campaign cadence: monthly launches getyyyy_mm, quarterly initiatives getyyyy_q#, and evergreen campaigns get the year alone or no date at all.
Industry-Specific Starter Segments
The starter taxonomy above is deliberately generic. Here’s how the utm_campaign segments typically differ by business type:
| Segment | B2B SaaS | E-commerce | Agency (per client) |
|---|---|---|---|
| Channel | paid_search, paid_social, organic_social, email, webinar, partner | paid_search, paid_social, organic_social, email, affiliate, influencer | Same as client’s vertical |
| Campaign type | brand_awareness, demand_gen, product_launch, nurture, retention | prospecting, retargeting, seasonal, clearance, loyalty | Defined per client |
| Audience | enterprise, mid_market, smb, existing_customers | new_visitors, cart_abandoners, past_buyers, lookalike | Defined per client |
| Geography | us, emea, apac, latam (or country codes) | us, uk, eu, au (or by shipping zone) | Per client’s markets |
| Date / flight | 2025_q1 or 2025_01 (never both) | spring_2025 or 2025_03 (align with seasons) | Standardize across clients |
These are starting points, not prescriptions. Pick the segments that answer questions your leadership actually asks. If nobody asks about geography, don’t track it. You can always add segments later.
Note: For complete industry-specific starter taxonomies with full controlled vocabularies, see the taxonomy templates in the Terminus template library.
Stride Footwear’s taxonomy runs live below. Dana assembles it in the next section, so open the dropdowns first and the approved values will already be familiar by the time she picks them.
Follow Along: Stride Footwear
Dana sits down with her team and builds Stride’s taxonomy. She starts with her four board-meeting questions (Chapter 1) and works backward to the values she needs.
Stride’s approved sources:
newsletter,promotional_email,qr_code-[location]Stride’s approved mediums:
cpc,paid_social,social,offlineStride’s campaign naming pattern:
[initiative]-[product]-[yyyy_mm]She tests it against their upcoming spring campaign:
Channel utm_source utm_medium utm_campaign Facebook ad paid_socialspring_sale-runners-2025_03Instagram ad paid_socialspring_sale-runners-2025_03Weekly newsletter newsletterspring_sale-runners-2025_03Google search ad cpcspring_sale-runners-2025_03Retail display QR qr_code-fleet_feet_nycofflinespring_sale-runners-2025_03Same
utm_campaigneverywhere. Source and medium change per channel. She puts the values in a shared Google Sheet, locks the cells, and tells the team: “If a value isn’t on this sheet, don’t use it. If you need a new one, ask me first.”Total time: 45 minutes. Tagging the actual links is Chapter 4.
Naming Conventions: The Rules That Prevent Data Fragmentation
The starter taxonomy earns nothing on its own. It works when everyone follows the same rules, and these are the rules.
- Consistency is paramount. Whatever conventions you choose, apply them uniformly: every campaign, every channel, every team member.
- Lowercase. Always. No exceptions. (Chapter 5 shows why casing is one of the most common sources of data fragmentation.)
- Underscores join words. Spaces get URL-encoded into
%20and produce ugly, error-prone values in reports; don’t use them at all. Writespring_sale, notspring sale. This is half of the two-delimiter convention used throughout this guide: underscores within values, hyphens between segments in structured campaign names (spring_sale-shoes-2025_03). The rule has no exceptions; multi-word mediums follow it too (paid_social). Start with underscores and your values work in both the Flat and Structured approaches (Chapter 6), no migration required. - No special characters.
?,&,=,#,+, and%have reserved meanings in URLs and will break your tracking. - Never tag internal links. UTM parameters are for external inbound links only. This is the single most damaging UTM mistake; Chapter 5 explains exactly how it breaks your data.
- No redundancy. If
utm_source=facebook, don’t setutm_medium=facebook_social. Each parameter carries its own distinct information. - Audit quarterly. Review your analytics for fragmented values, unapproved terms, and drift. Even good naming conventions degrade without maintenance.
- Plan before launch. Define conventions before campaigns go live. Retroactively fixing bad data costs far more than preventing it.
One more rule holds the other eight together.
Document everything. Naming conventions, approved values, examples: all of it, in one shared document that everyone who creates links can find. That document is your Tracking Constitution: the written law of how your team tags, and the place every argument about a value goes to get settled. If a rule isn’t in the constitution, it isn’t a rule. It’s folklore.
Bad
- ?utm_source=Facebook&utm_medium=Social Media&utm_campaign=Summer Sale 2025!
- uppercase
- spaces
- spaces and special character
Good
- ?utm_source=facebook&utm_medium=paid_social&utm_campaign=summer_sale-2025
- lowercase
- GA4-compatible
- underscores within, hyphens between
The cost of breaking these rules is real. Tag utm_source as facebook, Facebook, FB, and facebook.com, and your reports show four distinct sources. Manually cleaning and aggregating them becomes a recurring tax on analyst time. Well-enforced naming conventions are the prerequisite for analytics you can scale and trust.
Governance Scales Down to One Person
Everything above (approved values, naming conventions, documentation, auditing) is taxonomy governance.
The word sounds enterprise-heavy. The practice scales all the way down to a team of one:
| Just You | Small Team (3–10) | Large Org (50+) | |
|---|---|---|---|
| Tools | Spreadsheet with approved values | Shared doc + link builder with dropdowns | Dedicated platform with controlled vocabularies |
| Who enforces | You (self-discipline) | Team lead or marketing ops | Taxonomy guardian / data governance team |
| How you audit | Spot-check GA4 quarterly | Pull a report of all UTM values quarterly | Automated validation + scheduled audits |
| What “good” looks like | No duplicate sources in reports | Zero unapproved values entering analytics | Cross-team, cross-region consistency with audit trails |
At every scale, the core job is the same: define the rules that produce clean analytics, then embed those rules into the way people already work. Growing doesn’t switch you to a different practice. It deepens the one you have.
If you want to feel what governance is like before committing to a tool, look for platforms with a sandbox or playground mode: an ephemeral workspace where you can try different taxonomy structures, test cascading dropdowns, and see how validation works without affecting real data.
For agencies
When you run taxonomies for multiple clients, don’t build one giant shared list: start each client from a locked base template and customize sources per client. The Agency Playbook covers the full architecture.
Small Teams: Keep It Simple, Keep It Consistent
If you’re a small business or a team of 1–3 people, you don’t need complex tooling or a multi-dimensional taxonomy. You need basic insight into which channels and campaigns drive traffic and conversions.
- Three core UTMs. Use
utm_source,utm_medium, andutm_campaignconsistently. Addutm_contentandutm_termonly when you’re actively A/B testing or running paid search. - Simple values. Draw from the starter taxonomy above: a small, predefined list.
- Consistency over sophistication. Always
facebook, neverFB. Even simple tracking breaks down without consistent naming. - One primary goal. Answer questions like “Is Facebook advertising or email driving more leads?”
For tooling, Google’s free Campaign URL Builder is sufficient at this scale.
Notice what’s missing from that sentence. We used to recommend starting with a spreadsheet. After watching dozens of teams try it, we think that’s bad advice. Start with a builder tool from day one: the spreadsheet never gets maintained. (Your Tracking Constitution still lives in a shared doc; the rulebook is fine there. It’s the link building where spreadsheets fail.)
The biggest risk at this size isn’t complexity. It’s no tracking at all. A simple, consistently applied taxonomy delivers far more value than an ambitious system that gets abandoned. Start simple, prioritize consistency, and expand as needs grow; Chapter 6 covers scaling when you’re ready.
And when a team has tracking but no shared rules, here’s what it costs.
A 40-person B2B SaaS company selling project management software had five marketers running campaigns across paid search, LinkedIn, email, and webinars, spending roughly $180K per quarter on paid channels. No shared naming convention. Their analytics showed facebook, Facebook, fb, and FB as four separate sources. LinkedIn appeared as linkedin, LinkedIn, li, and linked-in.
In the Q3 pipeline review, the VP of Marketing pulled up the channel performance slide and asked: “Should we shift budget from LinkedIn to Google next quarter?”
The analyst hesitated. She knew the LinkedIn data was split across four spellings. She couldn’t say by how much, not without hours of cleanup.
The room made the call anyway. $25K moved from LinkedIn to Google.
Then the team implemented a controlled vocabulary of allowed values for each UTM parameter, plus a centralized link builder that enforced those values through dropdown menus. Within one quarter, duplicate source entries dropped from 47 to zero. And when the analyst consolidated the historical LinkedIn data, the real numbers told a different story: LinkedIn had been generating 3x more pipeline per dollar than paid search.
The $25K shift had moved budget away from their best-performing channel.
Nobody could see it until the data was clean.
The fix was never a better analytics tool or a more sophisticated taxonomy. It was a shared list of approved values and a single place to create links. Governance at the point of creation eliminated the problem at the source, and with it, budget decisions made on fragmented data.
Key Points
- Every naming convention comes down to five decisions: what segments, what order, what delimiter, what allowed values, and who owns them
- Start with the Flat approach and the starter taxonomy above; it works for 80% of businesses
- The naming rules (lowercase, the two-delimiter convention, no spaces, never internal links) are the difference between clean data and a mess
- Consistency beats sophistication: a simple taxonomy used correctly outperforms an advanced one used inconsistently
Action Item: Copy the starter taxonomy table into a shared document; that’s page one of your Tracking Constitution. Review it with your team, adjust the values for your channels, and use it for your next campaign.