Plus Sign in UTM Parameter - UTM Validation Rule
Detects when + characters in UTM values may be interpreted as spaces, causing inconsistent tracking across platforms
What This Rule Detects
Detects when the plus sign (+) character appears in UTM parameter values. In URL encoding, + can represent a space character, causing inconsistent interpretation across different systems - some platforms decode + as a space, while others keep it as a literal plus sign, fragmenting your tracking data.
🔍 Want to scan for this issue automatically?
UTMGuard checks for this and 39 other validation rules in 60 seconds.
Try Free AuditWhy It Matters
Business Impact:
- Data fragmentation - Same campaign appears in 2 forms ("summer+sale" and "summer sale")
- Inconsistent reporting - Different platforms show different values
- Campaign consolidation impossible - Cannot merge fragmented data
- ROI calculation unreliable - Performance split across multiple entries
- Trend analysis broken - Cannot compare campaign performance over time
Technical Impact:
- The
+character has dual meaning in URLs - Historical standard:
+represents a space in form data - Modern standard:
%20represents a space in URLs - Different systems follow different standards
- GA4 may decode
+as space, while ad platforms keep it as+ - Creates two separate campaign entries for the same traffic
Real Example:
- Your campaign URL:
example.com?utm_campaign=summer+sale&utm_medium=email - GA4 interprets:
utm_campaign = "summer sale"(+ decoded as space) - Your email platform reports:
utm_campaign = "summer+sale"(+ kept as literal) - Facebook Pixel shows:
utm_campaign = "summer sale"(+ decoded) - Result: Same campaign appears as TWO different campaigns in cross-platform reports
Common Scenarios
Scenario 1: Plus in Campaign Names
Using + to represent "and" or connecting words:
Scenario 2: Programming Language References
Tech content with language names:
Scenario 3: Product Combinations
Multiple products joined with +:
😰 Is this your only tracking issue?
This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.
• 94% of sites have UTM errors
• Average: $8,400/month in wasted ad spend
• Fix time: 15 minutes with our report
✓ Connects directly to GA4 (read-only, secure)
✓ Scans 90 days of data in 2 minutes
✓ Prioritizes issues by revenue impact
✓ Shows exact sessions affected
How to Fix
Step 1: Understand the Plus Sign Problem
Historical context:
- Old standard (application/x-www-form-urlencoded):
+= space - Modern standard (RFC 3986):
%20= space,+= plus sign - Result: Inconsistent handling across platforms
How systems interpret summer+sale:
System A (GA4): "summer sale" (decodes + to space)
System B (Ad platform): "summer+sale" (keeps + as literal)
System C (Analytics): "summer sale" (decodes + to space)
System D (Email ESP): "summer+sale" (keeps + as literal)
Result: Same campaign, 4 different interpretations!
Data fragmentation example:
Your reports show:
- Campaign "summer sale": 1,500 sessions (from systems that decode +)
- Campaign "summer+sale": 800 sessions (from systems that keep +)
Reality: One campaign with 2,300 total sessions, split into 2 entries
Impact: Cannot calculate true ROI or compare performance
Step 2: Choose Your Replacement Strategy
Option A: Replace + with Hyphens (RECOMMENDED)
Why recommended:
- ✅ Universally consistent across all platforms
- ✅ Human-readable and professional
- ✅ No encoding/decoding ambiguity
- ✅ Works in URLs, emails, social media
- ✅ Easy to type manually if needed
How to do it:
❌ "summer+sale" → ✅ "summer-sale"
❌ "buy+now" → ✅ "buy-now"
❌ "shoes+boots" → ✅ "shoes-boots"
❌ "c++tutorial" → ✅ "cpp-tutorial"
Option B: URL-Encode as %2B
When to use:
- When you must preserve the literal + character
- For mathematical expressions (e.g., "2+2=4")
- When integrating with legacy systems expecting +
How to do it:
❌ "summer+sale" → ⚠️ "summer%2Bsale" (works but not readable)
❌ "c++" → ⚠️ "c%2B%2B" (technically correct, ugly)
Comparison:
Hyphens: utm_campaign=summer-sale (12 chars, readable)
Encoded: utm_campaign=summer%2Bsale (18 chars, technical)
Plus sign: utm_campaign=summer+sale (11 chars, inconsistent!)
Recommendation: Always use hyphens for clarity and consistency
Step 3: Fix All Parameter Values with +
Step-by-step process:
1. Identify all plus signs in parameter values:
Original: example.com?utm_campaign=summer+sale+2024&utm_content=buy+now
Plus signs found: "summer+sale+2024" (2 instances), "buy+now" (1 instance)
2. Replace with hyphens:
Fixed: example.com?utm_campaign=summer-sale-2024&utm_content=buy-now
3. Verify consistency:
✅ Check: No + characters in parameter values
✅ Check: All word separators are hyphens (-)
✅ Check: Values are human-readable
Step 4: Implement Naming Conventions
Best practices:
Use hyphens for word separation:
- ✅
summer-sale-2024 - ✅
buy-now-promo - ✅
shoes-and-boots - ❌
summer+sale+2024 - ❌
buy+now+promo - ❌
shoes+boots
Handle special cases:
- Programming languages:
c++→cpporc-plus-plus - Math expressions:
2+2→2-plus-2ortwo-plus-two - Brand names with +: Replace with
-plus-or_plus_
Document conventions: Create team style guide:
✅ DO: Use hyphens to separate words
✅ DO: Use lowercase consistently
✅ DO: Replace + with hyphen or spell out "plus"
❌ DON'T: Use + in any UTM parameter values
❌ DON'T: Use spaces (encode or replace)
❌ DON'T: Mix different separators
Step 5: Update All Campaign URLs
Where to fix:
1. Email campaigns:
- Mailchimp: Edit campaign links
- SendGrid: Update URL templates
- HubSpot: Modify destination URLs
- Constant Contact: Fix campaign links
2. Social media:
- Facebook Ads Manager: Update final URLs
- LinkedIn Campaign Manager: Edit link destinations
- Twitter/X Ads: Fix URL parameters
- Instagram bio links: Correct landing pages
3. Paid advertising:
- Google Ads: Update final URLs
- Microsoft Ads: Edit destination URLs
- Display networks: Fix creative links
4. Content marketing:
- Blog post links
- Social media posts
- Email signatures
- QR code destinations
Bulk update process:
- Export all campaign URLs to spreadsheet
- Find/replace:
+→-in all parameter values - Verify URLs parse correctly
- Test in GA4 Real-Time (verify consistent values)
- Deploy corrected URLs across platforms
Examples
❌ Incorrect Examples
https://example.com?utm_campaign=summer+sale&utm_medium=email
Different interpretations:
- GA4: utm_campaign = "summer sale" (+ decoded as space)
- Email ESP: utm_campaign = "summer+sale" (+ kept as literal)
Impact: Same campaign appears as 2 entries in reports
Cannot consolidate performance data
https://learn.example.com?utm_content=c++tutorial&utm_source=newsletter
Different interpretations:
- Some systems: utm_content = "c tutorial" (++ decoded as 2 spaces!)
- Others: utm_content = "c++tutorial" (kept as literal)
Impact: Content tag fragmentation, A/B testing fails
https://shop.com?utm_campaign=shoes+boots+sandals&utm_medium=cpc
Different interpretations:
- Platform A: utm_campaign = "shoes boots sandals" (3 words)
- Platform B: utm_campaign = "shoes+boots+sandals" (literal +)
Impact: Campaign data split, ROI calculation unreliable
✅ Correct Examples
https://example.com?utm_campaign=summer-sale&utm_medium=email
Result: Consistent across all platforms
- All systems: utm_campaign = "summer-sale"
Tracking: SUCCESS (single consolidated campaign entry)
https://learn.example.com?utm_content=cpp-tutorial&utm_source=newsletter
Result: No ambiguity, universally interpreted the same
- All systems: utm_content = "cpp-tutorial"
Tracking: SUCCESS (content tracking consistent)
https://shop.com?utm_campaign=shoes-boots-sandals&utm_medium=cpc
Result: Clean, readable, consistent everywhere
- All systems: utm_campaign = "shoes-boots-sandals"
Tracking: SUCCESS (accurate ROI calculation possible)
GA4 Impact Analysis
Inconsistent Value Interpretation:
- GA4 may decode
+as space - Creates two campaign entries for the same traffic
- Example: "summer+sale" and "summer sale" both appear
- Cannot consolidate performance metrics
Data Fragmentation:
- Sessions split across multiple campaign names
- Revenue attributed to multiple entries
- Conversion rates calculated on partial data
- ROI metrics unreliable
Cross-Platform Discrepancies:
- GA4 shows campaign name with spaces
- Ad platform shows campaign name with + signs
- Email ESP shows different value
- Makes data reconciliation impossible
Reporting Impact:
- Campaign reports: Duplicate entries for same campaign
- Source/Medium reports: Performance metrics split
- Conversion attribution: Fractured across entries
- Trend analysis: Cannot track campaign over time
Consolidation Challenges:
- Manual data merging required
- Risk of double-counting metrics
- Time-consuming report preparation
- Low confidence in data accuracy
Detection in UTMGuard
UTMGuard automatically detects plus signs in parameters:
- Scans all page URLs in your GA4 data
- Identifies
+characters in parameter values - Checks for data fragmentation (same campaign with/without +)
- Reports inconsistent value variants
- Calculates session split across variants
- Suggests hyphenated alternatives
Audit Report Shows:
- Total sessions with + in parameters
- List of parameter values containing +
- Data fragmentation analysis (variants of same campaign)
- Session distribution across variants
- Recommended hyphenated alternatives
Related Validation Rules
Related Validation Rules
Frequently Asked Questions
Q: Why does + sometimes work as a space?
A: Historical legacy from HTML form encoding (application/x-www-form-urlencoded) where + represented spaces. Modern URL standard uses %20 for spaces, but some systems still decode + as space for backward compatibility.
Q: Should I use %2B or hyphens?
A: Use hyphens for readability and consistency. Use %2B only when you must preserve the literal + character (rare cases like mathematical expressions or legacy system integration).
Q: Will fixing this merge my historical data?
A: No. Historical data remains fragmented. The fix prevents future fragmentation. You may need to manually consolidate historical reports by summing metrics from both variants.
Q: Can I use underscores instead?
A: Yes! Underscores are safe and consistent. Choose hyphens or underscores and use consistently. Recommendation: Hyphens for better readability.
Q: What if my campaign legitimately uses + (e.g., Google+)?
A: Replace with hyphen ("google-plus") or encode as %2B. Even if + is part of the name, using it in URLs creates tracking inconsistency.
Q: How do I test if + is causing issues?
A: Create test URL with +, click it, check GA4 Real-Time for the campaign value. Then check your ad platform reports. If values differ, + is being decoded inconsistently.
Q: Does this affect all UTM parameters?
A: Yes. The + ambiguity affects utm_source, utm_medium, utm_campaign, utm_content, and utm_term equally. Replace + in ALL parameter values.
Q: Will URL shorteners fix this?
A: No. Shorteners preserve the destination URL. If destination has +, the inconsistency remains when users click through.
External Resources
- RFC 3986: URL Syntax and Encoding
- W3C: URL Encoding Best Practices
- MDN: Percent Encoding
- Google Campaign URL Builder
✅ Fixed this issue? Great! Now check the other 39...
You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?
• Connects to GA4 (read-only, OAuth secured)
• Scans 90 days of traffic in 2 minutes
• Prioritizes by revenue impact
• Free forever for monthly audits
Join 2,847 marketers fixing their tracking daily
plus_sign_in_value