Overview
Currently, this extension is admin only, contact support@digioh.com for details on installing and deploying.
The Global Experience Experiment extension lets you measure the true business impact of your Digioh campaigns by comparing visitors who see campaigns against a holdout group who do not. This is the only Digioh-native way to answer the question, “Did the campaign actually cause the lift, or would those visitors have converted anyway?”
The extension assigns each browser to a test group or a control group, sets a GA4 user property recording the assignment, and lets you gate campaign delivery so that only the test group sees the experience. The user property flows to GA4 through the page’s existing gtag or dataLayer instance, which is why this extension requires a standard client-side GA4 implementation and is set up by the Digioh team rather than self-serve curently.
Prerequisites
Before requesting the extension, confirm the following:
- Your site is using Google Analytics 4 with the standard gtag.js install or Google Tag Manager. The extension delivers its events through the page’s gtag instance. If your site routes GA4 server-side or uses a proxied setup that does not expose gtag on the page, the standard extension will not work. Contact your CSM for a custom setup.
- Digioh is connected to your GA4 property and Auto Setup has been run. (See: Connecting Digioh to Google Analytics 4.)
- You have at least one published Digioh campaign you want to test.
How It Works
A working experiment has three moving parts. Missing any one of them will contaminate the data.
Part 1: The extension buckets each visitor.
Once installed, the extension reads an account-level metadata value that sets your split percentage, then assigns each browser into either the test group (value 1) or the control group (value 0). The assignment is stored in the visitor’s browser under a localStorage key called digioh_global_experience_test_group.
The extension also sets a GA4 user property called digioh_experience_group with the same value (1 for test, 0 for control). This is sent through the page’s gtag instance or dataLayer. If neither is present on the page, the assignment will still happen in localStorage, but the data will not reach GA4.
The assignment fires only once per browser. On return visits, the extension reads the existing localStorage value instead of re-randomizing.
Part 2: You gate your test campaigns with a display condition.
The extension does not automatically hide or show campaigns. You must add a display condition to each campaign you want to be part of the experiment. Without this step, your campaigns will fire for both groups and contaminate the test.
Open the campaign in Digioh, go to Conditions, and add a localStorage condition:
- For test-variant campaigns: localStorage value of digioh_global_experience_test_group equals 1
- For control-variant campaigns: equals 0
For a pure holdout test (control sees no campaign at all), only the test-variant campaigns get the condition. The control group sees nothing because no campaigns are gated to them.
Part 3: GA4 audiences collect the two groups.
The extension sets a GA4 user property called digioh_experience_group. To capture and report on this value, a user-scoped custom dimension with parameter name digioh_experience_group must exist in your GA4 property. The Digioh team will create this for you during setup.
No GA4 audiences are required with the gtag approach. Once the custom dimension is active, you can use it directly as a dimension in GA4 Explore reports to split test vs. control.
Configuration Steps
1. Install the extension. Contact the Digioh team for this.
2. Set your traffic split. The default split is 50/50. To change it, add account-level metadata with the key global_experience_test_group and a value between 1 and 99 representing the percentage assigned to the test group. For example, a value of 25 sends 25% of visitors to the test group and 75% to the control group. Values of 0 or 100 are not accepted and will default to 50.
3. Add display conditions to your test campaigns. Open each campaign that should be part of the experiment, go to Conditions, and add the localStorage condition described above. Repeat for every campaign in the experiment. This step is the most common point of failure: skip it and the experiment is invalid.
4. Confirm the custom dimension exists. In your GA4 Admin, go to Custom Definitions and confirm a user-scoped custom dimension with parameter name digioh_experience_group is present. If it is missing, contact Digioh Support before proceeding.
5. Verify the user property is being set. Visit your site in a clean browser and open DevTools. Under Application > Local Storage, confirm the key digioh_global_experience_test_group is present with a value of 1 or 0. To confirm GA4 is receiving the user property, open GA4 DebugView while on the site – you should see digioh_experience_group appear under user properties.
Reading Your Results
Wait at least 24 hours after publishing for GA4 to begin populating the audiences. For meaningful results, wait until each audience has at least 500 users, and ideally more than 5,000 per group.
In GA4, open Explore and create a free-form report:
- Dimensions: digioh_experience_group (user-scoped custom dimension)
- Metrics: Total users, total revenue, transactions, average purchase revenue, session conversion rate (purchase)
- Filter the report to include only rows where digioh_experience_group equals 1 or 0
Always compare the two groups using per-user metrics, not raw totals. Bucket sizes will drift over time because of storage clearing, private browsing, and the split percentage itself. Raw revenue totals between the two groups are meaningless. The metrics that matter:
- Revenue per user: total revenue divided by total users
- Per-user conversion rate: transactions divided by total users
- AOV: average purchase revenue (already a per-user metric)
Lift is calculated as: (test metric minus control metric) divided by control metric. A positive number means the test group (visitors who saw the campaign) outperformed the control group.
Stopping the Experiment
To stop the experiment cleanly, unpublish the extension. Setting the metadata value to 0 or 100 will not stop it. The extension rejects those values and defaults back to 50.
If you want to re-randomize all visitors into new groups (for example, to run a second experiment on top of the same audience), you will need to version the localStorage key. Contact Digioh Support for help with this step.
Limitations
A few things to keep in mind when interpreting results:
- Browser-scoped, not person-scoped. The assignment lives in the visitor’s browser. A user on two devices will be bucketed independently on each device. Private browsing, storage clearing, and Safari ITP will re-randomize the visitor on their next session.
- The custom dimension only collects data going forward. Visitors who were bucketed before the custom dimension was created in GA4 will have no value recorded for digioh_experience_group. If the extension is installed before the custom dimension is set up, expect a gap in the early data.
- Changing the split affects only new visitors. Visitors who have already been bucketed keep their original assignment. If you change the metadata from 50 to 25 after the experiment is live, existing visitors stay where they were.
- Sample size matters. Below 500 users per group, noise dominates and you should not report lift. Between 500 and 5,000 users per group, results are directionally useful but should be flagged as low confidence. Above 5,000 users per group with a 10% or larger lift, you have a meaningful signal.
Need Help?
If you want to set up a Global Experience Experiment for your account, or if you have questions about reading the results, reach out to your CSM or contact support@digioh.com.