Skip to content

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

traffic.cx and Google Analytics 4, feature by feature
Featuretraffic.cxGoogle Analytics 4
CostFree 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
InstallOne defer script tag in the shared head. It follows single-page navigation by itselfGoogle tag (gtag.js) or Tag Manager, as of 28 Oct 2026
Visitor cookies by defaultNone. 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 consentNot applicable to the default tracker. Whether you need consent depends on your setup and the rules that applyWith consent mode, no analytics cookies. Cookieless pings are sent and used for modelling, as of 28 Oct 2026
Modelled dataNone for traffic. Search Console revenue per term is labelled estimatedBehavioural 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 inYour payment provider syncs payments in. You pass a pageview ID into checkout metadata. Also a Payments API or script-reported purchasesYou 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 providersStripe, Dodo Payments, Lemon Squeezy, PolarNo Stripe or other payment-provider connector found in the GA4 docs checked (unconfirmed), as of 28 Oct 2026
Subscription renewalsA renewal for a known customer inherits the first payment's attributionNot described in the GA4 ecommerce docs checked (unconfirmed), as of 28 Oct 2026
RefundsSubtracted on the day they happen, credited to the original paymentA refund event with the original transaction_id, as of 28 Oct 2026
Payments it can't matchStay in totals as "Unattributed"Not applicable: GA4 only records purchases you send
Attribution modelsLast 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 paymentData-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 historyFree: the last 30 days visible; data older than 12 months deleted monthly. Paid: full history, no automatic expiryExplorations 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 limitsNot described on traffic.cx's siteThresholding can withhold rows with low user counts. Explorations sample above 10M events per query, as of 28 Oct 2026
Export and APICSV 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 exportBigQuery export (standard: 1M events a day on the daily export) and a Data API, as of 28 Oct 2026
Data importNo import from Google Analytics, Fathom or Plausible. Connecting Stripe imports the last 90 days of paymentsNot applicable
What you can trackWebsites and server-side events: a browser script, a server-side Events API and a Payments APINot checked in this pass (unconfirmed)
Google AdsNo Google Ads integration or ad-spend import. Visits with Google click IDs (gclid, gbraid, wbraid) are labelled paid searchGoogle Ads linking not checked in this pass (unconfirmed)
HostingServer in Mumbai, India, behind Cloudflare. Nightly backups in Western EuropeGoogle 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 purchase and refund events 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.

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.

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.

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

  2. 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 follows history.pushState and 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>
  3. 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.cx in script-src and connect-src.

  4. 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.

  5. 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.

  6. 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.

  7. Run both while you compare. The script is safe to run alongside the GA4 tag. It keeps to its own window.trafficcx global and tcx_ 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:

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.