Skip to main content

Case Study: Server-Side Migration

How a mid-market e-commerce company recovered 35% of lost conversion data through server-side tagging implementation.

Client Overview

| Attribute | Details | |-----------|---------| | Industry | E-commerce (Fashion & Apparel) | | Annual Revenue | $15M | | Monthly Sessions | 500,000 | | Ad Spend | $80,000/month | | Platforms | Google Ads, Meta, Pinterest |

The Challenge

Symptoms

The client noticed concerning trends in their analytics:

  • Google Ads showing 40% more conversions than GA4
  • Meta ROAS declining quarter over quarter
  • Attribution models producing inconsistent results
  • 25% of transactions missing from analytics

Root Causes

| Issue | Impact | |-------|--------| | Safari ITP | 35% of traffic losing cookies after 7 days | | Ad blockers | 28% of visitors blocking tracking | | Third-party cookie deprecation | Remarketing audiences shrinking | | Client-side reliability | Network failures, slow connections |

Business Impact

Monthly Revenue Tracked:    $1,200,000
Actual Revenue:             $1,600,000
─────────────────────────────────────────
Tracking Gap:               $400,000 (25%)

Google Ads attributed:      $600,000
Meta attributed:            $350,000
Pinterest attributed:       $100,000
─────────────────────────────────────────
Total Platform Claims:      $1,050,000

Discrepancy from actual:    $550,000 unattributed

The Solution

Architecture Design

┌─────────────────────────────────────────────────────────┐
│                    Browser (Client)                      │
│                          │                               │
│         GTM Web Container (minimal tracking)            │
│                          │                               │
│              gtm.client-domain.com                      │
│              (First-party subdomain)                    │
│                          │                               │
└──────────────────────────┼──────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────┐
│              Server-Side GTM Container                   │
│                   (Cloud Run)                            │
│                          │                               │
│    ┌─────────────────────┼─────────────────────┐        │
│    │                     │                     │        │
│    ▼                     ▼                     ▼        │
│   GA4                 Meta CAPI           Google Ads    │
│   (full events)      (all purchases)      (enhanced)    │
│                                                         │
└─────────────────────────────────────────────────────────┘

Implementation Steps

Phase 1: Infrastructure (Week 1)

  • Deployed server container on Google Cloud Run
  • Configured first-party subdomain: gtm.clientdomain.com
  • Set up SSL certificates
  • Established monitoring and alerting

Phase 2: GA4 Migration (Week 2)

  • Migrated GA4 tracking to server-side
  • Enabled first-party cookies (HTTP-set)
  • Configured client claims for all events
  • Validated data quality against baseline

Phase 3: Marketing Pixels (Weeks 3-4)

  • Implemented Meta Conversions API
  • Set up Google Ads server-side conversion tracking
  • Enabled Enhanced Conversions with user data
  • Configured Pinterest API

Phase 4: Optimization (Ongoing)

  • Implemented deduplication
  • Added data enrichment
  • Set up real-time monitoring
  • Created performance dashboards

Technical Configuration

Server Container Tags:

| Tag | Configuration | Purpose | |-----|---------------|---------| | GA4 | Full event streaming | Complete analytics | | Meta CAPI | Purchase, AddToCart, ViewContent | Ad optimization | | Google Ads | Enhanced Conversions | Accurate attribution | | Pinterest API | Checkout events | Campaign optimization |

First-Party Cookie Settings:

// Cookie set by server (HTTP response header)
// Maximum 2-year expiration (vs 7-day client-side)
Set-Cookie: _ga=GA1.2.123456789.1234567890;
  Domain=.clientdomain.com;
  Path=/;
  Expires=Wed, 01 Jan 2026 00:00:00 GMT;
  SameSite=Lax;
  Secure;
  HttpOnly

Results

Data Recovery

| Metric | Before | After | Improvement | |--------|--------|-------|-------------| | Transactions tracked | 75% | 98% | +31% | | Conversion data quality | 65% | 95% | +46% | | Ad blocker bypass | 0% | 85% | New capability | | Cookie persistence | 7 days | 2 years | +10,000% |

Attribution Improvements

Before Server-Side:
─────────────────────────────────────────
Google Ads conversions:     2,100
Meta conversions:           1,400
Actual transactions:        5,000
Total tracked:              3,500 (70%)

After Server-Side:
─────────────────────────────────────────
Google Ads conversions:     3,200 (+52%)
Meta conversions:           2,100 (+50%)
Actual transactions:        5,000
Total tracked:              4,900 (98%)

Business Outcomes

ROAS Improvement:

| Platform | Before | After | Change | |----------|--------|-------|--------| | Google Ads | 3.2x | 4.8x | +50% | | Meta Ads | 2.1x | 3.4x | +62% | | Pinterest | 1.8x | 2.9x | +61% | | Blended | 2.6x | 4.0x | +54% |

Budget Reallocation:

With accurate attribution:

  • Identified underperforming campaigns (stopped)
  • Scaled high-performers (increased budget 40%)
  • Recovered $25,000/month in wasted spend
  • Improved overall efficiency by 35%

Cost Analysis

Implementation Costs:

| Item | Cost | |------|------| | Server infrastructure | $150/month | | SSL certificate | $0 (Let's Encrypt) | | Implementation services | $8,000 (one-time) | | Ongoing maintenance | $500/month |

ROI Calculation:

Monthly tracking improvement value:
- Recovered conversion data:     $120,000/mo
- Better attribution decisions:  $25,000/mo savings
- Total monthly value:           $145,000

Monthly costs:                   $650

ROI: 22,208% monthly
Payback period: < 1 week

Key Learnings

What Worked Well

  1. First-party domain approach - Critical for Safari/ITP
  2. Phased rollout - Allowed validation at each step
  3. Parallel tracking - Compared server vs client before switch
  4. Monitoring investment - Caught issues early

Challenges Overcome

| Challenge | Solution | |-----------|----------| | Cold start latency | Minimum 2 instances always running | | Meta deduplication | Same event_id in browser and server | | Data layer timing | Added event queue for reliability | | Cookie consent | Integrated with existing CMP |

Recommendations

For similar implementations:

  1. Start with GA4 - Establishes baseline
  2. Add Meta CAPI early - Biggest attribution impact
  3. Use managed hosting - Reduces operational burden
  4. Monitor continuously - Set up alerts day one
  5. Document everything - Essential for troubleshooting

Technical Specifications

Infrastructure

| Component | Specification | |-----------|---------------| | Platform | Google Cloud Run | | Region | us-central1 | | Min instances | 2 | | Max instances | 50 | | Memory | 1GB | | CPU | 1 vCPU |

Performance Metrics

| Metric | Target | Achieved | |--------|--------|----------| | Response time (p99) | < 200ms | 85ms | | Error rate | < 0.1% | 0.02% | | Availability | 99.9% | 99.97% |


Related: Server-Side Implementation | Server-Side Service