šŸ”“CriticalImpact: Paid campaigns invisible in reports
šŸŽÆCategory: Attribution

What This Rule Detects

Identifies when UTM parameters use system-reserved keywords that GA4 uses internally to represent missing or untagged data. Using values like "null", "undefined", "(not set)", "(none)", "n/a", or "na" as utm_source makes your paid campaigns indistinguishable from actual untagged traffic, causing them to disappear from attribution reports.

šŸ” Want to scan for this issue automatically?

UTMGuard checks for this and 39 other validation rules in 60 seconds.

Try Free Audit

Why It Matters

Business Impact:

  • Paid campaigns invisible - Advertising spend appears to have zero results
  • Budget allocation destroyed - Cannot measure which sources drive revenue
  • ROI calculation impossible - Paid traffic looks identical to missing/untagged traffic
  • Reporting shows "missing data" - Your tagged campaigns appear as data quality issues

Technical Impact:

  • GA4 uses these keywords internally to represent MISSING attribution data
  • When you use them as utm_source, GA4 cannot distinguish your PAID traffic from UNTAGGED traffic
  • Reports show your campaigns as "(not set)" - looks like tracking failure, not active campaign
  • Data exports contain your expensive ad traffic in "unknown source" rows

Real Example:

  • Developer uses utm_source=null as placeholder, forgets to change it
  • Launches $15,000 Google Ads campaign
  • GA4 reports show:
    • Traffic source: "(not set)" or "null"
    • Indistinguishable from actual untagged/direct traffic
    • Campaign appears to have zero conversions
  • Reality: Campaign drove 200 conversions, but data looks like tracking error
  • Result: Marketing manager pauses "broken" campaign, wasting $15,000 budget

Common Scenarios

Scenario 1: Development Placeholder Left in Production

Developer uses "null" as temporary value during testing:

āŒ?utm_source=null&utm_medium=referral&utm_campaign=partner-blog
āœ…?utm_source=partner-blog&utm_medium=referral&utm_campaign=partnership-2024

Scenario 2: Unknown Source Placeholder

Using "(none)" when actual source is uncertain:

āŒ?utm_source=(none)&utm_medium=email&utm_campaign=newsletter
āœ…?utm_source=email-platform&utm_medium=email&utm_campaign=newsletter-jan

Scenario 3: Not Applicable Shorthand

Using "n/a" when source doesn't seem to fit categories:

āŒ?utm_source=n/a&utm_medium=social&utm_campaign=instagram-story
āœ…?utm_source=instagram&utm_medium=social&utm_campaign=story-jan-2024

😰 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

Get Your Free Audit Report

How to Fix

Step 1: Identify All Reserved Keywords in Your UTM Parameters

Complete list of GA4 system-reserved values (NEVER use these):

ABSOLUTELY FORBIDDEN:
ā”œā”€ā”€ null              → GA4 internal for missing data
ā”œā”€ā”€ undefined         → JavaScript/system null state
ā”œā”€ā”€ (not set)         → GA4 placeholder for missing values
ā”œā”€ā”€ (none)            → GA4 placeholder for absent data
ā”œā”€ā”€ n/a               → Commonly confused with "not applicable"
ā”œā”€ā”€ na                → Abbreviation of "not applicable"
ā”œā”€ā”€ not set           → Variation of "(not set)"
ā”œā”€ā”€ not provided      → GA historical keyword (deprecated)
ā”œā”€ā”€ (direct)          → GA4 reserved for Direct traffic
└── unknown           → System placeholder (avoid)

Why these are forbidden:

  • GA4 uses these INTERNALLY to represent data quality issues
  • Your paid campaigns become invisible in reports
  • Appear identical to actual untagged/broken tracking
  • Cannot be filtered out (mixed with real missing data)

Step 2: Search for Reserved Keywords in Active Campaigns

Manual audit across platforms:

