A/B testing is a cornerstone of optimizing digital experiences. Whether you’re testing landing page designs, call-to-action buttons, or content layouts, a well-structured A/B test can significantly impact conversion rates. In this blog post, we’ll walk you through how to set up an A/B testing script using Google Tag Manager (GTM) and send the results to Google Analytics 4 (GA4) for analysis.
By the end of this guide, you’ll have a ready-to-use script that:
- Randomly assigns users to one of two versions (A or B).
- Redirects users to the corresponding page based on their assignment.
- Tracks experiment participants and their group in GA4.
Why Use GTM and GA4 for A/B Testing?
Google Tag Manager simplifies deploying scripts on your website without needing direct access to the codebase. With GA4’s advanced analytics capabilities, you can measure the performance of your A/B test and gain actionable insights, such as how users interact with each version.
In our case is a very important tool to allow the QA team adjust the experiment probability and change the percentage of users going to each version.
The Script: Setting Up A/B Testing in GTM
Here’s the complete JavaScript code you’ll use in GTM:
(function() {
// Define the percentage of users entering the experiment (0 to 100)
var experimentPercentage = 50; // Example: 50% of users enter the experiment
// Define the probability of assigning users to version B (0 to 1)
var bVersionProbability = 0.5; // Example: 50% of experiment users go to version B
// Define the URLs for the A and B versions
var urlA = "https://example.com/version-a";
var urlB = "https://example.com/version-b";
// Helper function to determine if a user enters the experiment
function isInExperiment() {
return Math.random() < experimentPercentage / 100;
}
// Retrieve the stored variant from localStorage to maintain consistency
var variant = localStorage.getItem('abTestVariant');
// If no variant is stored and the user enters the experiment, assign one
if (!variant) {
if (isInExperiment()) {
variant = Math.random() < bVersionProbability ? 'B' : 'A';
localStorage.setItem('abTestVariant', variant);
// Send an event to GA4 for entering the experiment
sendGA4Event("experiment_entered", { experiment_group: variant });
} else {
variant = 'Control'; // Not in the experiment
localStorage.setItem('abTestVariant', variant);
}
}
// Redirect users based on the assigned variant
if (variant === 'A' && window.location.href !== urlA) {
window.location.href = urlA;
} else if (variant === 'B' && window.location.href !== urlB) {
window.location.href = urlB;
}
// Send an event to Google Analytics 4 for the user's variant assignment
sendGA4Event("ab_test_assignment", { ab_test_variant: variant });
// Function to push an event to the GA4 Data Layer
function sendGA4Event(eventName, params) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: eventName,
...params
});
}
})();
Customizable Experiment Settings:
- Control the percentage of users who enter the experiment (experimentPercentage).
- Set the probability of users being assigned to version B (bVersionProbability).
Consistent User Experience:
- Once assigned to a group, users stay in the same group throughout their session using localStorage.
Google Analytics 4 Integration:
- Tracks the experiment participation (experiment_entered) and the variant assignment (ab_test_assignment).
How to Implement the Script in Google Tag Manager
Follow these steps to deploy the script:
Step 1: Create a Custom HTML Tag
- Open GTM and go to Tags > New > Custom HTML.
- Paste the script into the editor.
- Name the tag (e.g., “A/B Test Redirect and Tracking”).
Step 2: Add a Trigger
- Assign a Page View trigger to the tag so it fires on all page views.
- Save the tag.
Step 3: Preview and Test
- Use GTM’s Preview Mode to test the script.
- Check if users are correctly assigned to variants and redirected accordingly.
Setting Up Event Tracking in GA4
Step 1: Define Events
The script sends two events to GA4:
- experiment_entered: Tracks users entering the experiment. Includes the parameter experiment_group with values A or B.
- ab_test_assignment: Tracks all users and their assigned group (A, B, or Control).
Step 2: Create Custom Dimensions
- Go to Admin > Custom Definitions > Custom Dimensions in GA4.
- Create dimensions for:
- experiment_group (from experiment_entered).
- ab_test_variant (from ab_test_assignment).
Step 3: Validate Events
- Use GA4’s DebugView to verify the events.
- Confirm that the events include the correct parameters.
Analyzing Your A/B Test in GA4
Once the data starts flowing into GA4, use Exploration Reports to analyze your test:
- Users Entering the Experiment: Filter by the experiment_entered event to see how many users entered the experiment.
- Variant Distribution: Break down experiment_group to measure how users are split between version A and version B.
- Conversion Analysis: Combine this data with your conversion events to determine which variant performs better.
Setting up A/B testing with GTM and GA4 provides a powerful, flexible way to experiment and optimize your website. This script ensures you can measure participation and results accurately, giving you the insights needed to make data-driven decisions.
Need help implementing this script or analyzing your results? Contact us at Deeploy for expert assistance in A/B testing, analytics, and digital marketing optimization.