A/B Testing with utm_content: Track Every Variant in GA4

UTMGuard Team
7 min readbest-practices

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:

ContentSessionsTrial SignupsConversion Rate
cta-start-free-trial2,000402.0%
cta-get-started-free2,0001206.0%
cta-try-it-free2,000201.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:

  1. Use "Get Started Free" as default CTA for all future emails
  2. Update website CTA from "Start Free Trial" to "Get Started Free"
  3. 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

Get Your Free Audit Report

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

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

Run Complete UTM Audit (Free Forever)

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:

  1. Wait longer (more traffic → more conversions → significance)
  2. Increase sample size (send to more people)
  3. Test bigger differences (current variants too similar?)
  4. 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:

  1. Add utm_content to each variant

    • Format: utm_content={"{"}{"{"}element{"}"}{"}"}}-{"{"}{"{"}variant{"}"}{"}"}}
    • Example: cta-buy-now, cta-shop-sale
  2. Split traffic evenly (50/50 or 33/33/33)

  3. Wait for statistical significance (100+ conversions per variant)

  4. Analyze in GA4 (compare conversion rates by utm_content)

  5. 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