Google Ads:

  1. Campaigns → All campaigns
  2. Click "Columns" → Modify columns → Add "Final URL"
  3. Search for: "null", "undefined", "none", "n/a"
  4. Review tracking templates for reserved keywords

Facebook Ads:

  1. Ads Manager → Campaigns
  2. Check URL parameters on each campaign
  3. Search campaign URLs for reserved keywords

Email platforms (Mailchimp, Constant Contact, SendGrid):

  1. Review email templates
  2. Check all link tracking parameters
  3. Verify utm_source not using reserved values

Partner/affiliate links:

  1. Request current link formats from partners
  2. Check for placeholder values
  3. Provide correct utm_source alternatives

Step 3: Replace Reserved Keywords with Descriptive Source Names

Replacement strategy:

If using "null" or "undefined":

āŒ utm_source=null
āœ… utm_source=`{actual_platform_name}`

Examples:
- utm_source=partner-website
- utm_source=email-signature
- utm_source=qr-code-flyer

If using "(none)" or "n/a":

āŒ utm_source=(none)
āœ… utm_source=`{specific_identifier}`

Examples:
- utm_source=offline-event
- utm_source=podcast-mention
- utm_source=print-magazine

If using "unknown":

āŒ utm_source=unknown
āœ… Identify actual source before launching campaign

If truly unknown, use:
- utm_source=organic (for unpaid)
- utm_source=other (last resort, but track separately)

Platform-specific update instructions:

Google Ads:

  1. Go to affected campaigns
  2. Settings → Campaign URL options
  3. Update "Final URL suffix" or "Tracking template"
  4. Replace: utm_source=null → utm_source=google
  5. Save and verify changes

Facebook Ads:

  1. Edit each affected ad
  2. Update URL parameters
  3. Replace: utm_source=undefined → utm_source=facebook
  4. Publish changes

Email campaigns:

  1. Update email templates
  2. Replace reserved keywords with email platform name
  3. Example: utm_source=mailchimp, utm_source=constant-contact
  4. Test send to verify parameters

Partner links:

  1. Contact partners using reserved keywords
  2. Provide corrected links with proper utm_source
  3. Example: utm_source=partner-name-blog

Step 5: Implement Validation Before Launch

Pre-launch checklist:

Before launching any campaign, verify:
☐ utm_source is NOT any reserved keyword
☐ utm_source describes actual traffic source
☐ utm_source is specific (not "web", "link", "campaign")
☐ No parentheses in values: (none), (not set)
☐ No programming terms: null, undefined, n/a
☐ Test in GA4 Real-Time report to confirm proper attribution

Use validation tools:

  • Google Campaign URL Builder (validates format)
  • UTMGuard audits (detects reserved keywords automatically)
  • Create team documentation listing forbidden keywords

Examples

āŒ Incorrect Examples

Using "null" as utm_source:
?utm_source=null&utm_medium=cpc&utm_campaign=google-ads-summer
Result: GA4 shows as "(not set)" or "null" in reports
Impact: Indistinguishable from actual missing data
Action: Campaign appears broken, gets paused

Using "(none)" as utm_source:
?utm_source=(none)&utm_medium=email&utm_campaign=weekly-digest
Result: Appears as missing source attribution
Impact: Email campaign invisible in source reports
Action: Cannot measure email campaign performance

Using "undefined" as utm_source:
?utm_source=undefined&utm_medium=social&utm_campaign=instagram
Result: Shows as system error in GA4
Impact: Looks like tracking failure, not active campaign
Action: Traffic appears as data quality issue

āœ… Correct Examples

Specific source instead of "null":
?utm_source=partner-techcrunch&utm_medium=referral&utm_campaign=guest-article-jan
Result: Clearly shows traffic from TechCrunch partnership
Impact: Can measure partner referral performance
Action: Proper attribution, can calculate partnership ROI

