Install
$ agentstack add skill-brainbytes-dev-everything-claude-marketing-utm-tracking ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
UTM Tracking
When to Activate
Use this skill when setting up UTM tracking for a new marketing program, designing or standardizing naming conventions, building campaign tracking systems, auditing existing UTM data for inconsistencies, troubleshooting attribution issues in analytics, creating UTM governance documentation for a team, or when someone asks about "campaign tracking," "UTM parameters," or "attribution setup." Also activate when analytics data is unreliable due to inconsistent or missing tracking.
First Questions
Before designing a UTM system, clarify:
- What analytics platform is in use? (GA4, Mixpanel, HubSpot, etc. — UTM behavior varies by platform)
- What channels are active? (paid search, paid social, email, organic social, referral, display, affiliate)
- How many people create tracking URLs? (1 person = light governance needed. 10+ people = strict governance essential)
- Is there an existing naming convention? (audit before replacing — migration requires careful planning)
- What decisions will be made from this data? (channel allocation, campaign ROI, content optimization)
- Is there a CRM or MAP that captures UTMs? (UTMs flowing into HubSpot or Salesforce enable closed-loop attribution)
Core Rules
- Consistency is everything. A UTM system is only as good as its most inconsistent user. One person writing "facebook" while another writes "Facebook" and a third writes "fb" creates three separate channels in analytics.
- Lowercase always. UTMs are case-sensitive. "Email" and "email" are different values in GA4. Enforce lowercase in every parameter, always.
- Use separators consistently. Pick one separator (hyphens or underscores) and never deviate. Hyphens are the most common convention.
- Less is more. Don't over-parameterize. If you can't act on the data a parameter provides, don't track it. Too many granular UTMs fragment your data.
- UTMs are for external traffic only. Never use UTMs on internal links (site navigation, in-app links). They restart the session in GA4, destroying your attribution data.
- Document and share. A naming convention that lives in one person's head is worthless. It must be documented, shared, and enforced.
UTM Parameter Definitions
Required Parameters
utm_source — Where the traffic comes from.
- Identifies the platform, website, or sender.
- Examples:
google,facebook,linkedin,newsletter,partner-name - Rule: Use the platform or publisher name. Be specific enough to distinguish sources but not so specific that you fragment data.
utm_medium — How the traffic arrives.
- Identifies the marketing channel or mechanism.
- Examples:
cpc,email,social,display,affiliate,referral,video - Rule: Use standardized medium values that align with GA4's default channel groupings. This is the most important parameter for channel-level reporting.
utm_campaign — Why the traffic is being sent.
- Identifies the specific campaign, promotion, or initiative.
- Examples:
spring-sale-2026,product-launch-q1,webinar-seo-masterclass,brand-awareness-na - Rule: Use a structured naming convention that includes enough context to identify the campaign without looking it up.
Optional Parameters
utm_term — The keyword or targeting criteria.
- Originally for paid search keywords, now used for any targeting detail.
- Examples:
crm-software(keyword),cmo-saas-50-200(audience segment),retargeting-30day - Rule: Use for paid campaigns where targeting detail matters for optimization. Skip for email and organic social.
utm_content — What specific element the click came from.
- Differentiates links within the same campaign (A/B test variants, different CTAs, different ad creatives).
- Examples:
hero-cta,sidebar-banner,version-a,image-ad-blue,footer-link - Rule: Use only when you need to distinguish between multiple links in the same campaign to the same destination.
Naming Convention Design
Principles
- Hierarchical: Move from broad to specific.
utm_mediumis broadest (channel),utm_contentis most specific (individual element). - Self-documenting: Someone seeing the UTM in a report should understand what it refers to without a lookup table.
- Machine-readable: No spaces, no special characters (except hyphens or underscores), no accented characters.
- Future-proof: Design for campaigns you haven't run yet. Avoid date formats that will become confusing.
Standard Formatting Rules
- All lowercase:
spring-salenotSpring-Sale - Hyphens as separators:
product-launchnotproduct_launchorproductlaunch - No spaces: Use hyphens instead
- No special characters: No
&,%,#,+, or accented characters - Date format (when needed):
YYYY-MMorQXYYYY(e.g.,2026-03orq1-2026) - Keep values short but descriptive:
brand-awarenessnotba
utm_medium Standard Values
Use these standardized values to align with GA4's default channel groupings:
| Medium Value | Channel | Usage | |-------------|---------|-------| | cpc | Paid Search | Google Ads, Bing Ads — cost-per-click campaigns | | ppc | Paid Search | Alternative to cpc (pick one and stick with it) | | display | Display | Banner ads, programmatic display | | cpm | Display | Cost-per-impression display campaigns | | social | Organic Social | Unpaid social media posts | | paid-social | Paid Social | Facebook/Meta Ads, LinkedIn Ads, TikTok Ads | | email | Email | Email campaigns and newsletters | | affiliate | Affiliates | Affiliate partner links | | referral | Referral | Partner referrals, guest posts, press | | video | Video | YouTube, Vimeo, or other video platform campaigns | | podcast | Audio | Podcast sponsorships or own podcast links | | qr | Offline | QR codes on physical materials | | sms | SMS | Text message campaigns |
Naming Convention Templates by Channel
Paid Search (Google/Bing Ads)
utm_source=google
utm_medium=cpc
utm_campaign={campaign-name-with-context}
utm_term={keyword or ad group}
utm_content={ad-variant}
Example: ?utm_source=google&utm_medium=cpc&utm_campaign=crm-demo-request-na&utm_term=best-crm-software&utm_content=responsive-ad-v2
Paid Social (Meta, LinkedIn, TikTok)
utm_source={platform}
utm_medium=paid-social
utm_campaign={campaign-name}
utm_term={audience-segment}
utm_content={ad-creative-identifier}
Example: ?utm_source=facebook&utm_medium=paid-social&utm_campaign=webinar-seo-q1-2026&utm_term=marketers-us-25-45&utm_content=video-testimonial-v1
Email Marketing
utm_source=newsletter OR {email-platform}
utm_medium=email
utm_campaign={email-campaign-name}
utm_content={link-position or variant}
Example: ?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-2026-03-14&utm_content=hero-cta
Organic Social
utm_source={platform}
utm_medium=social
utm_campaign={campaign-or-content-theme}
utm_content={post-type or identifier}
Example: ?utm_source=linkedin&utm_medium=social&utm_campaign=thought-leadership-q1&utm_content=carousel-seo-tips
Influencer / Creator
utm_source={creator-name or platform}
utm_medium=influencer
utm_campaign={campaign-name}
utm_content={content-type}
Example: ?utm_source=creator-sarahchen&utm_medium=influencer&utm_campaign=product-launch-march&utm_content=youtube-review
Offline (QR Codes, Print, Events)
utm_source={event-or-material}
utm_medium=qr OR offline
utm_campaign={campaign-name}
utm_content={specific-placement}
Example: ?utm_source=saastr-2026&utm_medium=qr&utm_campaign=conference-lead-gen&utm_content=booth-banner
UTM Builder Process
Manual Process
- Open UTM documentation/template.
- Fill in each parameter following the naming convention.
- Assemble the full URL.
- Test the URL to confirm it loads correctly and parameters are captured.
- Shorten with a branded link shortener if needed (Rebrandly, Bitly).
- Log the URL in the campaign tracking spreadsheet.
UTM Builder Spreadsheet Structure
| Column | Purpose | Example | |--------|---------|---------| | Date Created | When the URL was built | 2026-03-14 | | Campaign Name | Human-readable campaign reference | Spring Webinar Series | | Destination URL | Where the link goes | https://example.com/webinar | | utmsource | Source parameter | linkedin | | utmmedium | Medium parameter | paid-social | | utmcampaign | Campaign parameter | webinar-seo-q1-2026 | | utmterm | Term parameter (optional) | marketers-na | | utm_content | Content parameter (optional) | video-ad-v1 | | Full URL | Auto-generated complete URL | [full tagged URL] | | Short URL | Shortened version | https://brand.link/seo-webinar | | Owner | Who created it | Jane D. | | Notes | Context or special instructions | A/B testing ad creative |
Automation Options
- Google Sheets template: Concatenation formula that auto-builds URLs from parameter columns.
- UTM.io or CampaignTrackly: Dedicated UTM management platforms with team governance.
- HubSpot tracking URL builder: Built-in tool for HubSpot users.
- Custom internal tool: For teams with specific governance needs.
Common Mistakes
| Mistake | Impact | Fix | |---------|--------|-----| | Inconsistent capitalization | Splits data across multiple entries | Enforce lowercase always. Use a tool that auto-lowercases. | | Different names for same source | "facebook" vs "fb" vs "Facebook" vs "meta" | Publish an approved values list. Lock it down. | | UTMs on internal links | Restarts sessions, destroys attribution | Use event tracking or internal tagging for internal navigation. | | Too granular | Report becomes unreadable, patterns invisible | Aggregate at the right level. Use utmcontent for detail, not utmcampaign. | | Missing UTMs on campaigns | Traffic shows as "direct" or "referral" | Make UTM tagging a mandatory step in campaign launch checklists. | | Spaces in UTM values | URLs break or encode oddly | Use hyphens. Automate URL building to prevent manual errors. | | No documentation | New team members guess, create inconsistencies | Maintain a living naming convention doc. | | UTMs in organic search links | Overrides organic search attribution | Never add UTMs to pages that should be found via SEO. | | Vanity URLs without UTMs | Lose tracking on branded short links | Always redirect vanity URLs through UTM-tagged URLs. |
Integration with Analytics Platforms
GA4
- UTM parameters automatically populate dimensions: Session source, Session medium, Session campaign, Session manual term, Session manual content.
- Default channel groupings use
utm_mediumas the primary classifier. Use standard medium values to ensure correct channel assignment. - Custom channel groups can be created if your medium values differ from GA4 defaults.
- Data retention: Set to 14 months for meaningful YoY comparison.
HubSpot
- UTMs are captured automatically on form submissions and tracked as "original source" data.
- UTM data flows to contact records, enabling closed-loop attribution.
- HubSpot normalizes some UTM values but not all — still enforce your naming convention.
CRM Integration
- When UTMs flow through to CRM records (via MAP → CRM sync), you can attribute revenue to campaigns.
- Build reports: "Revenue by utmcampaign" or "Pipeline by utmsource" for true ROI analysis.
- This is the foundation of closed-loop attribution: marketing spend → campaign → lead → deal → revenue.
Campaign ID Systems
For teams managing hundreds of campaigns, add a campaign ID system alongside UTMs:
Structure
- Create a unique ID for each campaign:
C-2026-0347 - Format:
C-{YYYY}-{sequential number} - Store campaign metadata (objective, budget, channel, dates, owner) in a central database keyed by campaign ID.
- Include the campaign ID in utm_campaign or as a separate internal reference.
Benefits
- Deduplication: One campaign, one ID, regardless of how many UTM links it generates.
- Cross-channel rollup: Group all UTMs from the same campaign for aggregate performance.
- Budget tracking: Link campaign ID to spend data for ROI calculation.
QA Checklist for Tracking URLs
Before launching any campaign with tracking URLs:
- [ ] All parameters are lowercase
- [ ] Separators are consistent (hyphens throughout)
- [ ] No spaces or special characters in parameter values
- [ ] utmsource and utmmedium use approved standard values
- [ ] utm_campaign follows the naming convention
- [ ] The destination URL loads correctly with all parameters appended
- [ ] UTMs are not applied to internal links
- [ ] The URL is logged in the campaign tracking spreadsheet
- [ ] Shortened URLs redirect through the UTM-tagged URL (not around it)
- [ ] A test click has been verified in the analytics platform (real-time report)
- [ ] If using Google Ads auto-tagging, UTMs don't conflict with gclid
UTM Governance Documentation
Every team should maintain a living document containing:
- Naming convention rules: The formatting rules and approved values.
- Approved values list: Master list of approved source, medium, and campaign naming patterns.
- UTM builder: Template or tool for creating URLs.
- Campaign tracking log: Central spreadsheet of all active campaign URLs.
- Ownership: Who is responsible for maintaining and enforcing the system.
- Onboarding: How new team members or agencies learn the system.
- Audit cadence: How often the naming convention is reviewed and cleaned up (quarterly recommended).
- Exception process: How to request a new source, medium, or naming pattern.
Vanity URL Management
Vanity URLs (e.g., brand.com/webinar) are great for offline and spoken media but must be properly tracked:
Best Practice
- Create the vanity URL as a redirect (301 or 302).
- The redirect destination is the full URL with UTM parameters.
- Example:
brand.com/webinar→brand.com/events/seo-webinar?utm_source=conference&utm_medium=qr&utm_campaign=saastr-2026 - Log the vanity URL → destination mapping in the tracking spreadsheet.
- Test the redirect before going to print or broadcasting.
Vanity URL Naming Rules
- Keep them short and memorable:
/webinar,/demo,/guide - Avoid dates or version numbers in the vanity URL (the redirect can be updated)
- Reserve common paths and don't reuse them for different campaigns without updating the redirect
Quality Gate
Before delivering a UTM tracking system or naming convention:
- [ ] Naming conventions are documented with examples for every active channel
- [ ] Standard values for utmsource and utmmedium are defined and locked
- [ ] A UTM builder (template or tool) is provided for the team
- [ ] The convention aligns with the analytics platform's channel groupings
- [ ] Common mistakes have been addressed with preventive rules
- [ ] A QA checklist is included for pre-launch verification
- [ ] Governance documentation covers onboarding, enforcement, and exception handling
- [ ] Integration with CRM/MAP is planned for closed-loop attribution
- [ ] A campaign tracking log structure is provided
- [ ] The system is simple enough that every team member will actually use it
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: brainbytes-dev
- Source: brainbytes-dev/everything-claude-marketing
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.