How much does Fathom Analytics cost compared with invisit?
Fathom costs $15 a month for up to 100K pageviews and $60 a month at 1M, on monthly billing. invisit is free up to 20K events, $14 a month at 100K and $49 at 1M. Neither gates features by plan, so the bill follows traffic alone, and Fathom’s price steps land below invisit’s in two ranges.
Prices at the volumes in between, as of November 2026, from Fathom’s pricing and invisit’s pricing:
| A month of | Fathom | invisit |
|---|---|---|
| 50K | $15 | $14 |
| 200K | $25 | $24 |
| 250K | $45 | $24 |
| 500K | $45 | $49 |
| 2M | $100 | $99 |
| 3M | $140 | $99 |
| 5M | $140 | $199 |
Fathom counts pageviews, custom events and every API request against one allowance shared by all your sites. invisit counts page views, custom events, conversions and short-link clicks, never bots, crawler reads, web vitals or feedback.
Going over works differently. When usage stays over, Fathom emails you, then after reminders and a final notice locks dashboard and API access while it keeps collecting (Fathom’s plan limits). invisit warns at 80%, records the first month over in full, and in a second month over in a row pauses new events at the limit.
Fathom sells extra site packs ($10 a month per 50) and higher API rate limits ($19 to $399 a month). A year paid up front costs ten months’ price on Fathom and nine on invisit. Fathom’s trial is 7 days with a card; invisit’s is 14 days without one.
A worked example: a SaaS with 300K page views and 20K signup and checkout events a month uses 320K of either allowance. Fathom’s 500K plan costs $45 a month or $450 a year. invisit’s 1M step costs $49 a month or $441 a year, so Fathom is $4 cheaper monthly and invisit $9 cheaper yearly.
Fathom for agencies: sites, client email reports and share links
Fathom is built for agencies in ways invisit is not: every Fathom plan includes at least 50 sites, email reports go to clients on a schedule, and each client can get a dashboard link of their own. invisit has unlimited sites on every paid plan, but no scheduled email reports.
Fathom’s site allowance grows with the plan, per Fathom’s site limits:
| Fathom plan | A month | Sites included |
|---|---|---|
| 100K to 500K | $15 to $45 | 50 |
| 1M | $60 | 75 |
| 2M | $100 | 100 |
| 5M | $140 | 150 |
| 10M | $200 | 200 |
Beyond that, packs of 50 more sites cost $10 a month each, up to 15 packs. An agency with 120 small client sites and 400K pageviews in total pays $45 for the 500K plan plus two packs: $65 a month. On invisit the same traffic costs $49 a month, whatever the number of sites.
Fathom’s email reports are unlimited, weekly or monthly, for one site or a roll-up of several, to any address. Fathom’s share links give each client a URL with an optional password and expiry date; viewers can filter and download CSVs but never see your other sites. On invisit, a client follows a public dashboard, with an optional password, instead of a weekly email. invisit roles cover a whole workspace rather than one site, so an agency gives each client a workspace of its own.
Can you add team members to a Fathom account?
No. As of November 2026, a Fathom account has one login, and Fathom’s docs say it is “in the process of adding fully functional user accounts”. invisit has workspaces with viewer, member and owner roles, and team members are included on every plan, free included.
Until then, Fathom gives colleagues the same share link a client gets. Viewers can change dates, filter and download, but cannot change settings, and only the site owner can remove data. Fathom’s password guidance asks you not to share the account password and to share dashboards instead.
For a team where developers add events and marketers read campaigns, that one-login model is often the deciding gap. invisit workspaces give each person a sign-in and a role.
Where does Fathom store data, and does it need a cookie banner?
Neither Fathom nor invisit sets cookies, and both tell visitors apart with a hash that rotates daily, so neither follows anyone from one day to the next. The difference is location: Fathom stores its anonymized analytics on US infrastructure, and invisit stores data in Falkenstein, Germany.
Fathom’s EU isolation routes visitors from the EU, the UK, Switzerland, Norway, Iceland and Liechtenstein to EU servers in Falkenstein, Helsinki and Nuremberg, where the IP address is stripped before anything reaches the US. Everyone else is processed in the US, and the anonymized records are stored there. Fathom’s DPA lists BunnyWay (Slovenia) and AWS (USA) as sub-processors; Fathom is a Canadian company.
| Fathom | invisit | |
|---|---|---|
| Cookies | None | None |
| Visitor hash | IP, user agent and site, salt rotated at midnight UTC | Rotates every day; raw IPs never stored |
| Analytics stored in | US infrastructure | Falkenstein, Germany (Hetzner) |
| Do Not Track | Counted unless you add data-honor-dnt="true" |
Counted unless you add data-respect-dnt |
| Global Privacy Control | Not mentioned in Fathom’s docs | Counted unless you add data-respect-gpc |
Fathom’s Extreme EU Isolation (https://cdn-eu.usefathom.com/script.js) processes every visitor’s request in the EU. Fathom calls that a choice about processing location; its data isolation page still says anonymized analytics are stored in the US.
invisit runs Cloudflare, a US company, for DNS and the CDN in front of its German servers, and offers a DPA. Fathom says its analytics need no consent banner; invisit adds an optional consent mode for sites whose policy asks for consent anyway.
Fathom’s script size, ad blockers and custom domains
Fathom’s tracker is smaller than invisit’s. On November 3, 2026, cdn.usefathom.com/script.js measured 6,981 bytes, about 2 KB gzipped, against about 8.5 KB gzipped for invisit’s core invisit.js, whose heatmap, feedback and interaction modules load only when used.
Fathom no longer offers a way to serve its script from your own domain. Fathom ended custom domains in March 2023, saying uBlock and other blockers had caught up with them; domains set up before then keep working. Fathom’s bot detection docs also warn that a reverse proxy can make real visitors look like bots unless you turn bot blocking off.
invisit’s @invisitdev/server serves the script and the collection endpoint from your own domain, and the same package records crawler reads.
Does Fathom have funnels, visit timelines or alerts?
No. Fathom reports pages, referrers, campaigns and events in aggregate, and has no funnels, no single-visit view and no traffic alerts; invisit includes all three. Both show visits from AI assistants such as ChatGPT, Claude, Perplexity and Gemini in their own tab.
The gap starts with what an event can carry. A Fathom event is a name plus an optional _value in cents (Fathom’s events docs). An invisit event takes up to 32 properties, so track('signup', { plan: 'pro' }) can later split a chart by plan, and invisit builds funnels from pages or events, split by source, country or device.
Fathom does track sessions: a visit’s referrer carries across its pages, and entry and exit pages show where visits start and end. It does not show one visit’s pages and events in order. invisit keeps that timeline for every visit (live visits open in the dashboard, any visit at any age through the API and MCP), and identify(user.id) attaches your own hashed user id.
Revenue works differently too. Fathom adds up the _value you send from your code, with a currency per event (Fathom’s ecommerce docs). invisit connects to Stripe, Paddle, Polar, Lemon Squeezy, Creem or Dodo Payments and reads payments, refunds, disputes, fees and net, with no code in your checkout.
The rest has no Fathom counterpart: alerts on spikes, drops and silence to Slack, Discord, ntfy or a webhook; click and scroll heatmaps; web vitals from real visitors; crawler reads (Fathom blocks bots and counts them by type); short links; a feedback widget; and a remote MCP server. Fathom has no official MCP server, though its Luna assistant, added in October 2026, answers questions about your stats in the dashboard.
When Fathom is the better choice
Fathom is the better choice for agencies that report to clients by email, for sites leaving Google Analytics that want their GA4 history, and for anyone who wants the smallest script and the fewest screens.
Client reporting is Fathom’s clearest win: scheduled email reports for one site or many, a share link per client, and site transfers to a client’s own account. invisit has no email reports.
History comes next. Fathom’s GA4 importer brings in daily pageview history (not events), and its Search Console integration puts search terms, clicks, impressions and position beside your traffic. invisit cannot import history and has no Search Console integration.
Fathom’s script is about a quarter the size of invisit’s, and Fathom costs less from just over 250K up to 500K a month ($45 against $49) and from just over 3M up to 5M ($140 against $199).
Fathom also keeps the list of things to learn short: one dashboard page, saved views, chart milestones, and a way to remove spam visits from past data. If you read traffic once a week and never need a funnel, that restraint is the product working as intended.
Switching from Fathom to invisit
- Create a site in invisit and install the script or
@invisitdev/webnext to Fathom’s (installation, frameworks). Both can run on the same pages. - Map each
fathom.trackEvent()call totrack(). invisit event names use letters, digits and_ . : -, so a name with spaces such asnewsletter signupbecomesnewsletter_signup. - Replace
_valuewith a payment provider connection, and keep the plan or product as an event property. - Export your Fathom history. Fathom’s custom export downloads pageview or event data as CSV for any range up to All Time, with the dimensions you choose.
- Run both for two to four weeks. Expect totals to differ a little, since each tool filters bots its own way.
- Remove Fathom’s script and cancel in its billing settings. After the paid period ends, Fathom queues your data for deletion within 60 days (Fathom’s cancel page).
// Before: Fathom, loaded by <script src="https://cdn.usefathom.com/script.js" data-site="ABCDEFG" defer>
fathom.trackEvent('newsletter signup')
fathom.trackEvent('checkout', { _value: 4900 }) // $49.00, in cents
// After: invisit
import { identify, init, track } from '@invisitdev/web'
init({ site: '<site id>' })
track('newsletter_signup')
track('checkout', { plan: 'pro' }) // the amount comes from your payment provider
identify(user.id) // optional: ties visits to your own hashed user id