Databox With Causality Engine: Check the ROAS on the Scorecard
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-11-11
The short answer: when the quarterly scorecard in Databox shows a return on ad spend the store's sales cannot support, the scorecard is repeating each platform faithfully. Databox, the KPI dashboard and goal-tracking platform, documents that its basic Purchase ROAS metric for Facebook Ads counts website purchases only, that Ads Manager's own ROAS usually counts purchases from all channels, and that its Facebook values come from the API with a unified attribution setting applied (Facebook Ads metric library). Two ROAS figures, both Meta's. To weigh Meta against everything else the store does, export GA4's Attribution paths report and open the free first finding of Causality Engine, a causal read of that one file, 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.
What to settle before the board sees the scorecard:
- Subtract once. For example, if Meta and Google Ads together claim $224,020 of purchase value in a quarter and Shopify net sales were $171,850, the claims run 224,020 - 171,850 = $52,170 past everything the store sold.
- Use the Shopify connection you already have. Databox calculates almost all Shopify metrics on its own side by going through every order in the date range (Shopify metric library). That is the ledger to measure the claims against.
- Ask which ROAS the scorecard shows. Basic Purchase ROAS, or a custom one built from Omni Purchase; the Facebook Ads metric library explains why the two differ.
On the scorecard, and in the read
| Item | Databox | Causality Engine |
|---|---|---|
| What it is | KPI dashboards, goals and an AI analyst (entry) | A causal read of a GA4 export (entry) |
| Meta's conversions | From the API with a unified attribution setting; Metric Builder can pull other settings (Facebook Ads metric library) | Not read; platform ROAS is never an input (pricing for agents) |
| Totals across sources | Calculated metrics combine metrics into a formula (custom metric article) | Each channel's caused share beside last-click (how it works) |
| Store figures | Shopify metrics computed from orders, refunds included (Shopify metric library) | The purchases GA4 recorded, by path |
| GA4 channels | As the property reports them, under its reporting attribution model (Google's attribution settings) | Every channel in the Attribution paths CSV (integrations) |
| Connection between the two | None | None |
| Price of a check | Within the Databox plan | Free first finding; €99 for a read, excluding VAT (pricing, checked on 11 November 2026) |
Two ROAS figures for one Meta account
The Facebook Ads metric library is unusually open about this. The basic Purchase ROAS metric reflects Website Purchase ROAS, built from website events Meta tracked. The ROAS in Ads Manager likely counts purchases from every channel Meta reports, so the two differ. The documented fix is to build a custom value from Action Values, Omni Purchase, in Metric Builder and divide it by Amount Spent with a calculated metric.
Both routes end at a Meta number. One is narrower, one matches Ads Manager more closely, and Meta's own rule decides which purchases each one includes.
The attribution setting adds a second layer. Meta will not total outcome metrics, Purchases among them, across campaigns that use different settings. Databox's default is to fetch values with a unified attribution setting applied, which the same page says "will likely not match" Ads Manager; Metric Builder can instead pull each campaign's own setting. Whichever you choose, the scorecard should say which.
How Databox makes one number out of several
A calculated metric combines metrics and fixed values with add, subtract, multiply and divide, and shows a preview before it is saved (custom metric article). Adding Meta's purchase value to Google Ads' conversion value is two clicks.
Datasets offer a second route. Merging datasets can stack one dataset's rows below another's, for records of the same kind from different sources. Stack Meta's conversions on Google's and a sum over the stacked column adds both platforms' claims, with no flag that the same order may sit in both.
Neither feature is wrong. They do the sum you ask for.
The Shopify figure moves as well
The store's side is not frozen either. For Shopify metrics, Databox pulls every order in the date range plus orders modified up to 3 months after it, to capture refunds (Shopify metric library). A quarter's net sales can fall after the quarter closes, while the platform claims for the same quarter only rise as late conversions arrive. Read the two sides on the same day and write that day down.
GA4 inside Databox: whose model
GA4 metrics in Databox arrive as the property reports them. Google's attribution settings page says the reporting attribution model applies to key event reports that use event-scoped dimensions such as Default channel group, with a lookback window of 90 days by default for most key events. Session-scoped dimensions are untouched by it. So a GA4 widget can show two different Paid Social rows depending on the dimension it was built on, before any ad platform is involved.
Worked example: a quarter's scorecard
For example, with figures chosen to illustrate the arithmetic and taken from no store: a Q3 scorecard for an apparel brand, in US dollars.
| Line | Value |
|---|---|
| Meta Amount Spent | $38,400 |
| Meta basic Purchase ROAS (website events) | 2.91 |
| Meta ROAS from Omni Purchase value $126,720 | 126,720 ÷ 38,400 = 3.30 |
| Google Ads cost | $31,900 |
| Google Ads conversion value | $97,300, so 97,300 ÷ 31,900 = 3.05 |
| Calculated "blended ROAS" | (126,720 + 97,300) ÷ (38,400 + 31,900) = 224,020 ÷ 70,300 = 3.19 |
| Shopify net sales | $171,850 |
| Store sales over ad spend | 171,850 ÷ 70,300 = 2.44 |
The two platforms claim $52,170 more than the store sold, and the store's figure already includes email, organic search and every customer who would have bought anyway. The 3.19 on the scorecard and the 2.44 from the ledger answer different questions. Neither says what the ads caused.
A causal read answers that one. Per Causality Engine's how-it-works page, it reads the GA4 export, hands the Direct row's buyers back to the channels that sent them, and sets each channel's caused share against last-click from the same file, scored 0 to 100 for data health and ending in a recommendation to try in one region. If the read rates Paid Social far below Meta's 3.30, move budget in one region before the whole account follows.
A goal that watches the claims, at no extra cost
Databox's own goals can raise the flag. Per the goal article, a goal's target can be a fixed value, a percent change or another metric, with a success condition of reach, stay above or stay below:
- Build a calculated metric, Claimed purchase value: Meta's Omni Purchase value plus Google Ads conversion value.
- Find it on the Metrics page, choose Set Goal from its menu, and pick Shopify net sales as the target metric with "stay below" as the condition.
- Set status updates to send when the goal changes status, so the alert arrives only when the claims overtake the store.
Off track means the platforms, together, claim more than the business took. That check is free, runs on data Databox already syncs, and is enough on its own to stop a scorecard from overselling the ads.
What neither tool answers alone
Databox's metric library documents two routes for Meta's ROAS, the narrow one and the one built to match Ads Manager, and every documented route ends at agreement with the platform, which keeps a dashboard vendor's support queue short; none of them ends at the store's ledger.
The read stops short in its own places. It works per channel, so it cannot score a single campaign or a creative. It wants twelve months of GA4 history at the least, and a channel below 1% of credit under both methods is reported as too small to act on, not judged (how it works). No Databox connector feeds it; the file comes from GA4.
Once the goal goes off track, put the export on the start page and the first finding comes back free, calculated without the file leaving the browser. Causality Engine, which I founded, charges €99 once for the full read, VAT excluded, and refunds it on request within 30 days (pricing, checked on 11 November 2026). A read can then sit in the scorecard's notes as the counterweight to the blended figure.
See also
- Databox: goals, scorecards and the Genie analyst
- How to use Databox: marketing KPIs tracked against goals
- Databox on the marketplace: Databox's affiliate program terms
- Causality Engine: the causal read in one entry
- How to use Causality Engine: from a GA4 file to a budget call
- Causality Engine on the marketplace: its affiliate terms, as stated by the owner
- Databox vs Looker Studio: goals and alerts or a free builder
- How to explain attribution to your CFO: putting the gap in plain words
FAQ
Does Databox connect to Causality Engine?
No. Nothing passes between them. The read takes a CSV you download from GA4's Attribution paths report, and Causality Engine's integrations page describes reading the channels in that file, with no connector to install.
Why does Databox's Purchase ROAS not match Ads Manager?
The basic metric counts website purchases only, while Ads Manager's ROAS likely counts purchases from all channels. Build a custom value from Omni Purchase in Metric Builder and divide it by Amount Spent to get closer (Facebook Ads metric library).
Can Genie tell me which channel caused the sales?
Genie works across the data available in your Databox account (Genie article), so it can only explain the claims those metrics already contain. It has no counterfactual to compare them with.
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.
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.