BACK TO BLOG
USE CASESNovember 11, 20269 min read

Databox With Causality Engine: Check the ROAS on the Scorecard

JH

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:

  1. 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.
  2. 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.
  3. 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

ItemDataboxCausality Engine
What it isKPI dashboards, goals and an AI analyst (entry)A causal read of a GA4 export (entry)
Meta's conversionsFrom 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 sourcesCalculated metrics combine metrics into a formula (custom metric article)Each channel's caused share beside last-click (how it works)
Store figuresShopify metrics computed from orders, refunds included (Shopify metric library)The purchases GA4 recorded, by path
GA4 channelsAs the property reports them, under its reporting attribution model (Google's attribution settings)Every channel in the Attribution paths CSV (integrations)
Connection between the twoNoneNone
Price of a checkWithin the Databox planFree 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.

LineValue
Meta Amount Spent$38,400
Meta basic Purchase ROAS (website events)2.91
Meta ROAS from Omni Purchase value $126,720126,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 spend171,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:

  1. Build a calculated metric, Claimed purchase value: Meta's Omni Purchase value plus Google Ads conversion value.
  2. 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.
  3. 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

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.

TAGS
Causality EngineDataboxPaid Media 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.