Skip to content
  • There are no suggestions because the search field is empty.

Complete Guide: Analyzing Convert.com Experiments in Looker Studio with GA4 Data

Visualize and Optimize A/B Test Results Using Looker Studio and GA4

Introduction

Looker Studio (formerly Google Data Studio) provides a powerful, free platform for analyzing Convert.com experiment data from Google Analytics 4. This comprehensive guide walks you through setting up professional experiment analysis dashboards that connect Convert.com's experience_impression events with your GA4 conversion data.

Why Choose Looker Studio for Convert.com Analysis?

Advantages Over Other Tools

  • Cost-Effective: Completely free with Google account
  • Native GA4 Integration: Direct connection to GA4 without BigQuery complexity
  • Real-Time Data: Live dashboard updates as data flows in
  • Easy Sharing: Simple collaboration with stakeholders
  • No Technical Barriers: Drag-and-drop interface accessible to non-technical users
  • Flexible Visualization: Rich chart types for experiment analysis

When to Use Looker Studio vs. Other Tools

Choose Looker Studio when:

  • Budget constraints exist
  • Quick setup is prioritized
  • Team has mixed technical expertise
  • Standard A/B testing reports are sufficient
  • You need stakeholder-friendly dashboards

Data Structure Overview

Convert.com Event Format

  • Event Name: experience_impression
  • Key Parameter: exp_variant_string
  • Format: CONV-{experiment_id}-{variation_id}
  • Example: CONV-100018331-100099919

Your GA4 Conversion Events

Convert.com only sends impression tracking. You'll analyze these against your existing GA4 events:

  • E-commerce events (purchase, add_to_cart)
  • Lead generation (generate_lead, sign_up)
  • Custom conversion events specific to your business

Setting Up Your Data Source

Method 1: Direct GA4 Connection (Simple Setup)

Step 1: Create New Data Source

  1. Go to datastudio.google.com
  2. Click "Create" → "Data Source"
  3. Select "Google Analytics" connector
  4. Choose your GA4 property
  5. Click "Connect"

Step 2: Configure Basic Filters In the data source configuration:

  • Add filter: Event name contains experience_impression
  • This captures all Convert.com impression data

Limitations of Direct Connection:

  • Limited custom field capabilities
  • Cannot perform complex SQL operations
  • May not support advanced attribution modeling

Method 2: BigQuery Connection (Recommended)

Step 1: Set Up BigQuery Data Source

  1. In Looker Studio, click "Create" → "Data Source"
  2. Select "BigQuery" connector
  3. Choose your project and GA4 BigQuery dataset
  4. Select "Custom Query" option

Step 2: Implement the Complete Analysis Query

WITH experiment_data AS (
  SELECT
    PARSE_DATE('%Y%m%d', event_date) AS date,

    -- Extract experiment details from Convert.com
    REGEXP_EXTRACT(
      (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'exp_variant_string'),
      r'CONV-(\d+)-\d+'
    ) AS experiment_id,

    REGEXP_EXTRACT(
      (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'exp_variant_string'),
      r'CONV-\d+-(\d+)'
    ) AS variation_id,

    -- Create readable variation labels
    CASE 
      WHEN REGEXP_EXTRACT(
        (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'exp_variant_string'),
        r'CONV-\d+-(\d+)'
      ) = 'YOUR_CONTROL_VARIATION_ID' THEN 'Control'
      WHEN REGEXP_EXTRACT(
        (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'exp_variant_string'),
        r'CONV-\d+-(\d+)'
      ) = 'YOUR_VARIATION_A_ID' THEN 'Variation A'
      WHEN REGEXP_EXTRACT(
        (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'exp_variant_string'),
        r'CONV-\d+-(\d+)'
      ) = 'YOUR_VARIATION_B_ID' THEN 'Variation B'
      ELSE 'Other'
    END AS variation_label,

    user_pseudo_id,
    event_name,
    event_timestamp,

    -- Categorize events
    CASE 
      WHEN event_name = 'experience_impression' THEN 'Impression'
      WHEN event_name IN ('purchase', 'generate_lead', 'sign_up', 'subscribe') THEN 'Conversion'
      WHEN event_name IN ('add_to_cart', 'begin_checkout', 'view_item') THEN 'Micro-Conversion'
      ELSE 'Other'
    END AS event_category,

    COALESCE(
      (SELECT value.double_value FROM UNNEST(event_params) WHERE key = 'value'),
      ecommerce.purchase_revenue
    ) AS event_value,

    device.category AS device_category,
    device.operating_system AS operating_system,
    geo.country AS country,
    geo.region AS region,

    traffic_source.source AS traffic_source,
    traffic_source.medium AS traffic_medium,
    traffic_source.name AS campaign_name

  FROM `YOUR_PROJECT_ID.analytics_XXXXXX.events_*`
  WHERE 
    _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)) 
    AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
    AND (
      event_name = 'experience_impression' OR
      event_name IN (
        'purchase', 'generate_lead', 'sign_up', 'subscribe',
        'add_to_cart', 'begin_checkout', 'view_item'
      )
    )
),

