BACK TO BLOG
USE CASESNovember 11, 20268 min read

Windsor.ai With Causality Engine: Weigh the Blended Totals

JH

By Joris van Huët

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

Published

2026-11-11

The short answer: when a Windsor.ai table shows Facebook, Google and TikTok revenue that together beats the Shopify total in the row below, both rows are correct by their own rules. Windsor.ai, a no-code connector that pulls data from 350+ platforms into BI tools, spreadsheets, warehouses and AI chats (entry, homepage), returns each platform's figure, and its Meta guide says the differences come from "Facebook's independent calculation methods, which Windsor.ai cannot override" (Meta discrepancy guide). For what each channel caused, take the GA4 Attribution paths export to the start page of Causality Engine, which reads that one file for cause (entry). The first finding is free.

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 anyone divides by spend:

  1. Check the denominator of every ROI field. A custom field that divides Shopify revenue by Facebook Ads spend, the example on Windsor.ai's answers page, credits Facebook with every order the store took, from every channel.
  2. Read the source column you already get. The Blended Data connector returns one table with a source column per row (answers page). Sum the platform rows and the Shopify rows separately before comparing them.
  3. Match the Meta setting to Ads Manager. In Looker Studio it sits under Edit connection; elsewhere, at account level in step 1 of onboarding or per query in step 2 (Meta discrepancy guide).

Windsor.ai beside the read

PointWindsor.aiCausality Engine
Kind of toolData integration from 350+ sources (homepage)Causal attribution from one GA4 export (entry)
Platform conversionsPassed through; Meta's windows set by query options such as attribution_window (Meta discrepancy guide)Not read; only GA4's channels
Combining sourcesBlended Data connector and custom fields across destinations (answers page)Every channel in the file, each with a 0 to 100 data-health score (how it works)
Attribution it offersAn Ad Data + Attribution connector and a multichannel dashboard template (template page)Each channel's caused share beside a last-click rebuild (how it works)
Link between the twoNoneNone (integrations)
Price of the checkYour existing planFirst finding free; €99 per read, excluding VAT (pricing, checked on 11 November 2026)

What Windsor.ai says about attribution, word for word

Windsor.ai uses the word in three places, and they mean different things.

The connector. Its Looker Studio page sells "Ad Data + Marketing Attribution" and says its "marketing attribution software" shows "which marketing channels have the greatest impact on revenue" (connector page). The template built on it reports Google Ads, Facebook Ads, LinkedIn Ads and Bing Ads at Channel Groupings level (template page). Neither page names the method behind the attribution.

The advice. Its data-driven attribution article recommends moving to multi-touch or data-driven credit and judging channels on a data-driven ROAS. It explains that Google builds its model on the Shapley value and that a Markov model works on less data. Those are descriptions of Google's model and of the method family, not of a Windsor.ai model.

The Shopify fix. For subscription stores, a Windsor.ai article loads Shopify orders and customers into its cloud database and runs a SQL step, then promises that a subscription purchase "will always be attributed to the original acquisition channel". That is a rule: the first channel keeps the customer's later revenue. It is clear and auditable. It decides credit by order of arrival, not by what would have happened without the channel.

Getting the GA4 side right

Windsor.ai's GA4 guide says that in 99% of reported mismatches the cause is a different query, mostly scope: a campaign queried at session scope returns something else than the same campaign at event or user scope. Pull purchases by session default channel group and you get GA4's filing under Google's channel definitions, which put Performance Max in Cross-network.

The read needs another shape. It takes the Key event attribution paths report, the sequence of channels before each key event, which GA4 shows under Advertising and downloads as a CSV (Google's report help). The Windsor.ai GA4 pages describe field and scope queries, not that report, so download it from GA4 directly; the export walkthrough has the steps, and the how-it-works page asks for 12 months or more.

Worked example: the ROI field and the blended sum

For example, with sterling figures made up for illustration and no store behind them. One quarter, one Blended Data query:

  • Facebook Ads purchase value under the account's setting: £38,900, on £11,400 of spend
  • Google Ads conversion value: £29,600
  • TikTok Ads purchase value: £7,350
  • Shopify net revenue: £64,250

The platform rows sum to 38,900 + 29,600 + 7,350 = £75,850, which is 75,850 - 64,250 = £11,600 more than the store took.

Now the custom field. Shopify revenue divided by Facebook spend gives 64,250 / 11,400 = 5.64. Facebook's own claim over the same spend gives 38,900 / 11,400 = 3.41. Neither is what Facebook caused. The first gives Facebook every order, the second gives it every order Facebook's window touched.

A causal read sets a third kind of figure beside these: each channel's caused share against a last-click rebuild from the same export, a data-health score from 0 to 100, and a next step to test in one region (how it works). If the read's share for Paid Social lands well under Facebook's 3.41, test before budget moves; the pricing page shows how a sample read words each next step.

The free check: matched postcode areas

Windsor.ai documents no holdout, so this one is done by hand. List postcode areas, pair them by last quarter's orders, and leave one of each pair out of one channel's targeting for 28 days. Count Shopify orders per area from the store's own report. For example, 18 kept areas take 1,146 orders and their 18 matched partners take 1,071: 1,146 - 1,071 = 75 orders the channel made in that month. Compare that with what the channel's dashboard claims for the same areas.

When you want every channel read at once, Causality Engine, which I founded, takes the GA4 export on the start page. The first finding runs in the browser without uploading the file; the full read is €99 once, refundable within 30 days (pricing, checked on 11 November 2026).

What the pairing will not do

The products do not touch. Causality Engine's integrations page lists no connector to set up: it reads the channels the GA4 export records. It works at channel level, so keyword-level questions, which the Windsor.ai article above discusses, stay in Windsor.ai. It needs a purchase key event in GA4 (one-off read), and where spend is too small for a signal, it declines (homepage).

Windsor.ai's plans count data sources and accounts, while destinations are included on every plan (answers page). An attribution story told inside Windsor.ai, with Shopify, GA4 and every ad account all wired up, is therefore also the story of a larger plan, and nothing in that story asks whether the summed platform rows are too high.

See also

FAQ

Can Windsor.ai push data into Causality Engine?

No, there is no link either way. Causality Engine reads the Attribution paths CSV you download from GA4, and its integrations page says there is no connector to wait for.

Does the Ad Data + Attribution connector use a causal model?

Its pages do not say which method it uses (connector page). Windsor.ai's writing favours data-driven, multi-touch credit, and its Shopify fix credits the original acquisition channel.

Why does Facebook revenue in Windsor.ai not match Ads Manager?

Usually the attribution setting. The Meta discrepancy guide says to update each affected query, for example with use_unified_attribution_setting and an attribution_window option, so it matches the account.

TAGS
Causality EngineWindsor.aiBlended Data 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.