Email platform name instead of "(none)":
?utm_source=mailchimp&utm_medium=email&utm_campaign=weekly-newsletter-2024-q1
Result: Shows Mailchimp as source in reports
Impact: Can compare email platform performance
Action: Email campaign tracked correctly

Platform name instead of "undefined":
?utm_source=instagram&utm_medium=social&utm_campaign=product-launch-stories
Result: Instagram identified as traffic source
Impact: Can analyze Instagram story campaign performance
Action: Full attribution with campaign-level ROI visibility

GA4 Impact Analysis

Traffic Source Reports:

  • Reserved keywords → Appears as "(not set)" or system placeholder
  • Proper source names → Appears as distinct traffic source
  • Impact: Campaign visibility vs invisibility

Channel Grouping:

  • Reserved keywords → May classify as "Unassigned" or "Direct"
  • Proper naming → Classified correctly based on utm_medium
  • Impact: Channel analysis broken vs working

Conversion Attribution:

  • Reserved keywords → Conversions attributed to "(not set)"
  • Proper naming → Conversions attributed to actual campaign
  • Impact: ROI invisible vs measurable

Data Quality:

  • Reserved keywords → Appears as data quality issue
  • Proper naming → Appears as valid campaign traffic
  • Impact: Looks like broken tracking vs successful campaign

Detection in UTMGuard

UTMGuard automatically detects reserved keywords in UTM parameters:

  1. Scans all utm_source, utm_medium, utm_campaign values
  2. Compares against list of GA4 system-reserved keywords
  3. Flags any usage of forbidden values
  4. Counts affected sessions
  5. Reports specific campaigns using reserved keywords with priority ranking

Audit Report Shows:

  • Total sessions using reserved keywords
  • Which reserved keyword was used
  • Affected campaigns and URLs
  • Estimated advertising spend with broken attribution
  • Priority ranking by traffic volume

Frequently Asked Questions

Q: What if I already launched campaigns with reserved keywords?

A: Update the URLs immediately. Historical data cannot be fixed, but stopping the issue prevents further data corruption. Create a GA4 annotation marking when you fixed it to explain data discontinuity.

Q: Can I use "Other" as a utm_source?

A: Technically yes, but not recommended. "Other" is vague and makes reporting unclear. Use a specific identifier instead. Example: Instead of "other", use "offline-event" or "podcast-mention" or "print-ad".

Q: Will GA4 reject reserved keywords or just misclassify them?

A: GA4 will NOT reject them. It accepts the value but treats it identically to actual missing data, making your campaigns invisible. This is why detection is critical - the tracking "works" but data is unusable.

Q: Are reserved keywords case-sensitive?

A: No. "null", "Null", and "NULL" are all problematic. GA4 treats them as the same reserved value. Avoid all variations.

Q: What about "direct" as a utm_source?

A: Never use it. "(direct)" is GA4's reserved value for traffic with no source attribution (typed URL, bookmarks). Using utm_source=direct contradicts the purpose of UTM tagging.

Q: Can I use "not-applicable" with hyphens instead of "n/a"?

A: Still not recommended. While technically different, it suggests you don't know the source. Every campaign should have a specific, identifiable source. If truly unsure, delay launch until source is determined.

Q: How do I handle QR codes where source is ambiguous?

A: QR codes are the source. Use: utm_source=qr-code-{location} and utm_medium=offline or utm_medium=print. Example: utm_source=qr-code-flyer&utm_medium=print&utm_campaign=local-event-jan.

Q: What if my development team uses "null" in testing environments?

A: Acceptable for dev/staging environments ONLY. Implement validation that blocks deployment to production if reserved keywords detected. Use environment-specific URL builders that enforce proper naming in production.

āœ… 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

Run Complete UTM Audit (Free Forever)

Join 2,847 marketers fixing their tracking daily

External Resources


Last Updated: November 9, 2025
Rule ID: reserved_keyword_source
Severity: Critical
Category: Attribution