user_impressions AS (
  SELECT 
    user_pseudo_id,
    experiment_id,
    variation_id,
    variation_label,
    MIN(event_timestamp) AS first_impression_time,
    MIN(date) AS first_impression_date
  FROM experiment_data 
  WHERE event_category = 'Impression'
  GROUP BY 1, 2, 3, 4
),

attributed_events AS (
  SELECT 
    e.*,
    ui.first_impression_time,
    ui.first_impression_date,

    CASE 
      WHEN e.event_category IN ('Conversion', 'Micro-Conversion') 
        AND e.event_timestamp >= ui.first_impression_time
      THEN TIMESTAMP_DIFF(
        TIMESTAMP_MICROS(e.event_timestamp), 
        TIMESTAMP_MICROS(ui.first_impression_time), 
        HOUR
      )
    END AS hours_to_conversion,

    CASE 
      WHEN e.event_category IN ('Conversion', 'Micro-Conversion') 
        AND e.event_timestamp >= ui.first_impression_time
        AND e.event_timestamp <= ui.first_impression_time + (30 * 24 * 60 * 60 * 1000000)
      THEN 1 
      ELSE 0 
    END AS is_attributed_conversion

  FROM experiment_data e
  LEFT JOIN user_impressions ui 
    ON e.user_pseudo_id = ui.user_pseudo_id
    AND e.experiment_id = ui.experiment_id
  WHERE ui.user_pseudo_id IS NOT NULL
)

SELECT 
  date,
  experiment_id,
  variation_id, 
  variation_label,
  event_category,
  event_name,
  device_category,
  operating_system,
  country,
  region,
  traffic_source,
  traffic_medium,
  campaign_name,

  COUNT(*) AS total_events,
  COUNT(DISTINCT user_pseudo_id) AS unique_users,
  SUM(COALESCE(event_value, 0)) AS total_revenue,
  AVG(COALESCE(event_value, 0)) AS avg_event_value,

  SUM(is_attributed_conversion) AS attributed_conversions,
  COUNT(DISTINCT CASE WHEN is_attributed_conversion = 1 THEN user_pseudo_id END) AS unique_converters,

  AVG(CASE WHEN hours_to_conversion IS NOT NULL THEN hours_to_conversion END) AS avg_hours_to_conversion,

  COUNT(DISTINCT CASE WHEN event_category = 'Impression' THEN user_pseudo_id END) AS users_exposed

FROM attributed_events
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
ORDER BY 1 DESC, 4, 5;

Step 3: Validate Your Data Before proceeding, run this validation query:

SELECT 
  event_name,
  COUNT(*) AS event_count,
  COUNT(DISTINCT user_pseudo_id) AS unique_users,
  MIN(event_date) AS earliest_date,
  MAX(event_date) AS latest_date
FROM `YOUR_PROJECT_ID.analytics_XXXXXX.events_*`
WHERE event_name = 'experience_impression'
   OR event_name IN ('purchase', 'generate_lead', 'sign_up')  -- Your events
GROUP BY 1
ORDER BY 2 DESC;

Building Your Dashboard

Dashboard Structure Template

