Systeme.io With Causality Engine: Sales GA4 Never Records
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-11-11
The short answer: Systeme.io knows every sale, because it takes the payment, and still cannot tell you which ad brought the buyer. Its help centre says so in one line: "It is currently not possible to track purchases with UTM parameters on systeme.io" (UTM article). Systeme.io, the all-in-one platform for funnels, email, courses and checkout, stores tags on the contact when someone opts in, and the Transactions list holds the sales. GA4 sees neither unless you put it there. Until the thank-you page sends GA4 a purchase, Causality Engine, a causal read of a GA4 export, has nothing from these sales to weigh; once it does, 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.
Where the gap sits:
- Count what each side can see. For example, 146 sales of a €197 course is 146 × €197 = €28,762 in Transactions. If GA4 holds no purchase event for the funnel, GA4 shows €0 against it, whatever the channel.
- Turn on the switch Systeme.io gives you. Store UTM parameters, on the Sales funnel settings page, records tags on each new contact (UTM article).
- Decide where a purchase event will live. The Tracking code field and the Raw HTML element both take your own code, and Raw HTML works on thank-you pages (custom code article).
Systeme.io and the read in one table
| Systeme.io | Causality Engine | |
|---|---|---|
| What it is | Funnels, email, courses and payments in one account (entry) | A causal read of the store's GA4 export (entry) |
| Its record of a sale | A row under Sales, Transactions, exportable to CSV (export article) | Purchase key events in the GA4 file (one-off read) |
| Source of a sale | Not tracked: UTM tags attach to contacts at opt-in, not to purchases (UTM article) | The channel GA4 recorded for the session that bought |
| Tests | A/B test between two pages, scored on visits to a Goal page (A/B article) | Each channel's caused share beside last-click (how it works) |
| Analytics setup documented | Meta Pixel and Conversions API, with a Purchase event (pixel article); none for GA4 | No pixel, no SDK |
| Connection between them | None | None (integrations) |
| Price of the check | Free plan up to 2,000 contacts (pricing) | Free first finding; €99 per read, excluding VAT (pricing) |
Prices in the table checked on 11 November 2026.
What Systeme.io reports, and what it leaves out
Systeme.io does not claim credit for a sale, which sets it apart from most tools paired with Causality Engine. It records the sale. The export article walks through Sales, Transactions, Export to CSV, a popup to choose the columns, and an emailed download link.
Source data lives elsewhere. With Store UTM parameters on, a visitor who arrives on a tagged link and opts in has the tags saved to the contact, and the contacts export can include them. The same article ends with the limit: purchases cannot be tracked with UTM parameters. Whether a later opt-in overwrites the first tags, the article does not say.
The A/B test splits traffic between two pages in one funnel and counts arrivals at a Goal page you choose, then shows a statistics table (A/B article). The help centre's example tests opt-in pages leading to a sales page. It names no confidence level.
Meta is the one ad platform with a full guide. The pixel article puts the pixel in the Tracking code field and gives a Purchase event with a placeholder, %FACEBOOK_PURCHASE_EVENT_ID%, that deduplicates browser and server events once the Conversions API is set up. So Meta can be told about every sale while GA4 is told about none.
Getting a Systeme.io sale into GA4
None of the articles read for this page covers GA4, so this part is built from Google's documentation and Systeme.io's custom code options:
- The tag on every funnel page. Paste the Google tag into Tracking code under Settings, Sales funnels, and it applies to all funnels (custom code article).
- A purchase event on the sales thank-you page. GA4 records a sale as a purchase event with a value and currency (ecommerce events). Raw HTML can hold the code. Systeme.io documents placeholders for Meta's event ID, not for an order value in GA4, so a fixed value per funnel is the by-hand version.
- One domain, or cross-domain measurement. If the funnel runs on a different root domain from the store, GA4 sees two users and two sessions unless both domains share one tag ID under Configure your domains (cross-domain measurement).
- Tags that land in the right channel. Google files Meta traffic under Paid Social only when the source is a social site and the medium contains cp, equals ppc or retargeting, or starts with paid (default channel group).
Then check that purchase shows as a key event in GA4, and wait: the read wants a year of it.
Worked example: a course funnel, three counts
For example, with numbers made up for the arithmetic and no business behind them: one month of a €197 course sold through a Systeme.io funnel, traffic from Meta ads and a YouTube channel.
- Transactions: 146 sales, 146 × €197 = €28,762.
- Meta Ads Manager, fed by the pixel and the Conversions API: 119 purchases by its own attribution setting.
- Contacts export joined to the transactions export by email, in a spreadsheet: 88 buyers whose contact carries utm_source=facebook, 21 with utm_source=youtube, 37 with no tags. 88 + 21 + 37 = 146.
- GA4: 0 purchases, since no purchase event was set up.
Meta claims 119 - 88 = 31 more buyers than the contact tags give Facebook. Some of those 37 untagged contacts opted in before the switch went on; some saw an ad and came back by typing the address. The tags mark the opt-in, which can be weeks before the sale, so the 88 counts opt-in sources, not last clicks.
None of these numbers says what Meta caused. A causal read could, once GA4 holds the purchases: per the how-it-works page, it sets each channel's caused share beside a last-click rebuild of the same export, scores data health from 0 to 100, and gives a next step to test in one region. With the purchase event a month old, the read has nothing yet to weigh.
What the pairing cannot cover
Nothing connects the two products, and the integrations page says the read covers the channels a GA4 export records. That makes the GA4 purchase event the whole of the pairing. The how-it-works page asks for 12 months or more of history and calls a channel under 1% of credit on both methods too small to act on; a new event means a long wait. Email sends, course access and the funnel steps stay in Systeme.io.
Systeme.io prices its plans by contacts, 2,000 free and 5,000 on Startup at $17 a month (pricing, checked on 11 November 2026), and Store UTM parameters writes its tags onto that same contact; the sale, the thing you are paid for, is the one record the help centre says cannot carry a tag.
The free check you can run this week
The spreadsheet join above is the check. Export contacts with their UTM columns, export Transactions for the same dates with the customer email if the popup offers it, and match on email. Orders per utm_source, set beside Meta's purchase count, show how far the ad platform's claim runs past the buyers it can be tied to. It costs nothing and needs no new tag.
When GA4 has a year of purchase events, Causality Engine, which I founded, reads every channel from the Attribution paths export on the start page: the first finding free in the browser, a full read €99 once, refundable within 30 days (pricing, checked on 11 November 2026).
See also
- Systeme.io: plans, limits and the account complaints
- How to use Systeme.io: one lead magnet funnel on the free plan
- Systeme.io on the marketplace: Systeme.io's affiliate program terms
- Causality Engine: what the read needs and what it returns
- How to use Causality Engine: the GA4 export through to a test
- Causality Engine on the marketplace: its affiliate terms, as the owner sets them
- How to export GA4 data for attribution: the file the read takes
- Systeme.io vs ClickFunnels: a low bill or a checkout business
FAQ
Is there a Systeme.io integration in Causality Engine?
No. Causality Engine reads a GA4 export and nothing else, so a Systeme.io sale counts only once a GA4 purchase event records it (integrations).
Can Systeme.io tell me which ad sold a course?
Not from its own reports. The UTM article stores tags on contacts at opt-in and says purchases cannot be tracked with UTM parameters. Joining the two exports by email is the by-hand route.
Why does Meta report sales that GA4 does not?
Systeme.io documents a Meta Purchase event through the pixel and the Conversions API (pixel article) and no GA4 equivalent. Until you add one, GA4 has no purchases to report.
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.