Coefficient With Causality Engine: Test the Ad Columns in Sheets
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-11-11
The short answer: if the Monday sheet adds Meta's purchases to Google Ads' conversions and the total beats the week's Shopify orders, nothing in the sheet broke. Each column is a platform's own count, and on Meta's import the window is a field you choose. Coefficient, the Google Sheets and Excel add-on that imports live data from business systems, offers Action Attribution beside the Action Breakdown fields once an action metric is picked (Meta Ads article), and its Starter plan allows 500 refreshes a month (pricing, checked on 11 November 2026). Add Shopify's orders as a fourth tab. Then take GA4's attribution paths to the free first finding of Causality Engine, a causal read of that single export, 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 in the sheet first:
- The overshoot, in one cell. For example, Meta 236 purchases plus Google Ads 198 conversions plus Pinterest 22 is 236 + 198 + 22 = 456, against 412 Shopify orders: 456 - 412 = 44 sales claimed by more than one platform.
- The Shopify import you can add today. Coefficient's Shopify connector imports objects such as Orders and Line Items, with a 50-row preview before you commit (Shopify article).
- The Meta window you are reading. Open the Meta import and note what sits under Action Attribution. If the field is empty, Meta's default applies, which its own help ties to the ad set's attribution setting (Meta's attribution system).
The sheet and the read, compared
| Question | Coefficient | Causality Engine |
|---|---|---|
| What is it? | Live imports into Sheets and Excel (entry) | A causal read of one GA4 export (entry) |
| Whose conversions does it show? | The platform's; Meta's with an Action Attribution field (Meta Ads article) | What each channel caused, next to last-click from the same file (how it works) |
| What happens to last week? | Each refresh wipes the import and rewrites it (refresh article) | The read is kept, with a share link (how it works) |
| GA4 input | Dimensions and metrics through the GA4 API (GA4 article) | The Attribution paths export as a CSV (how it works) |
| Do they connect? | No | No; the read takes a file, not a connector (integrations) |
| Cost of the check | Refreshes from the plan's allowance (pricing) | Free first finding, then €99 per read excluding VAT (pricing, checked on 11 November 2026) |
Meta's column follows one field
Coefficient builds a Meta import from four boxes: Metrics, Breakdowns, Action Breakdown and Action Attribution, the last two greyed out until an action metric is chosen (Meta Ads article). The article does not list the values or name a default. Meta does: off-ad actions, a purchase on your site among them, are credited to an ad if they happen within a set number of days after a view or a click, and "by default" are shown "based on the attribution setting on the ad set level" (Meta's attribution system).
So one campaign can give two purchase counts depending on that box, both of them Meta's. Coefficient imports what the API returns and counts neither.
One more detail matters for a sheet that runs unattended: the Meta connection must be reauthorised every 60 days, or a reconciliation tab ends up comparing this month's orders with claims from weeks ago.
Google Ads is plainer. Coefficient supports every Google Ads resource that has metrics, but not custom fields, caps an import at 100,000 rows, and returns cost as Cost Micros, to be divided by 1,000,000 (Google Ads article). Whatever conversion metric you pick carries the conversion action and attribution settings of the Google Ads account itself.
What lands in the GA4 tab, and who counted it
The GA4 import is dimensions and metrics through Google's API, filtered by exact match or contains. Coefficient's GA4 article gives two warnings: the API may not hold all of yesterday before 5 AM, so schedule the refresh after that, and a total that disagrees with GA4 is easier to trace once Date is added as a field.
Pick the channel dimension with care. Google's default channel group page scopes Default channel group to the event, under the property's attribution model (data-driven unless changed), and Session default channel group to the session, under paid and organic last click. Meta's visits file under Paid Social and Google's under Paid Search by rules Google does not let you edit. For the sheet below, Session default channel group with purchases is the last-click line.
Neither field is what Causality Engine reads. It takes the Key event attribution paths report from GA4's Advertising section, where all key events are aggregated until you select one (paths report). The GA4 article describes no import of that report, so the CSV is downloaded by hand: purchase key event only, 12 months or more (how it works).
Worked example: one week, two Meta windows
For example, with made-up figures that belong to no store: a week's Shopify Orders import shows 412 orders. The Meta import, with Action Attribution left to the ad set settings, reports 236 purchases; Google Ads reports 198 conversions on the purchase action; Pinterest 22.
| Line in the sheet | Window behind it | Sales |
|---|---|---|
| Meta, ad set setting | Click and view, per ad set | 236 |
| Meta, click-only Action Attribution | Clicks only | 171 |
| Google Ads | The account's own settings | 198 |
| Pinterest's own settings | 22 | |
| Shopify Orders | Orders booked | 412 |
With the ad set setting, the platforms claim 236 + 198 + 22 = 456, or 456 - 412 = 44 more than the store sold. Switch Meta's import to the click-only window and the claim is 171 + 198 + 22 = 391, which is 412 - 391 = 21 fewer. One field moved the total by 236 - 171 = 65 sales without a single order changing.
The GA4 tab, Session default channel group, gives purchases of Paid Social 94, Paid Search 131, Organic Search 77, Email 41, Direct 58 and the rest 11: 94 + 131 + 77 + 41 + 58 + 11 = 412. Last click hands Meta 94, not 171 or 236.
So which Meta number is real? None of the three answers what Meta caused. Causality Engine's how-it-works page says the read splits Direct's 58 back to the channels that sent those buyers and sets each channel's caused share beside last-click, with data health scored 0 to 100 and a next step to test in one region. If it places Paid Social well below Meta's column, cut in one region and compare before the national budget moves.
Free first: a weekly line that survives the refresh
Since every refresh rewrites the tab, the free check is a log you keep. On the Free plan, refreshes are manual and capped at 50 a month (pricing); for example, four imports refreshed by hand on five Mondays use 4 x 5 = 20. Each Monday, copy three numbers into a log tab: Shopify orders, summed platform claims, and the claim ratio. Eight rows in, a platform whose claims climb while orders sit flat has shown you its overlap, and that costs nothing. In Google Sheets, a Specific Cells snapshot can append those cells for you each week (snapshots article).
For the channel answer the log cannot give, Causality Engine, which I founded, takes the paths CSV at the start page: free first finding in the browser, then €99 once for the full read, refundable within 30 days (pricing, checked on 11 November 2026).
Where Causality Engine stops
There is no Coefficient connector on the Causality Engine side and no Causality Engine source in Coefficient; the integrations page says the read works from whatever channels your GA4 export records. It reads channels, not the campaign rows a Coefficient import can hold. It flags thin data rather than ruling on it: a channel under 1% of credit on both methods is too small to act on, per the page written for AI agents.
Coefficient's plans climb by refresh: 500 a month and daily schedules on Starter, 5,000 and hourly on Pro (pricing). A tab that re-imports each platform's claim every hour draws on the higher tier, yet the gap between those claims and the orders is the same at any refresh speed, so speed is what the price ladder sells and reconciliation is what the reader still builds by hand.
See also
- Coefficient: plans, refresh limits and its AI agents
- How to use Coefficient: a weekly HubSpot pipeline sheet with snapshots
- Coefficient on the marketplace: Coefficient's affiliate program terms
- Causality Engine: the read, its prices and its limits
- How to use Causality Engine: six steps from export to test
- Causality Engine on the marketplace: affiliate terms, stated as the owner's
- Coefficient vs Zapier: a table to read or an action
- How to export GA4 data for attribution: checks on the CSV before upload
FAQ
Is there a Coefficient import for Causality Engine?
No. Causality Engine needs no connector from any tool: it works from the Attribution paths CSV downloaded in GA4 (integrations), which Coefficient's GA4 import does not produce.
Which Action Attribution should the reconciliation tab use?
Whichever you choose, write it in the tab's header and keep it fixed. Meta's purchases change with the window (Meta's attribution system), so a mid-quarter switch breaks the trend.
Why did yesterday's GA4 numbers change after a second refresh?
Because the GA4 API may not hold all of the previous day before 5 AM. Coefficient advises scheduling GA4 imports after that hour (GA4 article).
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.