┌─────────────────────────────────────────────────────────────┐
│              CONVERT.COM EXPERIMENT ANALYSIS                │
│                     [Dashboard Title]                       │
├─────────────────┬─────────────────┬─────────────────────────┤
│ Date Range      │ Experiment ID   │ Variation Filter         │
│ [Date Control]  │ [Dropdown]      │ [Multi-select]           │
├─────────────────┴─────────────────┴─────────────────────────┤
│                EXPERIMENT OVERVIEW                          │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐│
│  │   CONTROL   │ │ VARIATION A │ │    STATISTICAL          ││
│  │  Scorecard  │ │  Scorecard  │ │    SIGNIFICANCE         ││
│  │ Users: 1,234│ │ Users: 1,187│ │ Confidence: 95%         ││
│  │ Conv: 12.4% │ │ Conv: 14.7% │ │ Uplift: +18.5%          ││
│  │ Rev: $12,450│ │ Rev: $14,230│ │ Winner: Variation A     ││
│  └─────────────┘ └─────────────┘ └─────────────────────────┘│
├─────────────────────────────────────────────────────────────┤
│                    PERFORMANCE TRENDS                       │
│              [Time Series Chart - Daily Metrics]            │
├─────────────────┬─────────────────┬─────────────────────────┤
│  CONVERSION     │    DEVICE       │      TRAFFIC             │
│    FUNNEL       │ PERFORMANCE     │      SOURCES             │
│ [Funnel Chart]  │ [Bar Chart]     │  [Pie Chart]             │
├─────────────────┴─────────────────┴─────────────────────────┤
│                GEOGRAPHIC ANALYSIS                          │
│              [World Map - Performance by Country]           │
├─────────────────────────────────────────────────────────────┤
│                   DETAILED DATA TABLE                       │
│        [Paginated table with drill-down capability]         │
└─────────────────────────────────────────────────────────────┘

Step-by-Step Dashboard Creation

1. Set Up Filter Controls

Date Range Control:

  • Control type: Date range control
  • Default value: Last 30 days
  • Date format: YYYY-MM-DD

Experiment Filter:

  • Control type: Drop-down list
  • Control field: Experiment ID
  • Allow multiple selections: No

Variation Filter:

  • Control type: Multi-select dropdown
  • Control field: Variation Label
  • Default: Select all

Device Filter:

  • Control type: Multi-select dropdown
  • Control field: Device Category
  • Default: Select all

2. Create Core Performance Scorecards

Control Scorecard:

Chart Type: Scorecard  
Filters: Variation Label = "Control"  
Metrics:  
- Users Exposed (unique_users where event_category = "Impression")  
- Conversion Rate (calculated field)  
- Total Revenue (total_revenue where event_category = "Conversion")  

Variation A Scorecard:

Chart Type: Scorecard  
Filters: Variation Label = "Variation A"  
Metrics: [Same as Control]  

Statistical Summary Scorecard:

Chart Type: Text/Scorecard  
Content: Calculated difference between variations  
- Uplift percentage  
- Confidence interval (if calculated)  
- Winner declaration  

3. Performance Trend Chart

Configuration:

  • Chart type: Time series (line chart)
  • Date dimension: Date
  • Breakdown dimension: Variation Label
  • Metrics: Conversion Rate, Revenue per User
  • Secondary axis: Total Revenue

