If your marketing attribution reports look like a mess, the problem probably started long before you opened a dashboard. It started the moment someone on your team tagged a campaign link as utm_medium=Social while someone else used social, social-media, or just left it blank entirely.
This is not an edge case. It is the default state of most B2B marketing teams we work with at Axiolo. And it is the single most fixable reason that attribution breaks.
According to Gartner, poor data quality costs organizations an average of $12.9 million per year. A significant chunk of that in marketing organizations traces back to inconsistent campaign tracking — dirty UTM parameters, free-text campaign names, and zero governance over how data enters the system.
This post gives you the exact naming convention framework we use at Axiolo for our clients. No theory. Just the system.
What Happens Without a Naming Convention
Open Google Analytics 4 and look at your traffic sources. If you see any of the following, you have a naming convention problem:
google,Google,google.com, andadwordsall appearing as separate sources- Campaign names like
Spring Campaign,spring_campaign_v2,Q1 Spring, andspring2025_test_FINAL - Medium values that include
cpc,CPC,paid,ppc, andpaid-searchfor the same channel - Social traffic split across
facebook,Facebook,fb,meta, andsocial
Every variation creates a new row in your reports. GA4 does not merge cpc and CPC — they are treated as completely separate traffic buckets. That means your paid search traffic is fragmented across multiple line items, your channel groupings break, and any attribution model built on top of this data is working with garbage inputs.
The result: marketing cannot prove which campaigns drive revenue because the underlying data is too fragmented to aggregate.
The Axiolo Campaign Naming Convention Framework
We use a structured convention with consistent delimiters, controlled vocabulary, and a hierarchy that flows from broad to specific. Here is the pattern:
{source}_{medium}_{campaign-type}_{campaign-name}_{audience}_{date}
Every segment is lowercase. Words within a segment are separated by hyphens. Segments are separated by underscores. No spaces, no capital letters, no exceptions.
Breaking Down Each Segment
Source identifies the platform or publisher.
Use a fixed list. Do not let anyone invent new source values. Examples:
| Platform | Source Value |
|---|---|
| Google Ads | google |
| LinkedIn Ads | linkedin |
| Meta (Facebook/Instagram) | meta |
| Email (HubSpot, Mailchimp, etc.) | hubspot or mailchimp |
| Organic social | organic-social |
| Partner co-marketing | partner-{name} |
Medium describes the marketing channel type.
Again, use a controlled list. The most common mistake is letting people type this field freely.
| Channel Type | Medium Value |
|---|---|
| Paid search | cpc |
| Paid social | paid-social |
| Display | display |
email | |
| Organic social | organic-social |
| Referral | referral |
| Content syndication | syndication |
Campaign type categorizes the purpose of the campaign.
| Type | Value |
|---|---|
| Brand awareness | brand |
| Lead generation | leadgen |
| Nurture sequence | nurture |
| Product launch | launch |
| Retargeting | retarget |
| Event promotion | event |
| Webinar | webinar |
Campaign name is the specific, human-readable campaign identifier. Keep it descriptive but concise. Use hyphens between words.
Examples: data-quality-ebook, q1-product-demo, annual-conference-2025
Audience identifies the target segment.
Examples: cmio, mid-market, enterprise-saas, existing-customers
Date uses YYYYMM format for the campaign launch month.
Example: 202502
Full Examples
Here is what real UTM strings look like under this framework:
Google Ads search campaign targeting mid-market CMOs:
?utm_source=google&utm_medium=cpc&utm_campaign=google_cpc_leadgen_data-quality-ebook_mid-market_202502
LinkedIn sponsored content promoting a webinar:
?utm_source=linkedin&utm_medium=paid-social&utm_campaign=linkedin_paid-social_webinar_martech-audit-workshop_enterprise-saas_202503
HubSpot nurture email:
?utm_source=hubspot&utm_medium=email&utm_campaign=hubspot_email_nurture_onboarding-series_new-customers_202502
Organic LinkedIn post:
?utm_source=organic-social&utm_medium=organic-social&utm_campaign=organic-social_organic-social_brand_attribution-tips-post_general_202502
UTM Parameter Rules by Channel
Google Ads
Google Ads supports auto-tagging through the gclid parameter, which feeds data into Google Analytics automatically. However, auto-tagging alone does not populate UTM parameters in your CRM. If your HubSpot or Salesforce instance tracks original source through UTMs (and it should), you need manual UTM tagging on your final URLs in addition to auto-tagging.
Set your campaign URL suffix in Google Ads at the account or campaign level using ValueTrack parameters:
utm_source=google&utm_medium=cpc&utm_campaign={campaignname}&utm_term={keyword}&utm_content={creative}
Note: Google Ads {campaignname} pulls the campaign name exactly as you set it in the Google Ads interface. That means your Google Ads campaign names must also follow the naming convention.
LinkedIn Ads
LinkedIn Campaign Manager does not support dynamic value insertion the way Google Ads does. You need to set UTM parameters manually on each campaign or ad. Use the LinkedIn Campaign Manager URL parameters settings at the campaign level.
Meta (Facebook/Instagram)
Meta Ads Manager supports URL parameters at the ad level. Use dynamic parameters where available:
utm_source=meta&utm_medium=paid-social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}
This requires your Meta campaign names to follow the naming convention as well.
Email (HubSpot)
HubSpot can automatically append UTM tracking to links in marketing emails. Enable this at the account level and configure default values. Override at the email level when needed.
Organic Social
Every link shared on organic social channels needs UTM parameters. Create a tracking spreadsheet or use a URL builder tool to enforce consistency. The most common failure mode is team members sharing raw URLs without any tracking.
How to Enforce the Convention
A naming convention only works if it is enforced. Here is how:
Create a master tracking spreadsheet. Every new campaign gets registered in a shared sheet with pre-validated fields. Use dropdown menus or data validation for source, medium, campaign type, and audience to prevent free-text entry.
Build a URL builder. Create an internal tool (even a Google Sheet with formulas) that generates UTM-tagged URLs from dropdown selections. This eliminates typos and ensures consistency.
Audit monthly. Pull your GA4 source/medium report and your CRM source data monthly. Look for values that do not match your controlled vocabulary. Fix them and trace back to the source of the error.
Document and onboard. Write the convention down. Put it in your marketing wiki. Review it with every new team member and every new agency partner. At Axiolo, we include naming convention documentation in every client onboarding package.
How Clean Naming Flows Into Attribution
When every campaign follows the same structure, your attribution reports become immediately more useful:
- Channel-level performance is accurate because
cpcalways means paid search, across every report, in every tool - Campaign-type analysis becomes possible — you can compare all
leadgencampaigns against allnurturecampaigns - Audience segmentation works because every campaign is tagged with its target segment
- Time-based trending is clean because every campaign carries a launch date
- CRM records carry consistent original source data, which means lifecycle stage reporting and marketing attribution actually work
This is the foundational layer. Without it, no attribution tool — not HubSpot’s built-in reporting, not Bizible, not any multi-touch model — can produce reliable output. The framework described here feeds directly into the marketing data management approach we advocate at Axiolo.
Get the Template
We have packaged this framework into a ready-to-use Google Sheet with dropdown validation, automatic URL generation, and a campaign registry. It includes pre-built controlled vocabularies for source, medium, campaign type, and audience segments.
Contact us to request the Campaign Naming Convention Template →
At Axiolo, we help B2B marketing teams build the data infrastructure that makes attribution, reporting, and automation work. Our developer-first approach means we do not just advise on frameworks like this — we implement them inside your HubSpot, Salesforce, and GA4 environments. Learn more about our marketing operations services →