Fathom Analytics With Causality Engine: Orders by Visitor-Day
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-11-11
The short answer: a shopper clicks your newsletter on Tuesday and buys from a bookmark on Thursday, and Fathom files the order under no campaign at all. That is the design. Fathom Analytics, the cookieless, paid alternative to Google Analytics, uses first-touch attribution for the visitor-day, which resets at 00:00 UTC (Google Ads guide), from $15 a month for 100,000 pageviews and events (pricing, checked on 11 November 2026). Causality Engine, a causal attribution tool, reads one input, GA4's Attribution paths export, so it only helps a store that keeps GA4 running beside Fathom. A store on Fathom alone has nothing to upload. With both, the first finding is free on the start page.
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 decides whether this pairing applies to you:
- Count the days between click and order. For example, if 40% of last month's buyers ordered two days or more after their first click, those orders reach Fathom with no campaign unless the buyer clicked a tagged link again on the day. That is the campaign detail the privacy design gives up.
- Look for GA4 on the site. Fathom's switching guide says you can run both while you check the numbers, then take GA off when ready. Until that day, if GA4 records purchases, the export exists.
- Decide which count answers which question. Fathom answers what each visit did that day. A causal read answers what each channel changed over a year. Neither replaces Shopify's order list.
Fathom and the read in one table
| Fathom Analytics | Causality Engine | |
|---|---|---|
| In one line | Cookieless website analytics on one dashboard (entry) | A causal read of a GA4 export (entry) |
| How it knows a visitor | A SHA-256 signature of request details, the site and a salt that rotates at midnight UTC (salts and hashes) | It does not; it reads paths GA4 recorded (how it works) |
| What counts as a sale | An event you send, such as Order Placed from Shopify's customer events, with a value in cents (Shopify guide) | GA4's purchase key event, picked at export (start page) |
| Credit rule | First touch for the visitor-day; UTMs carry to every later event in that session (Google Ads guide) | Caused share per channel beside a last-click rebuild, data health 0 to 100 (how it works) |
| Integration | None | None (integrations) |
| Price | $15 a month for up to 100,000 pageviews, events included (pricing, checked on 11 November 2026) | Free first finding, then €99 per read excluding VAT (pricing, checked on 11 November 2026) |
How Fathom decides who sold the order
Fathom has no attribution settings to choose from. Its Google Ads guide states the rule once: when someone lands from a UTM-tagged link, Fathom stores utm_source, utm_medium, utm_campaign, utm_content and utm_term on that session, and those values carry across every later pageview and event in it, even on another page. Attribution is first touch for the visitor-day. A visitor who arrived from Direct or organic search earlier the same day keeps that first source, and the guide tells you to test in a private window for exactly that reason.
The day boundary comes from privacy. Per the salts and hashes page, the daily salt that builds each visitor signature rotates at midnight UTC, so Thursday's visitor is not Tuesday's, and Fathom has no record that they were one person. Its note on differing stats adds that unique visitors reset each day and that bots are filtered harder than GA4 filters them.
The sale itself is an event you define. The Shopify guide puts the script in theme.liquid and the purchase in a custom pixel under Customer events, where a checkout_completed subscription sends Order Placed with the checkout total in cents. The events overview adds a default currency per site and an Event Conversion Formula that divides completions by pageviews unless you switch it to site visitors.
What GA4 sees from the same visits
Fathom sends nothing to GA4. Both scripts read the same tags on the same visit and then disagree about Thursday. Google's scopes page says a session started by direct entry is attributed to that user's earlier campaign values, under the paid and organic channels last click model, and GA4's attribution settings give purchases a 90-day lookback by default. So GA4 hands Thursday's order to the Tuesday newsletter, where Fathom shows no source.
For either tool to name the channel, the link must say it. Google's default channel group files Email when source or medium reads email, and its direct traffic page says links without UTM parameters lose their source information. One tag serves both scripts.
Worked example: one month, two clocks
For example, with numbers made up to show the arithmetic and no shop behind them: Shopify books 1,036 orders in May. Fathom records 958 Order Placed events and GA4 991 purchases.
| Row | Fathom, by visitor-day | GA4, by session channel |
|---|---|---|
| No source / Direct | 377 | 214 |
| Email campaigns | 88 | 171 |
| Paid Social | 196 | 233 |
| Organic Search | 241 | 302 |
| Other | 56 | 71 |
| Total | 958 | 991 |
Fathom captured 958 ÷ 1,036 = 92.5% of orders and GA4 991 ÷ 1,036 = 95.7%. The bigger story is the first row: Fathom files 377 - 214 = 163 more orders under no source, and gives email 171 - 88 = 83 fewer. Those are buyers who came back on a later day, exactly as the salt rule predicts.
Neither table says what email caused. GA4's 171 credits the last campaign before a direct visit; Fathom's 88 credits only same-day buyers. The read starts from GA4's 214 under Direct and, per the how-it-works page, splits it back to the channels that sent those buyers, shows each channel's caused share beside a last-click rebuild, scores data health from 0 to 100 and names a next step to test in one region.
Free checks, done by hand
Fathom documents no holdout, so both checks are manual:
- The same-day share. For each campaign, divide Fathom's orders by GA4's for the same month. Email at 88 ÷ 171 = 51% in the example means half its GA4 buyers returned on a later day. Watch that share, not either total.
- A pause. Skip one promotional email for a random half of the list for four weeks and compare Shopify orders between the halves, matched by customer email.
Both cost nothing and answer one channel on their own. When every channel needs weighing at once, Causality Engine, which I founded, reads the GA4 export on the start page: the preview is free and computed in your browser, and the full read is €99 once, refundable within 30 days (pricing, checked on 11 November 2026).
Where the pairing does not reach
- No GA4, no read. Fathom's importer copies GA4 history into Fathom; nothing goes the other way, and the read needs GA4's own file with 12 months or more.
- Channels only. Which product sold and which search was typed stay in Fathom, as the Product Sold and Search Query events in its Shopify snippet; the read reports channels.
- Small numbers. A channel under 1% of credit on both methods is called too small to act on (agents page).
Fathom's ready-made Shopify pixel sends Order Placed and then a Product Sold event for every line item in the cart, and its pricing FAQ counts each custom event against the monthly pageview allowance that sets the plan. Paste the full snippet as given and the purchase step of a three-item order alone uses four events of the allowance you pay for.
See also
- Fathom Analytics: plans, counting rules and the record of complaints
- How to use Fathom Analytics: signups per campaign, step by step
- Fathom Analytics on the marketplace: Fathom Analytics' affiliate program terms
- Causality Engine: what the read costs and when it declines
- How to use Causality Engine: the export, the read, the test
- Causality Engine on the marketplace: the affiliate terms in the owner's words
- Fathom Analytics vs Google Analytics: cookieless counts against GA4
- How to find what Direct traffic is hiding: where untagged buyers end up
FAQ
Can I upload Fathom data to Causality Engine?
No. The two share no connection, and the read accepts only GA4's Attribution paths CSV (start page). Keep GA4 running if you want the read; Fathom can stay beside it.
Why does Fathom show more orders with no source than GA4 shows as Direct?
Because Fathom starts a new visitor every day at midnight UTC (salts and hashes), while GA4 passes a direct session back to the user's last campaign (scopes page).
Does Fathom report revenue per campaign?
Yes, if your purchase event carries a value. The Shopify guide sends the checkout total in cents, and filtering the dashboard by a campaign shows the events from that traffic (Google Ads guide).
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.