Styling:

  • Control: Blue line (#1f77b4)
  • Variation A: Orange line (#ff7f0e)
  • Variation B: Green line (#2ca02c)

4. Conversion Funnel Analysis

Chart Type: Stepped area chart or Funnel chart Steps:

  1. Users Exposed (Impressions)
  2. Micro-Conversions (addtocart, etc.)
  3. Primary Conversions (purchase, sign_up, etc.)

Configuration:

Dimensions: Event Category, Variation Label  
Metrics: Unique Users  
Sort: Event Category (custom order: Impression, Micro-Conversion, Conversion)  

5. Device Performance Analysis

Chart Type: Grouped bar chart Configuration:

  • Dimension: Device Category
  • Breakdown: Variation Label
  • Metrics: Conversion Rate, Revenue per User
  • Sort: By total users (descending)

6. Geographic Heat Map

Chart Type: Geo chart (World map) Configuration:

  • Geographic dimension: Country
  • Metrics: Users Exposed, Conversion Rate
  • Color metric: Conversion Rate
  • Size metric: Users Exposed

7. Traffic Source Analysis

Chart Type: Pie chart Configuration:

  • Dimension: Traffic Source
  • Metric: Users Exposed
  • Max categories: 10
  • Group smaller segments: Yes

8. Detailed Data Table

Configuration:

Dimensions:
- Date
- Variation Label  
- Event Category
- Device Category
- Country
- Traffic Source

Metrics:
- Unique Users
- Total Events
- Attributed Conversions
- Total Revenue
- Conversion Rate
- Revenue per User

Features:
- Enable pagination (50 rows per page)
- Enable search
- Enable export
- Sort by Date (descending)

Advanced Calculated Fields

Essential Calculated Fields to Create

1. Conversion Rate

Formula: Unique Converters / Users Exposed * 100  
Type: Number  
Format: Percentage (2 decimal places)  

2. Revenue per User (RPU)

Formula: Total Revenue / Users Exposed  
Type: Currency  
Format: USD (2 decimal places)  

3. Average Order Value (AOV)

Formula: Total Revenue / Attributed Conversions  
Type: Currency  
Format: USD (2 decimal places)  

4. Uplift Percentage

Formula:  
CASE  
  WHEN Variation Label = "Control" THEN 0  
  ELSE ((Conversion Rate - Control Conversion Rate) / Control Conversion Rate) * 100  
END  
Type: Number  
Format: Percentage (1 decimal place)  

5. Time to Conversion (Days)

Formula: Avg Hours to Conversion / 24  
Type: Number  
Format: Number (1 decimal place)  

6. Statistical Significance Indicator

Formula:  
CASE  
  WHEN Users Exposed >= 1000 AND ABS(Uplift Percentage) >= 10 THEN "Significant"  
  WHEN Users Exposed >= 500 AND ABS(Uplift Percentage) >= 15 THEN "Likely Significant"  
  ELSE "Not Significant"  
END  
Type: Text  

Blended Data Sources (Advanced)

Combining Multiple Data Sources

For more sophisticated analysis, blend your Convert.com data with other sources:

Primary Source: Convert Experiment Data
  • Your main BigQuery query results
Secondary Source: GA4 Attribution Data
  • Additional attribution models
  • Multi-channel funnel data
Tertiary Source: External Data
  • Weather data for seasonal businesses
  • Stock market data for financial services
  • Custom business metrics

Blending Configuration:

Join Type: Left Outer Join  
Join Key: User Pseudo ID + Date  
Date Range: Match primary source  

Dashboard Optimization

Performance Best Practices

  1. Query Optimization:
    • Use date partitioning in BigQuery queries
    • Limit data range to necessary periods (90 days max)
    • Use aggregated data where possible
  2. Chart Optimization:
    • Limit table rows (max 1000 for performance)
    • Use appropriate chart types for data volume
    • Enable data sampling for large datasets
  3. Refresh Settings:
    • Set data freshness to 4-12 hours (depending on needs)
    • Enable automatic refresh for live dashboards
    • Use manual refresh for ad-hoc analysis

Mobile Responsiveness

Ensure dashboard works on mobile devices:

  • Use flexible layouts
  • Prioritize key metrics in top sections
  • Test on various screen sizes
  • Consider separate mobile version for executives

Sharing and Collaboration

Access Control Setup

Viewer Access:

  • Stakeholders who need to view results
  • Marketing team members
  • Executive leadership

Editor Access:

  • Analytics team
  • Marketing managers
  • Growth team leads

Owner Access:

  • Primary analyst
  • Data team leads

Scheduled Reports

Set up automated email reports:

  1. Go to dashboard → Share → Schedule email delivery
  2. Configure recipients and frequency
  3. Set up conditional alerts for significant changes
  4. Include PDF exports for offline review

Troubleshooting Common Issues

Data Discrepancies

Issue: Numbers don't match GA4 interface Solution:

  • Check date ranges alignment
  • Verify event filtering logic
  • Account for data processing delays
  • Review attribution settings

Issue: Missing conversion events Solution:

  • Verify event names match your GA4 setup
  • Check BigQuery export settings
  • Confirm events are being tracked properly

Performance Problems

Issue: Dashboard loading slowly Solution:

  • Reduce date range
  • Optimize BigQuery queries
  • Use data extracts instead of live queries
  • Remove unnecessary dimensions/metrics

Issue: Data not updating Solution:

  • Check data source refresh settings
  • Verify BigQuery export is running
  • Review data permissions
  • Check for quota limits

Testing Your Implementation

Validation Checklist

  • [ ] Data Accuracy Test:
-- Compare total events in dashboard vs. BigQuery  
SELECT COUNT(*)  
FROM your_main_query  
  • [ ] Attribution Test:
-- Verify conversion attribution logic  
SELECT user_pseudo_id, event_name, event_timestamp  
FROM your_data  
WHERE user_pseudo_id = 'sample_user_id'  
ORDER BY event_timestamp  
  • [ ] Experiment Segmentation Test:
    • Verify users appear in only one variation
    • Check variation ID extraction accuracy
    • Confirm experiment date ranges
  • [ ] Performance Test:
    • Load dashboard with maximum date range
    • Test with multiple users simultaneously
    • Verify mobile compatibility

Sample Size Validation

Ensure statistical reliability:

-- Check sample sizes by variation  
SELECT  
  variation_label,  
  COUNT(DISTINCT user_pseudo_id) AS sample_size,  
  COUNT(DISTINCT CASE WHEN event_category = 'Conversion' THEN user_pseudo_id END) AS converters  
FROM your_experiment_data  
WHERE event_category IN ('Impression', 'Conversion')  
GROUP BY 1  

Minimum Requirements:

  • At least 100 conversions per variation
  • At least 1,000 users per variation
  • Test duration of at least 1-2 weeks

Customization Guide

Industry-Specific Adaptations

E-commerce

-- Add product-specific metrics  
SELECT  
  ...,  
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'item_category') AS product_category,  
  (SELECT value.int64_value FROM UNNEST(event_params) WHERE key = 'quantity') AS quantity  
FROM events_table  

SaaS/B2B

-- Add subscription and trial metrics  
CASE  
  WHEN event_name = 'trial_start' THEN 'Trial'  
  WHEN event_name = 'subscription_purchase' THEN 'Subscription'  
  WHEN event_name = 'feature_usage' THEN 'Engagement'  
END AS event_category  

Media/Content

-- Add engagement metrics  
SELECT  
  ...,  
  (SELECT value.int64_value FROM UNNEST(event_params) WHERE key = 'engagement_time_msec') AS engagement_time,  
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'content_group1') AS content_category  

Custom Event Integration

For specialized tracking:

-- Custom event categorization  
CASE  
  WHEN event_name LIKE 'custom_%' THEN 'Custom Actions'  
  WHEN event_name IN ('your_specific_events') THEN 'Business KPIs'  
  WHEN event_name LIKE 'gtm_%' THEN 'GTM Events'  
END AS custom_event_category  

Maintenance and Updates

Regular Maintenance Tasks

Weekly:

  • Review data quality and completeness
  • Check for new experiments in Convert.com
  • Validate attribution logic accuracy
  • Monitor dashboard performance

Monthly:

  • Update variation ID mappings for new tests
  • Review and optimize BigQuery queries
  • Archive completed experiments
  • Update stakeholder access as needed

Quarterly:

  • Conduct full data audit
  • Review and update conversion event definitions
  • Optimize dashboard layout based on user feedback
  • Plan new features and enhancements

Version Control

Maintain documentation for:

  • BigQuery query changes
  • Dashboard layout modifications
  • New calculated field additions
  • Access control updates

Conclusion

This comprehensive Looker Studio implementation provides a robust foundation for analyzing Convert.com experiments. The template balances ease of use with analytical depth, making A/B testing insights accessible to both technical and non-technical team members.

Key Benefits Achieved:

  • Cost-effective experimentation analysis
  • Real-time performance monitoring
  • Comprehensive attribution modeling
  • Collaborative decision-making tools
  • Scalable framework for future experiments

Next Steps:

  1. Implement the basic dashboard using provided templates
  2. Customize for your specific business metrics
  3. Train team members on dashboard usage
  4. Establish regular review and optimization processes
  5. Expand analysis to include advanced statistical testing

By following this guide, you'll have a professional-grade experiment analysis platform that rivals expensive specialized tools, all built on free Google infrastructure.

Next Step:

Go to  Dashboard Template Guide