A/B Testing with utm_content: Track Every Variant in GA4
You're A/B testing two email headlines:
Variant A: "Save 30% on Everything" Variant B: "Your Exclusive 30% Discount Inside"
Both emails go to the same landing page. Both use the same utm_campaign. A week later, you check GA4 to see which headline won...
And you can't tell.
All traffic is merged under one campaign. No way to see which headline drove more conversions.
The problem: Not using utm_content to differentiate variants.
The solution: Add unique utm_content to each test variant so GA4 can track performance separately.
🚨 Not sure what's breaking your tracking?
Run a free 60-second audit to check all 40+ ways UTM tracking can fail.
Scan Your Campaigns Free✓ No credit card ✓ See results instantly
Why A/B Tests Need utm_content
Without utm_content:
Variant A: ?utm_source=email&utm_medium=email&utm_campaign=spring-sale-2025
Variant B: ?utm_source=email&utm_medium=email&utm_campaign=spring-sale-2025
GA4 shows:
Campaign: spring-sale-2025
Sessions: 10,000
Conversions: 300
Can't differentiate which variant drove which conversions.
With utm_content:
Variant A: ?utm_source=email&utm_medium=email&utm_campaign=spring-sale-2025&utm_content=headline-save-30pct
Variant B: ?utm_source=email&utm_medium=email&utm_campaign=spring-sale-2025&utm_content=headline-exclusive-discount
GA4 shows:
Campaign: spring-sale-2025
├─ Content: headline-save-30pct → 5,000 sessions, 120 conversions (2.4% CVR)
└─ Content: headline-exclusive-discount → 5,000 sessions, 180 conversions (3.6% CVR)
Winner: Variant B (50% higher conversion rate)
Real Example: 200% Conversion Lift from One Word
Client: SaaS company testing email CTA buttons
Test:
- Variant A: "Start Free Trial"
- Variant B: "Get Started Free"
- Variant C: "Try It Free"
Audience: 30,000 email subscribers (10,000 per variant)
Without utm_content
All variants used same URL:
?utm_source=email&utm_medium=email&utm_campaign=trial-offer-jan-2025
GA4 showed:
Campaign: trial-offer-jan-2025
Sessions: 6,000
Trial signups: 180
Conversion rate: 3.0%
Conclusion: "3% conversion rate is okay, but not great."
Problem: Can't tell which CTA worked best.
After Adding utm_content
Each variant got unique tracking:
Variant A: ?utm_content=cta-start-free-trial
Variant B: ?utm_content=cta-get-started-free
Variant C: ?utm_content=cta-try-it-free
GA4 showed:
| Content | Sessions | Trial Signups | Conversion Rate |
|---|---|---|---|
| cta-start-free-trial | 2,000 | 40 | 2.0% |
| cta-get-started-free | 2,000 | 120 | 6.0% |
| cta-try-it-free | 2,000 | 20 | 1.0% |
Insights:
"Get Started Free" had 3x better conversion rate than "Start Free Trial" (6.0% vs 2.0%)
"Try It Free" actually performed worst (1.0%)
Actions taken:
- Use "Get Started Free" as default CTA for all future emails
- Update website CTA from "Start Free Trial" to "Get Started Free"
- Update ad copy to use winning language
Result (next quarter):
- Email trial signups: 180 → 360 (+100%)
- Website trial signups: +45% from CTA update
- Total new trials: +67% increase just from changing 3 words
This was only possible because utm_content tracked variants separately.
😰 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 Set Up A/B Test Tracking
Step 1: Define Your Variants
Example test: Email subject lines
Campaign: spring-sale-email-jan-2025
Variant A: "Save 30% Today Only"
Variant B: "Flash Sale: 30% Off Everything"
Variant C: "Last Chance: 30% Off Ends Tonight"
Step 2: Create utm_content Values
Format:
utm_content={what-you're-testing}-`{variant-identifier}`
Examples:
Variant A: utm_content=subject-save-30pct
Variant B: utm_content=subject-flash-sale
Variant C: utm_content=subject-last-chance
Or use simple identifiers:
Variant A: utm_content=variant-a
Variant B: utm_content=variant-b
Variant C: utm_content=variant-c
We recommend descriptive (easier to remember what you tested).
Step 3: Add to Campaign URLs
Full URLs:
Variant A:
https://yoursite.com/sale?utm_source=email&utm_medium=email&utm_campaign=spring-sale-jan-2025&utm_content=subject-save-30pct
Variant B:
https://yoursite.com/sale?utm_source=email&utm_medium=email&utm_campaign=spring-sale-jan-2025&utm_content=subject-flash-sale
Variant C:
https://yoursite.com/sale?utm_source=email&utm_medium=email&utm_campaign=spring-sale-jan-2025&utm_content=subject-last-chance
Step 4: Send Test (Split Traffic)
Email platform:
- Variant A → 33% of list
- Variant B → 33% of list
- Variant C → 34% of list
Or 50/50 for two variants:
- Variant A → 50%
- Variant B → 50%
Step 5: Wait for Statistical Significance
Minimum: 100 conversions per variant (or 2 weeks, whichever comes first)
Don't call winner too early! Wait for enough data.
Step 6: Analyze in GA4
GA4 → Explore → Free form
Dimensions:
- Campaign
- First user manual ad content (utm_content)
Metrics:
- Sessions
- Conversions
- Conversion rate
Result: Compare conversion rates by utm_content variant.
Common A/B Test Scenarios
Scenario 1: Email Subject Lines
Test:
- Subject A: "Save 30%"
- Subject B: "Your Exclusive Discount"
utm_content:
utm_content=subject-save-30pct
utm_content=subject-exclusive-discount
Scenario 2: Email CTA Buttons
Test:
- CTA A: "Buy Now"
- CTA B: "Shop the Sale"
- CTA C: "Get Yours"
utm_content:
utm_content=cta-buy-now
utm_content=cta-shop-sale
utm_content=cta-get-yours
Scenario 3: Landing Page Headlines
Test:
- Headline A: "The Best CRM for Small Business"
- Headline B: "CRM Software That Actually Works"
utm_content:
utm_content=headline-best-crm
utm_content=headline-actually-works
Scenario 4: Ad Creative Formats
Test:
- Image A: Product shot
- Image B: Lifestyle photo
- Image C: Infographic
utm_content:
utm_content=image-product-shot
utm_content=image-lifestyle
utm_content=image-infographic
Scenario 5: Video Length
Test:
- Video A: 15 seconds
- Video B: 30 seconds
- Video C: 60 seconds
utm_content:
utm_content=video-15sec
utm_content=video-30sec
utm_content=video-60sec
Scenario 6: Link Placement (Same Email)
Test where people click:
- Hero CTA (top of email)
- Mid-email link
- Footer CTA
utm_content:
utm_content=hero-cta
utm_content=mid-email-link
utm_content=footer-cta
Scenario 7: Audience Segments
Test:
- Segment A: New customers
- Segment B: Returning customers
- Segment C: VIP customers
utm_content:
utm_content=segment-new-customers
utm_content=segment-returning
utm_content=segment-vip
Scenario 8: Multi-Variable Test
Testing multiple elements:
- 2 headlines × 3 CTA buttons = 6 combinations
utm_content naming:
utm_content=headline-a-cta-buy-now
utm_content=headline-a-cta-shop-sale
utm_content=headline-a-cta-get-yours
utm_content=headline-b-cta-buy-now
utm_content=headline-b-cta-shop-sale
utm_content=headline-b-cta-get-yours
utm_content Naming for A/B Tests
Format
utm_content=`{"{"}{"{"}element{"}"}{"}"}}`-`{variant-description}`
Examples:
Subject line test:
utm_content=subject-save-30pct
utm_content=subject-exclusive-offer
CTA button test:
utm_content=cta-buy-now
utm_content=cta-shop-sale
Image test:
utm_content=image-product-shot
utm_content=image-lifestyle
Headline test:
utm_content=headline-a
utm_content=headline-b
Keep It Simple
Good:
utm_content=variant-a
utm_content=variant-b
Or descriptive:
utm_content=cta-buy-now
utm_content=cta-shop-sale
Don't overthink it. Key is that each variant has unique utm_content value.
Analyzing A/B Tests in GA4
Report 1: Conversion Rate by Variant
GA4 → Explore → Free form
Dimensions: First user manual ad content Metrics: Sessions, Conversions, Conversion rate Filter: Campaign = your test campaign
Result: See which variant has highest conversion rate.
Report 2: Statistical Significance Calculator
GA4 doesn't show significance automatically.
Use external tools:
- VWO A/B Test Calculator
- Optimizely Stats Engine
- AB Testguide Calculator
Input:
- Variant A: Sessions, Conversions
- Variant B: Sessions, Conversions
Output: Statistical significance (95% confidence or higher = reliable winner)
Report 3: Revenue by Variant (E-commerce)
GA4 → Explore → Free form
Dimensions: First user manual ad content Metrics: Sessions, Revenue, Average order value
Use case: Test which variant drives highest revenue (not just conversions).
Example:
Variant A: 100 conversions, $5,000 revenue ($50 AOV)
Variant B: 120 conversions, $4,800 revenue ($40 AOV)
Variant B has more conversions but Variant A has higher revenue.
Winner depends on goal: volume (B) or revenue (A).
Report 4: Time-Series Performance
GA4 → Explore → Line chart
X-axis: Date Y-axis: Conversion rate Breakdown: First user manual ad content
Use case: See if performance changes over time (variant fatigue).
Common Mistakes
Mistake #1: Not Using utm_content at All
Result: Can't differentiate variants. Test is useless.
Fix: Always add unique utm_content per variant.
Mistake #2: Same utm_content for Multiple Variants
Wrong:
Variant A: utm_content=test
Variant B: utm_content=test
Result: Both variants merge. Can't compare.
Fix:
Variant A: utm_content=variant-a
Variant B: utm_content=variant-b
Mistake #3: Calling Winner Too Early
Wrong: "Variant A has 10 conversions, Variant B has 8. A wins!"
Problem: Not enough data. Could be random variance.
Fix: Wait for 100+ conversions per variant or 95% statistical significance.
Mistake #4: Testing Too Many Variants at Once
Wrong: 10 variants with 1,000 sessions total = 100 sessions per variant
Problem: Not enough traffic per variant for statistical significance.
Fix: Test 2-3 variants max, or increase total traffic.
Mistake #5: Changing Multiple Elements
Wrong: Variant A (blue CTA, long headline) vs Variant B (red CTA, short headline)
Problem: If B wins, was it the color or the headline?
Fix: Change ONE element at a time, or use multi-variable testing with proper sample size.
Prevention Checklist
✅ Add utm_content to every A/B test variant ✅ Use unique value per variant (no duplicates) ✅ Use descriptive names (not just "a" and "b") ✅ Wait for statistical significance before calling winner ✅ Document what you tested and results ✅ Apply winning variant to future campaigns ✅ Re-test periodically (winners don't stay winners forever)
✅ 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
FAQ
Can I use utm_term instead of utm_content for A/B tests?
You can, but utm_content is more appropriate.
utm_term is designed for keyword tracking (search ads). utm_content is designed for creative differentiation.
Stick with utm_content for A/B tests.
How many variants can I test at once?
Depends on your traffic volume.
Rule of thumb:
- Minimum 100 conversions per variant for reliable results
- With 1,000 conversions total → test 2-3 variants max
More variants = more traffic needed.
What if my test doesn't reach statistical significance?
Options:
- Wait longer (more traffic → more conversions → significance)
- Increase sample size (send to more people)
- Test bigger differences (current variants too similar?)
- Accept inconclusive (sometimes there's no clear winner)
Don't call a winner without significance. You'll make decisions based on noise, not signal.
Should I test email subject lines with utm_content?
utm_content won't track subject lines directly (it tracks clicks, not opens).
But you can still use it:
- Different subject line → different click behavior
- utm_content differentiates which email version drove clicks
For pure open rate testing: Use your ESP's A/B test feature (tracks opens).
Can I combine A/B testing with other utm_content uses?
Yes! Example:
Test: Which email CTA position performs best?
Hero button: utm_content=hero-cta
Footer link: utm_content=footer-link
AND test: Which CTA text performs best?
Hero button A: utm_content=hero-cta-buy-now
Hero button B: utm_content=hero-cta-shop-sale
Just ensure each combination has unique utm_content value.
How long should I run an A/B test?
Minimum: 1 week (accounts for day-of-week variations)
Ideal: 2 weeks
Or until: 100+ conversions per variant with 95% statistical significance
Whichever comes first.
Conclusion
A/B testing without utm_content = wasted opportunity to learn what works.
The fix:
-
Add utm_content to each variant
- Format:
utm_content={"{"}{"{"}element{"}"}{"}"}}-{"{"}{"{"}variant{"}"}{"}"}} - Example:
cta-buy-now,cta-shop-sale
- Format:
-
Split traffic evenly (50/50 or 33/33/33)
-
Wait for statistical significance (100+ conversions per variant)
-
Analyze in GA4 (compare conversion rates by utm_content)
-
Apply winner to all future campaigns
Result: Data-driven creative decisions that can increase conversion rates by 50-200%.
Related: utm_content Creative Tracking Guide