Comparison
An Umami Analytics alternative that shows which traffic pays
traffic.cx is a good Umami Analytics alternative if you want payments from Stripe, Lemon Squeezy, Polar or Dodo Payments credited to the visits that brought them, on a free plan, without identifying your users first. Umami can also import payments from providers, but on its Pro or Business plans, and it links a payment to a visitor through a distinct ID you set. Stay with Umami if you want open source and self-hosting, a free tier of 100,000 events, session replays and heatmaps, or Paddle and WooCommerce.
Last updated
Feature comparison
| Feature | traffic.cx | Umami Analytics |
|---|---|---|
| Getting started | Free plan: every feature on one site, 3,000 events a month, the last 30 days. Sign up with Google or email. No card | Cloud Hobby: $0, up to 100K events a month, 1 website, 6-month data retention. Paid plans have a 14-day free trial, as of 29 Oct 2026 |
| Paid plans | By monthly events (pageviews and custom events), shared across your sites | Pro $20/month (1M events, then $0.00003 per event); Business $200/month (10M events, then $0.00002 per event); Enterprise custom, as of 29 Oct 2026 |
| Sites | Free: one site. Unlimited on every paid plan | Hobby 1; Pro up to 20; Business unlimited, as of 29 Oct 2026 |
| Team members | Unlimited on every paid plan. Invitations need a paid plan | Not on Hobby; Pro up to 10; Business unlimited, as of 29 Oct 2026 |
| Open source and self-hosting | Not open source. It can't be self-hosted | MIT licence. Self-host with Node.js and PostgreSQL, as of 29 Oct 2026 |
| Cookies by default | No visitor cookie. Optional cookie mode | "Does not use any cookies", as of 29 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 | Events with revenue and currency properties sent from your site, on every plan, plus payment-provider import on Pro or Business, as of 29 Oct 2026 |
| Payment provider connectors | Stripe, Dodo Payments, Lemon Squeezy, Polar, on every plan | Stripe, Paddle, Lemon Squeezy, Dodo Payments, Polar, WooCommerce. Cloud Pro or Business plan required, as of 29 Oct 2026. On self-hosted installs: not stated (unconfirmed) |
| Linking a payment to a visit | Pageview ID from trafficcx.pageviewId() in checkout metadata. No login needed | Imported payments aren't linked to a visitor by default. You identify the visitor with a distinct ID and pass it as umami_distinct_id metadata. Not supported for Lemon Squeezy, as of 29 Oct 2026 |
| Past payments on connect | Connecting Stripe, Lemon Squeezy, Polar or Dodo Payments imports that provider's last 90 days of payments | Imports payments made after you add the provider, as of 29 Oct 2026 |
| Subscription renewals | A renewal inherits the customer's first payment's attribution | Not described in Umami's payment-provider docs (unconfirmed) |
| Refunds | Subtracted on the day they happen, credited to the original payment | Refunds imported with payments, as of 29 Oct 2026. How they're credited to sources isn't described (unconfirmed) |
| Payments it can't match | Stay in totals as "Unattributed" | Count toward revenue without a linked visitor, as of 29 Oct 2026 |
| Attribution models | Last non-direct (default) or first touch. 90-day lookback by default, 7 to 365 configurable. Cross-day matching needs cookie mode or an earlier customer payment | Imported payments: the visitor's most recent visit in the 90 days before the payment. Attribution report: first-click or last-click for a page or event |
| Beyond web analytics | Goals and funnels, Search Console, realtime, shared dashboards and a bot report on every plan | Goals, funnels, journeys, retention, segments and cohorts on all plans. Session replays and heatmaps on Business, as of 29 Oct 2026 |
| Data history | Free: the last 30 days visible. Data older than 12 months is deleted monthly. Paid: full history | Hobby 6 months, Pro 2 years, Business 5 years. Self-hosted data is kept until you delete it, as of 29 Oct 2026 |
| Import | No import from Umami or any other analytics tool. Connecting Stripe, Lemon Squeezy, Polar or Dodo Payments imports that provider's last 90 days of payments | Not on Hobby. Cloud imports from self-hosted Umami or CSV, done by Umami's team. The features page also names Google Analytics, Plausible and Matomo, as of 29 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 | Full export of a website's data as gzip CSV. API on Pro and above, as of 29 Oct 2026 |
| What you can track | Websites and server-side events: a browser script, a server-side Events API and a Payments API | Website script, tracking pixels and short links, as of 29 Oct 2026 |
| Going over your plan | Never billed. Paid plans keep tracking up to 2×, then pause. Free pauses sooner after two months over | Pro and Business bill per extra event. An optional monthly budget stops recording when reached, as of 29 Oct 2026. Hobby over 100K: not stated (unconfirmed) |
| Where data is processed | Server in Mumbai, India, behind Cloudflare. Nightly backups in Western Europe | Cloud data location not stated. Sub-processors include AWS (USA), Hetzner (EU) and ClickHouse (USA/EU) (unconfirmed which holds your data). Self-hosted: your own servers |
| Company | Operated by Karthick, Erode, Tamil Nadu, India | Umami Software, Inc. Location not stated on the pages checked (unconfirmed) |
Last checked: 29 October 2026. Umami facts come from umami.is and Umami's GitHub repository on that date and can change; the sources are listed at the end. Prices may change; see Umami pricing. "Unconfirmed" means the fact wasn't on Umami's own pages that day. It doesn't mean the feature is missing. See all comparisons, including Google Analytics.
In short
- Both are cookieless web analytics with one script tag, goals, funnels and a revenue report.
- Revenue. Umami Cloud imports payments and refunds from six providers on Pro or Business and links them to visitors through a distinct ID. traffic.cx syncs payments on every plan, links them with a pageview ID at checkout, and handles renewals and unmatched payments.
- Getting started. Umami's Hobby plan is free for up to 100,000 events a month on one website. traffic.cx is free on one site with every feature, revenue attribution included, at 3,000 events a month, with no card. Sign up with Google or email.
- Where Umami is stronger. MIT-licensed open source you can self-host, a much bigger free allowance, product analytics (replays, heatmaps, retention, cohorts), data import, and Paddle and WooCommerce connectors.
What's the same
Simple dashboard, one script, revenue report
Both give you sources, pages, UTM campaigns, countries and devices from one script tag, with custom events, goals, funnels and realtime visitors. Both have a revenue report and both can pull payments from providers, so revenue alone isn't the whole difference. The details of how a payment is linked to a visit are.
No visitor cookie by default
Umami's tracker doesn't use cookies (Umami), and traffic.cx sets no visitor cookie by default, so this is parity, not an advantage. traffic.cx's default tracker uses a daily visitor identifier whose secret is deleted after 48 hours, and an optional cookie mode supports longer visitor journeys (privacy notice). Whether you need consent depends on your setup and the rules that apply to you, especially because revenue attribution links payments to visits.
Where traffic.cx is different
Payment sync on every plan, Free included
Umami's payment-provider integrations need a Pro or Business plan, as of 29 October 2026 (Umami docs). In traffic.cx you connect Stripe, Lemon Squeezy, Polar or Dodo Payments in Settings → Revenue on any plan, including Free on one site.
A pageview ID instead of a user ID
Umami links an imported payment to a visitor when you identify that visitor with a distinct ID and pass the same ID to your provider as umami_distinct_id. Lemon Squeezy isn't supported for this (Umami docs). traffic.cx reads a pageview ID in the browser when checkout starts and adds it to checkout metadata, so guest checkouts work without a login (how it works). Lemon Squeezy checkouts pass it as custom data (Lemon Squeezy guide).
Renewals, refunds and unmatched payments
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 going to a guessed source. Connecting Stripe, Lemon Squeezy, Polar or Dodo Payments also imports that provider's last 90 days of payments, so your revenue totals don't start at zero. Those older payments will mostly be Unattributed.
Two attribution models with a configurable lookback
The Revenue page compares sources by revenue, paying customers, conversion rate and revenue per visitor, and toggles between last non-direct (the default) and first touch, with a 90-day lookback by default (7 to 365 days) (revenue attribution). Umami credits an imported payment to the visitor's most recent visit in the previous 90 days (Umami docs).
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 a purchase can't be connected 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 (cookieless versus cookie mode).
Where Umami Analytics is the better choice
- Open source and self-hosting. Umami is MIT-licensed, and you can run it on your own server with Node.js and PostgreSQL (GitHub, install docs). Self-hosted data is kept until you delete it. traffic.cx isn't open source and can't be self-hosted.
- A bigger free tier. Umami Cloud Hobby is free for up to 100,000 events a month with 6 months of retention (Umami pricing). traffic.cx's Free plan has 3,000 events a month and shows the last 30 days.
- Product analytics. Journeys, retention, segments and cohorts on every plan, and session replays and heatmaps on Business (Umami docs). traffic.cx focuses on traffic and revenue.
- More payment providers. Umami also connects Paddle and WooCommerce (Umami docs). traffic.cx doesn't.
- Data import and full export. Umami Cloud can import your existing data on paid plans and exports all of a website's raw data. traffic.cx can't import Umami data and exports report tables only.
- Community. Umami has community plugins for WordPress, Nuxt, Gatsby, Docusaurus and more (Umami docs). traffic.cx is newer and smaller.
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.
Umami Cloud: Hobby $0 (up to 100K events a month, 1 website, 6-month retention); Pro $20/month (1 million events included, then $0.00003 per event, up to 20 websites); Business $200/month (10 million events, then $0.00002 per event); Enterprise custom (umami.is/pricing), as of 29 October 2026. Paid subscriptions start with a 14-day free trial. Self-hosting the open-source version has no licence fee. You pay for your own server and database. Prices may change. Check Umami pricing for the current numbers.
How to switch from Umami Analytics
These steps come from the install guide, the revenue docs and the provider guides.
Export what you want to keep. traffic.cx can't import Umami or any other analytics tool, so your history starts when you install the script. Umami Cloud exports a website's data as CSV (Umami docs). Self-hosted data stays in your own database.
Sign up and add your site. Sign up with Google or email, add the site with its real domain and copy the snippet from Settings → Tracking.
Install the script. Put this once in the shared head, with the full
tcx_ID. Don't add manual pageview calls on route changes. The tracker follows single-page navigation.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.
Recreate your events as goals. Replace
umami.track('name')calls withwindow.trafficcx?.('name')and create a matching custom-event goal in the dashboard. Events that only carriedrevenueandcurrencymay not be needed once payments sync.Connect payments and pass the pageview ID. In Settings → Revenue, connect your provider, then add
trafficcx.pageviewId()to your checkout metadata, and to the subscription's metadata for renewals. You can keep anyumami_distinct_idmetadata while you compare. Test with your provider's test mode on a separate traffic.cx test site. Connecting Stripe, Lemon Squeezy, Polar or Dodo Payments imports that provider's last 90 days of payments. Those older payments will mostly be Unattributed.Run both while you compare, then remove the Umami script. traffic.cx is safe to run alongside Umami's script. It keeps to its own
window.trafficcxglobal andtcx_storage, and it adds to the browser's page-change handling instead of replacing it (how the script stays separate).
Sources
traffic.cx facts come from pricing, the home page, privacy, how revenue attribution works (updated 14 Oct 2026), revenue attribution, plans (updated 25 Oct 2026), the docs index, install (updated 14 Oct 2026), Search Console and the provider guides for Stripe, Lemon Squeezy, Polar and Dodo Payments, checked 29 Oct 2026. Each of those guides says connecting imports the last 90 days. The operator line is the site footer. The Free plan numbers come from the same plan catalogue as pricing.
Umami facts come from these pages, as of 29 Oct 2026:
- Pricing (plans and feature table)
- Subscription (14-day trial, spending budget)
- Features (cookies, data import, pixels, links; footer "Umami Software, Inc.")
- GitHub (MIT licence)
- Install
- FAQ (self-hosted retention)
- Revenue
- Attribution
- Payment providers and integrations
- Cloud (Cloud versus self-hosted)
- Import
- Export
- Community integrations
- Sub-processors (last updated 24 Apr 2026)
Frequently asked questions
Can Umami track Stripe revenue?
Yes, on Umami Cloud's Pro or Business plans. It imports Stripe payments and refunds, and links them to a visitor when you pass a distinct ID as umami_distinct_id metadata. Any plan can send revenue as an event. traffic.cx connects to Stripe on every plan, Free included, and links payments with a pageview ID at checkout.
Is there a free Umami Analytics alternative with revenue attribution?
traffic.cx is free on one site. Sign up with Google or email. The Free plan costs $0, needs no card and has no end date, and includes every feature, payment sync and revenue attribution included, with 3,000 events a month and the last 30 days of reports. Umami's Hobby plan is free too, with more events, but its payment-provider integrations need Pro or Business.
Is traffic.cx open source or self-hosted like Umami?
No. traffic.cx is a hosted service only. It isn't open source and can't be self-hosted. If self-hosting is a requirement, Umami is the better fit.
Can I import my Umami data into traffic.cx?
No. traffic.cx has no import from Umami or any other analytics tool. Connecting Stripe, Lemon Squeezy, Polar or Dodo Payments imports that provider's last 90 days of payments. Export your Umami data before you cancel if you want to keep it.
Can I run traffic.cx alongside Umami?
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 Umami when you're ready. How the script stays separate.
Umami vs Google Analytics: where does traffic.cx fit?
traffic.cx is closer to Umami. It is a simple, cookieless dashboard rather than a full Google Analytics suite. Its focus is the step after traffic, which sources and campaigns turn into paying customers. The Google Analytics comparison is published at /compare/google-analytics-alternative.