BACK TO BLOG
USE CASESNovember 11, 20268 min read

VWO With Causality Engine: A Test Winner and the Channel Mix

JH

By Joris van Huët

Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs

Published

2026-11-11

The short answer: a VWO winner and a channel read are both causal answers, about two different things, and the trouble starts when the first is used to settle the second. VWO, the experimentation and personalization platform now sold under the Wingify name, declares a variation better when its probability or significance crosses a threshold that is typically 95% (statistics guide). That tells you the page change worked on the visitors in the test. It says nothing about which ad budget brought them. Causality Engine answers that second question per channel from GA4's export, starting with a free first finding at app.causalityengine.ai/start.

Disclosure: I founded Causality Engine and own it, and this page recommends it. Every claim about it links to Causality Engine's own pages.

Before a lift figure reaches a budget meeting:

  • Subtract the test from the till. For example, two variations showing €80,360 of revenue in a fortnight the store booked €131,700 leave 131,700 - 80,360 = €51,340 the test never counted. Most of that gap comes from one default, explained below.
  • Check the GA4 connection you may already run. A "Send campaign data to GA4" connection pushes an event the moment a visitor joins a campaign (GA4 integration guide).
  • Ask which visitors saw neither version. On a personalization campaign, only the Holdback group sees the default page, and Holdback has to be switched on before launch (targeting guide).

Two questions, one table

VWO (Wingify)Causality Engine
The productA/B, split URL and multivariate tests, personalization, behaviour analytics (entry)One causal read of a GA4 export (entry)
What gets comparedVariations shown to visitors at randomChannels, from converting paths (how it works)
Revenue ruleA metric with Tracks revenue ticked; First value per visitor by default, or Sum (metrics guide)Caused share beside a last-click rebuild, data health from 0 to 100
VerdictWinner past the threshold, typically 95%; a disable recommendation under 5% (statistics guide)Raise, cut or hold, tested in one region first
What it writes into GA4experience_impression with exp_variant_string, on gtag.js (GA4 integration guide)Nothing
Link between the twoNoneNone (integrations)
Cost of lookingA custom proposal, no fixed plans; free trial (pricing, checked on 11 November 2026)Free first finding; €99 a read, excluding VAT (pricing, checked on 11 November 2026)

How VWO counts revenue inside a test

Revenue is a metric like any other. You create an event that carries the order value, then a metric on that event with Tracks revenue ticked, and the value is reported in the account's campaign currency (metrics guide). The guide is plain about the default: Wingify tracks only the first conversion of each visitor. You can switch to sum, average, last, minimum or maximum, though accounts created on or after 14 June 2026 are offered First value and Sum only.

So a customer who orders three times during a four-week test adds one order to the report unless Sum was chosen before launch.

A second trap sits in the snippet. Wingify's revenue troubleshooting article says that if the revenue code runs on pages beyond the thank-you page, revenue is tracked there too, wherever the campaign settings are present. Put it on the confirmation page only.

Then the verdict. Bayesian or frequentist, the report applies a threshold controlled by the false positive rate; past it, a variation is declared better than the baseline (statistics guide). That verdict rests on random assignment. It is a sound answer about the page.

What VWO puts into GA4

VWO changes pages, not links, so no traffic arrives under a VWO source and no channel is created. Under Configurations, Integrations, a Google Analytics 4 tile offers two connection types; "Send campaign data to GA4" is the one that writes. Enable it per campaign under Configuration, Integrations (GA4 integration guide).

What arrives depends on the tag. With gtag.js, the event is experience_impression and its parameter exp_variant_string reads wingify-, then the campaign ID and variation ID; accounts created before 14 June 2026 use a VWO- prefix. Through Google Tag Manager the event name differs. Creating GA4 audiences from variations is listed for the Enterprise plan, and they appear within 24 to 48 hours.

For a Shopify store, a separate integration pushes the same campaign and variation data into Shopify's Web Pixel event stream for custom pixels to forward (Shopify integration guide).

None of it changes how GA4 files a session's channel. The visit keeps the source and medium it came with, under Google's default channel group rules.

Worked example: the lift and the claims

For example, with numbers made up for this page and no store behind them: an outdoor clothing shop tests a new size guide on product pages for 14 days. Each arm gets 22,600 visitors. The control shows €38,420 and the variation €41,940, both on the default First value rule. The lift is (41,940 - 38,420) ÷ 38,420 = 9.2%, and the report says whether it passed the threshold.

Over the same 14 days the store books €131,700. Meta claims €61,200, Google Ads €52,900 and the email platform €34,600: 61,200 + 52,900 + 34,600 = €148,700, which is €17,000 more than the store took.

Now the tempting move: "Meta drove the traffic, the size guide converted it, so Meta's return just improved by 9.2%." That multiplies one causal estimate by a claim nobody has tested. The size guide's lift belongs to every channel's visitors at once.

The read does not see the size guide at all. Per its how-it-works page, it splits Direct back to the channels that sent those buyers and places each channel's caused share next to last-click, with a data-health score and a next step to test in one region. If Paid Social's caused share lands well below Meta's €61,200, the test result does not rescue it. Hold the budget until the one-region test has run.

The free check: cut the test by channel in GA4

This uses VWO's own data and costs nothing. Register exp_variant_string as an event-scoped custom dimension, which is how Google lets you report on a custom event parameter (custom dimensions help). Then build an Exploration with that dimension, Session default channel group and purchase revenue.

What you are looking for is whether the lift holds inside each channel. For example, a 9.2% lift overall that is 14% for Organic Search visitors and 1% for Paid Social visitors says the size guide helps people who arrive with intent, which a channel budget meeting should hear before anyone credits Meta.

On a personalization campaign, the documented check is Holdback. It reserves 5% of campaign traffic for the default experience by default, up to 50%, and the report then shows the expected improvement of all experiences combined against that group (targeting guide, report guide).

For the channel side, download the Attribution paths CSV with the purchase key event selected and drop it on the start page, where the preview runs in your browser. Causality Engine, which I founded, charges €99 once for the full read, excluding VAT, refundable within 30 days (pricing, checked on 11 November 2026).

What the read does not do for a VWO team

  • No variation, no page. The read works per channel, so which headline won stays in the VWO report.
  • History first. It needs 12 months or more of GA4 data and calls a channel under 1% of credit on both methods too small to act on (how it works).
  • No experimentation tooling. Traffic splits, statistics engines, heatmaps and recordings have no counterpart in it.

Holdback is off until someone switches it on before launch, and Wingify's advice is to start small, so a personalization programme can renew year after year on experiences that beat each other without ever being measured against the plain page.

See also

FAQ

Can VWO send its test data to Causality Engine?

No, and there is no route for it. The read takes a CSV downloaded from GA4 and works on the channels recorded there (integrations page). VWO's experience_impression events live in the same property but play no part in the per-channel read.

Why is VWO's revenue lower than Shopify's for the same weeks?

Visitors outside the campaign are not in the report, and by default each tested visitor's first conversion is the only one counted (metrics guide).

Can I change Holdback after the campaign starts?

You cannot enable or disable it once the campaign is live; the percentage can still be adjusted, though Wingify warns that changing a running campaign may affect the accuracy of results (targeting guide).

TAGS
Causality EngineVWOExperimentation AttributionGA4Worked Example

ABOUT THE AUTHOR

I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.

I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.

Agentic marketing, built for your team

The agents in this article, built into your workflows and handed over to your team: the first one within two weeks.

With Joris van Huët, interim and fractional CMO in Utrecht. From EUR 5,000 a month, monthly cycles, a 30-day exit.