Comparison
A Google Analytics alternative that shows which traffic pays
traffic.cx is a good Google Analytics alternative if you run a SaaS on Stripe, Lemon Squeezy, Polar or Dodo Payments and the question you need answered is which traffic brings paying customers. It connects your payment provider, credits each payment to the visit that brought it, and shows the payments it can't match as Unattributed. Stay with Google Analytics 4 if you rely on data-driven attribution, deep custom reporting or a free tool with no event cap.
Last updated
Feature comparison
| Feature | traffic.cx | Google Analytics 4 |
|---|---|---|
| Cost | Free on one site with every feature, 3,000 events a month. Paid plans are priced by monthly events | "Free of charge". Analytics 360 is the paid tier; its price is not published on the pages checked (unconfirmed), as of 28 Oct 2026 |
| Install | One defer script tag in the shared head. It follows single-page navigation by itself | Google tag (gtag.js) or Tag Manager, as of 28 Oct 2026 |
| Visitor cookies by default | None. A daily visitor ID whose secret is deleted after 48 hours. Optional first-party cookie mode, up to 400 days | _ga and _ga_<container-id>, first-party, 2-year default expiry, as of 28 Oct 2026 |
| When visitors decline consent | Not applicable to the default tracker. Whether you need consent depends on your setup and the rules that apply | With consent mode, no analytics cookies. Cookieless pings are sent and used for modelling, as of 28 Oct 2026 |
| Modelled data | None for traffic. Search Console revenue per term is labelled estimated | Behavioural modelling fills gaps from visitors who decline, once a property meets thresholds (for example 1,000 denied events a day for 7 days), as of 28 Oct 2026 |
| How revenue gets in | Your payment provider syncs payments in. You pass a pageview ID into checkout metadata. Also a Payments API or script-reported purchases | You send purchase and refund events with a transaction_id, from gtag.js or the Measurement Protocol on a server, as of 28 Oct 2026 |
| Payment providers | Stripe, Dodo Payments, Lemon Squeezy, Polar | No Stripe or other payment-provider connector found in the GA4 docs checked (unconfirmed), as of 28 Oct 2026 |
| Subscription renewals | A renewal for a known customer inherits the first payment's attribution | Not described in the GA4 ecommerce docs checked (unconfirmed), as of 28 Oct 2026 |
| Refunds | Subtracted on the day they happen, credited to the original payment | A refund event with the original transaction_id, as of 28 Oct 2026 |
| Payments it can't match | Stay in totals as "Unattributed" | Not applicable: GA4 only records purchases you send |
| Attribution models | Last non-direct (default) or first touch. Lookback 90 days by default, 7 to 365 configurable. Cross-day matching needs cookie mode or an earlier customer payment | Data-driven (default), paid and organic last click, and Google paid channels last click. First click, linear, time decay and position-based were removed in November 2023, as of 28 Oct 2026 |
| Data history | Free: the last 30 days visible; data older than 12 months deleted monthly. Paid: full history, no automatic expiry | Explorations and funnel reports keep 2 months by default, up to 14 months. Standard aggregated reports aren't affected by this setting, as of 28 Oct 2026 |
| Report limits | Not described on traffic.cx's site | Thresholding can withhold rows with low user counts. Explorations sample above 10M events per query, as of 28 Oct 2026 |
| Export and API | CSV export of dashboard report tables, up to 1,000 rows each. Stats, Sites, Events and Payments APIs. API keys need a paid plan. No raw-event export | BigQuery export (standard: 1M events a day on the daily export) and a Data API, as of 28 Oct 2026 |
| Data import | No import from Google Analytics, Fathom or Plausible. Connecting Stripe imports the last 90 days of payments | Not applicable |
| What you can track | Websites and server-side events: a browser script, a server-side Events API and a Payments API | Not checked in this pass (unconfirmed) |
| Google Ads | No Google Ads integration or ad-spend import. Visits with Google click IDs (gclid, gbraid, wbraid) are labelled paid search | Google Ads linking not checked in this pass (unconfirmed) |
| Hosting | Server in Mumbai, India, behind Cloudflare. Nightly backups in Western Europe | Google infrastructure. Location not checked (unconfirmed) |
Last checked: 28 October 2026. Google Analytics facts come from Google's own help and developer docs on that date and can change; the sources are listed at the end. "Unconfirmed" means the fact wasn't on those pages that day. It doesn't mean the feature is missing. See all comparisons, including Fathom Analytics.
In short
- Setup. One script tag in your site's head, then connect your payment provider in Settings → Revenue. Revenue doesn't need a tag manager or an event schema.
- Revenue. GA4 records revenue from
purchaseandrefundevents your site or server sends. traffic.cx syncs payments, refunds and subscription renewals from the provider. - Privacy default. GA4 sets first-party cookies (
_ga, 2-year default expiry). traffic.cx sets no visitor cookie by default. Cookie mode is optional. - Where GA4 is stronger. Data-driven attribution, BigQuery export, the Google Analytics history you already have, and a free product with no monthly event cap.
Why people look for a Google Analytics alternative
GA4 can tell you a purchase happened. You have to send it
GA4 measures revenue through purchase and refund events that you add to your site or send from your server with a transaction ID (Google). For a SaaS whose payments happen in Stripe or another provider, that means writing and maintaining that bridge yourself, including subscription renewals.
Cookies and consent
GA4's tag sets first-party cookies with a two-year default expiry (Google). If you use a consent banner, GA4 can model the visitors who decline, but only after your property reaches minimum data volumes (Google). Smaller sites may not qualify.
Reports that need learning
GA4 is built for many use cases: apps, ads, audiences, explorations. If you mainly want sources, pages, campaigns and revenue, that breadth can get in the way.
Where traffic.cx is different
Revenue comes from your payment provider
Connect Stripe, Dodo Payments, Lemon Squeezy or Polar in Settings → Revenue. Payments arrive from the provider. Your checkout passes one extra value, the pageview ID, so each payment can be matched to its visit (how it works). Using another checkout? Send payments with the Payments API or report them from the tracking script.
Renewals keep their source. Refunds are netted. Gaps stay visible
A renewal for a known customer inherits the attribution of that customer's first payment. Refunds are subtracted on the day they happen and credited to the payment they refund. A payment that can't be linked to a visit stays in your totals as "Unattributed", instead of being given to a guessed source (definitions).
Two attribution models you can say in a sentence
The Revenue page toggles between last non-direct (the default) and first touch, with a lookback of 90 days by default (7 to 365 days). GA4's default reporting model is data-driven, which uses machine learning across paths (Google).
One honest caveat. In the default cookieless mode, a pageview ID links a payment to the visit where checkout started. Visitor IDs rotate daily, so traffic.cx can't connect a purchase to a campaign visit on an earlier day unless you turn on the optional cookie mode (same browser only) or the customer has paid before. See cookieless mode versus cookie mode.
No visitor cookie by default
The default tracker sets no visitor cookie. It uses a daily visitor identifier whose secret is deleted after 48 hours (privacy notice). Whether you need consent still depends on your setup and the rules that apply to you, because revenue attribution links payments to visits. traffic.cx offers a DPA with Standard Contractual Clauses and a public sub-processor list.
Websites and server-side events
traffic.cx tracks websites and server-side events: the browser script, the Events API and the Payments API. There is no Google Ads integration and no ad-spend import. Visits that carry a Google click ID (gclid, gbraid or wbraid) are labelled paid search.
The rest of the basics, on the Free plan
Realtime visitors, goals and funnels, shared read-only dashboards, a bot traffic report and Google Search Console data with estimated revenue per search term are on every plan, Free included (pricing).
Where Google Analytics is the better choice
- Data-driven attribution. If you want a machine-learned model across many touchpoints, GA4 has one. traffic.cx offers last non-direct and first touch only.
- Raw data in a warehouse. GA4 exports events to BigQuery. traffic.cx exports report tables to CSV (up to 1,000 rows each) and has a Stats API on paid plans. It does not export raw events.
- Free at high volume. GA4 is free of charge. traffic.cx's Free plan covers one site and 3,000 events a month.
- Your history. traffic.cx can't import Google Analytics, Fathom or Plausible data, so your history starts when you install it.
- Google Ads. traffic.cx has no Google Ads integration. It labels visits that carry a Google click ID as paid search. It doesn't import ad spend.
Pricing
Sign up with Google or email and start on the Free plan: every feature on one site, no card and no trial clock. The Free plan is $0, forever: every feature on one site, 3,000 events a month, the last 30 days. Paid plans add more events, more sites, your full history, the API and teams. See pricing for the volume tiers.
Google Analytics 4 standard is free of charge (Google Marketing Platform), as of 28 October 2026.
Migrating from Google Analytics
These steps come from the install guide, the revenue docs and the Stripe guide.
Sign up and add your site. Sign up with Google or email, select your team and add the website with its real domain. Copy the snippet from the site's Settings → Tracking.
Install the script once. Put this in the shared head, using the full ID from your dashboard (it starts with
tcx_). Don't add a second copy through a tag manager, and don't add manual pageview calls on route changes. The tracker followshistory.pushStateand back/forward navigation. Hash routes need the hash-routing option in Tracking settings.html
<script defer src="https://traffic.cx/js/YOUR_SITE_ID.js"></script>Verify your first visit on your published domain. Localhost and iframes are ignored by default. If a Content-Security-Policy blocks the script, allow
https://traffic.cxinscript-srcandconnect-src.Recreate your key events as goals. Send custom events with
window.trafficcx?.('signup_started')and create a matching custom-event goal in the dashboard. Avoid personal data in event properties.Connect payments. In Settings → Revenue, connect Stripe, Dodo Payments, Lemon Squeezy or Polar. For Stripe, create a restricted key with read access to Checkout Sessions, Invoices, PaymentIntents and Refunds, and write access to Webhook Endpoints. traffic.cx creates the webhook. Connecting Stripe imports the last 90 days of payments. Those older payments will mostly be Unattributed.
Pass the pageview ID into checkout. Read
trafficcx.pageviewId()in the browser when checkout starts and add it to your checkout metadata, and to the subscription's metadata so renewals carry it. Then run a test payment in your provider's test mode, on a separate traffic.cx test site.Run both while you compare. The script is safe to run alongside the GA4 tag. It keeps to its own
window.trafficcxglobal andtcx_storage, and it adds to the browser's page-change handling instead of replacing it. There is no Google Analytics import, so keep GA4 until you've exported what you need. While it still runs, check that its own retention setting covers the period you'll want later (Google).
Sources
traffic.cx facts come from pricing, the home page, install (updated 14 Oct 2026), how revenue attribution works (updated 14 Oct 2026), revenue attribution, the Stripe guide, plans, the docs index, Search Console, the privacy notice, the DPA and the sub-processor list, checked 28 Oct 2026. The Free plan numbers come from the same plan catalogue as pricing.
Google Analytics facts come from these pages, as of 28 Oct 2026:
- Google Marketing Platform: Analytics ("free of charge")
- Analytics 360 feature limits (360 price not published on the pages checked)
- Cookies and tag options
- Consent mode and consent settings
- Behavioural modelling
- Ecommerce events and purchase events
- Measurement Protocol
- Attribution models, channel groups and attribution settings
- Data retention and explorations retention
- Data thresholds
Frequently asked questions
Is traffic.cx a free Google Analytics alternative?
Yes, for one site. Sign up with Google or email. The Free plan is $0 with no card and no end date, and includes every feature on one site with 3,000 events a month and the last 30 days of reports. Paid plans add more events, more sites, your full history, the API and teams.
Can I see Stripe revenue by traffic source in Google Analytics 4?
You can, if you send it. GA4 records revenue from purchase events with a transaction ID that your site sends, or that your server sends through the Measurement Protocol. No built-in Stripe connector was found in Google's GA4 docs as of 28 October 2026. traffic.cx connects to Stripe directly and credits payments, renewals and refunds to the visits behind them.
Does traffic.cx use cookies?
Not by default. The default tracker sets no visitor cookie and uses a daily identifier whose secret is deleted after 48 hours. An optional cookie mode supports longer visitor journeys. Whether you need consent depends on your setup and the rules that apply to you.
Can I import my Google Analytics data into traffic.cx?
No. traffic.cx has no import from Google Analytics, Fathom or Plausible, so your reports start on the day you install the script. Connecting Stripe imports the last 90 days of payments. Keep GA4 running, or export what you need, until you no longer need the old reports.
Can I run traffic.cx alongside Google Analytics?
Yes. The script keeps to its own window.trafficcx global and tcx_ storage, and it adds to the browser's page-change handling instead of replacing it. You can run both while you compare numbers, and remove GA4 once you have exported the history you need.
Which attribution models does traffic.cx use compared with GA4?
traffic.cx offers last non-direct (the default) and first touch, with a lookback of 7 to 365 days. GA4 offers data-driven, paid and organic last click, and Google paid channels last click. It removed first click, linear, time decay and position-based models in November 2023.