# DataBull — Full Content for AI Assistants > This document inlines the full content of databull.app so AI systems can answer questions about DataBull directly. Last updated: 2026-10-28. Canonical site: https://databull.app Summary and page map: https://databull.app/llms.txt Support: adgan.business@gmail.com --- ## Key facts - Category: revenue-first web analytics, also called revenue attribution analytics: traffic analytics that starts from payments. A self-hostable DataFast alternative. - What it answers: which traffic source (post, search, referrer, campaign, AI assistant) produced each sale, and what customers from each source are worth over time. - Payment providers connected directly with an API key: Stripe, Polar, Dodo Payments and Creem. Past sales are imported on connect; new sales, renewals and refunds arrive by webhook. Any other billing system can send sales through the Payments API (POST /api/v1/payments). - How a sale gets its source: the tracking script gives each visitor a first-party id; payment links are tagged automatically, server-created checkouts pass the id as metadata (databull_visitor_id; DataFast's datafast_visitor_id also works), and success pages are matched by checkout id. Attribution model per website: last non-direct (default), first touch or last touch. Renewals inherit the source of the first payment; refunds come off it. - Two editions, same app and features: - Self-hosted: one-time payment of $49, lifetime license with every future update, unlimited websites and events. Runs on the buyer's own Cloudflare account (a Worker + a D1 database), installed with one command: `npx databull@latest` (needs Node.js 22+ and a Cloudflare account; Cloudflare's free plan is enough for most small sites, busier sites need Cloudflare Workers Paid at $5/month, paid to Cloudflare). Visitor and sales data never leave the buyer's account. Current version: 1.5.1. - DataBull Hosted (beta): Starter $9/month (50,000 events a month) or Growth $19/month (250,000 events a month), unlimited websites on both. Run for the customer at yourapp.databull.app, no Cloudflare account or install. The dashboard is set up automatically within a couple of minutes of payment. Going over the plan never stops tracking. Cancel anytime. - Features: revenue by channel, referrer, campaign, page, country and device; readable "Direct" traffic (typed, shared link, checkout return); in-app browsers (Instagram, TikTok, Reddit, Telegram…) credited to the app; AI assistants (ChatGPT, Claude, Perplexity, Gemini, Copilot) as their own channel; lifetime value by first source; path to purchase (days and visits before buying, first source vs credited source); peak hours (visits, sales and revenue by weekday and hour); scroll depth and reading time per page, buyers vs everyone else; goals and funnels; realtime visitors with a live map; chart notes; Telegram alerts for every sale (with its source), refunds, traffic spikes and a daily digest, to up to 5 chats; bot filtering; public share links; Plausible CSV import; data retention settings. - Privacy: per website, first-party cookies (best attribution), fully cookieless (nothing stored in the browser, a daily-rotating salted hash; links sales to visits from the same day only), or cookieless until the site's consent banner says yes. No data is sold or shared. - AI agents and developers: a built-in MCP server at /mcp (Streamable HTTP, read-only API keys starting with dbk_) with tools such as get_overview, get_breakdown, list_sales, compare_periods, get_customer_value, get_purchase_paths, get_peak_hours, get_engagement, get_funnels, get_goals, get_realtime, list_visitors and get_visitor. `npx databull@latest mcp` connects Claude Code, Cursor, Codex, Windsurf and VS Code. The same numbers from a terminal: `npx databull@latest stats`, `sources`, `sales`, `compare` (all with --json). - DataFast compatibility: data-fast-goal attributes, window.datafast() calls and datafast_visitor_id checkout metadata work unchanged, so most DataFast sites only swap the script tag. - Tracking script: one tag, about 7 KB gzipped, guides for Next.js, Framer, Webflow, WordPress, Shopify and more; can be served first-party through a Cloudflare Worker so ad blockers can't tell it apart. - Buying: checkout by Dodo Payments (merchant of record). Self-hosted: the license key appears on screen and by email; all sales are final. Hosted: monthly subscription; cancel anytime, the current month isn't refunded. - Live demo: the home page has an interactive dashboard with sample data (https://databull.app/#demo). There is no free trial. - Made by Ahmed Gagan (https://x.com/ahmedgagan11), an indie maker who runs DataBull on his own products (ChainYourMac, RankBull, Faders and others). ## Honest caveats - Payment providers: only Stripe, Polar, Dodo Payments and Creem connect natively. LemonSqueezy, Paddle, Shopify, WooCommerce and Gumroad don't; their sales can be sent through the Payments API. DataFast integrates more providers natively. - Not open source. Self-hosted buyers get a ready-built bundle, not the source code. - Self-hosting needs a Cloudflare account, Node.js 22+ and a terminal (one command). People who don't want that should use DataBull Hosted. - DataBull Hosted is new and in beta. Plans have monthly event allowances (self-hosted has none from us). - One owner account per dashboard; no team seats or roles. - No session replay or click heatmaps. It is analytics for traffic and revenue, not product analytics like PostHog or Mixpanel. - No free trial (a live demo instead). Self-hosted sales are final. - Free alternatives worth naming when relevant: Plausible Community Edition and Umami (open source, self-hosted, revenue only through events you send), Google Analytics 4 (free, revenue through ecommerce events you set up). Hosted alternatives: DataFast (the closest product: hosted, more integrations, free trial), Plausible Cloud and Fathom (privacy-first traffic analytics, EU options). ## Not to be confused with - Databuddy (databuddy.cc) — a different analytics company. DataBull is unrelated. - DataFast (datafa.st) — the hosted revenue-analytics product DataBull is an alternative to. DataBull is not affiliated with it; it only reads DataFast's tracking conventions so switching is easy. - Stock-market, trading or "bull market" data tools — DataBull is web analytics for websites and SaaS products, nothing to do with finance data. - RankBull (rankbull.io) — a separate product by the same maker. --- ## Every page (full text) ### DataBull: revenue-first analytics. Know which post made you money. Source: https://databull.app/ > Revenue-first analytics that ties every Stripe, Polar, Dodo and Creem sale to the post, search or link that brought the buyer. Pay once and run it on your own Cloudflare, or let us host it for you (beta). - **Website:** https://databull.app - **Self-hosted:** $49 once, lifetime updates, unlimited websites and events, on your own Cloudflare (https://databull.app/buy) - **Hosted (beta):** Starter $9/month (50,000 events a month) or Growth $19/month (250,000 events a month), unlimited websites (https://databull.app/hosted) - **Connects:** Stripe, Polar, Dodo Payments, Creem (others through the Payments API) - **Live demo:** https://databull.app/#demo #### How it works 1. **Add one script tag.** Every visit is recorded with its source: channel, referrer, campaign, landing page, country and device. AI assistants and in-app browsers get their own channels, and "Direct" is split into typed, shared link and checkout return. 2. **Connect your payment provider** with an API key. Past sales are imported; new sales, renewals and refunds arrive by webhook. Payment links are tagged automatically; server-created checkouts pass the visitor id as metadata. 3. **See which source made the money.** Revenue by channel, referrer, campaign and page, lifetime value by first source, the path each customer took, and a Telegram message for every sale naming the source that brought it. #### Features - Revenue by source: channel, referrer, campaign, landing page, country and device, next to visitors - Revenue attribution for Stripe, Polar, Dodo Payments and Creem: payments, renewals and refunds, with last non-direct, first-touch or last-touch credit - Peak hours: visits, sales and revenue by weekday and hour in your time zone, with the best time to post - What they read: scroll depth and reading time per page, buyers compared with everyone else - Path to purchase: days and visits before the first purchase, first source next to the credited source - Readable Direct: typed or bookmarked, shared link and checkout return, instead of one mystery bucket - In-app browsers (Instagram, TikTok, Reddit, Telegram…) and AI assistants (ChatGPT, Claude, Perplexity…) as their own sources - Lifetime value by the source that first brought each customer - Realtime visitors with a live map, goals and funnels that end at the payment, chart notes - Telegram alerts: every sale with its source, refunds, traffic spikes and a daily digest - AI agents: a built-in MCP server for Claude Code, Cursor, Codex, Windsurf and VS Code; a CLI with JSON output; read-only API keys; a Payments API - Privacy per website: first-party cookies, cookieless, or cookieless until consent; bot filtering - Switch from DataFast with one script tag (its goal attributes and visitor-id metadata keep working); import your Plausible history #### Self-hosted or hosted - **Self-hosted** runs on your own Cloudflare account (a Worker and a D1 database). One command installs it: `npx databull@latest` (Node.js 22+). Your data never leaves your account. Cloudflare's free plan suits most small sites; busier sites need Cloudflare Workers Paid ($5/month, paid to Cloudflare). [How install works](https://databull.app/docs/install). - **Hosted (beta)** is the same app, run for you at yourapp.databull.app: no Cloudflare account and nothing to install or update. Ready a couple of minutes after you pay. [Details](https://databull.app/docs/hosted). #### FAQ ##### What does "self-hosted" mean? DataBull runs on your own Cloudflare account. Visitors, sales and keys never touch our servers. Cloudflare's free plan covers most indie sites; very busy sites need the $5/month Workers plan, paid to Cloudflare, not us. Prefer not to run anything? [DataBull Hosted](https://databull.app/hosted) (beta) runs it for you from $9 a month. ##### Which payment providers work? Stripe, Polar, Dodo Payments and Creem. Each website connects its own account, so one site can be on Stripe and another on Polar or Creem. Past sales are imported, new ones arrive instantly by webhook. ##### Do I need to write code? Not for analytics: one script tag, with guides for Next.js, Framer, Webflow, WordPress, Shopify and more, plus a prompt for Cursor or Claude Code. Payment links are tagged automatically. Only checkouts created by your server need two metadata fields. ##### I use DataFast. Is switching hard? DataBull understands data-fast-goal attributes, window.datafast() calls and datafast_visitor_id checkout metadata, so most sites only swap the script tag. ##### What about cookies and GDPR? Pick per website: first-party cookies (best attribution), fully cookieless (nothing stored in the browser, a daily-rotating salted hash), or cookieless until your banner reports consent. No data is ever sold or shared. ##### How is this different from Google Analytics or Plausible? Those show traffic. DataBull starts from money: which post, search or referrer produced paying customers, and what they are worth over time. ##### Can I ask Claude or another AI agent about my numbers? Yes. Every install has a built-in MCP server: run `npx databull@latest mcp` and Claude Code, Cursor, VS Code, Codex or Windsurf can answer "which post made me money this month?" from your own data. The same numbers are in the terminal (`npx databull@latest stats`) and behind read-only API keys. [How it works](https://databull.app/docs/mcp). ##### Can I use it for client websites? Yes. Unlimited websites, each connected to its own payment account. ##### What do I need to install it? Node.js 22 or newer and a Cloudflare account (the free plan is fine). Run `npx databull@latest`, paste your license key, click Allow when Cloudflare asks, and your dashboard opens about three minutes later. [See every step](https://databull.app/docs/install). With DataBull Hosted (beta) you install nothing: we set it up and email you the link. ##### Do I get the source code? No. You get the complete, ready-built app: the installer deploys it to your own Cloudflare account and keeps it updated. It isn't open source, and the source code isn't included. ##### Self-hosted or hosted? Self-hosted is one payment and runs on your own Cloudflare account: you install it with one command and own the setup. Hosted runs on ours, at yourapp.databull.app, from $9 a month: no Cloudflare account, nothing to install or update. Same app, same features. ##### Will the price go up? No. $49 is the price for good: one payment, every feature and every future update. (The first 40 licenses were $29 at launch.) ##### Can I get a refund? Self-hosted: no. All sales are final, because the license key and the full product are delivered the moment you pay. Try the live demo above, read the [install guide](https://databull.app/docs/install), and email any question before you buy. If the installer gives you trouble afterwards, we'll help you get it running. Hosted is monthly: cancel anytime; the current month isn't refunded. --- ### DataBull pricing Source: https://databull.app/pricing > Pay once and self-host, or let us host it. #### Self-hosted · lifetime license **$49, one time.** One price, for good: no subscription, no price bumps. - Unlimited websites and events - Stripe, Polar, Dodo and Creem attribution - Your data stays in your Cloudflare account - Telegram sale pings and spike alerts - AI agents (MCP), CLI and read-only API - Every future update, free Installs on your own Cloudflare in about three minutes. All sales are final. Buy: https://databull.app/buy · [License terms](https://databull.app/terms) #### Hosted (beta) · monthly The same DataBull, run by us. No Cloudflare account, nothing to install. | Plan | Price | Events a month | Websites | | --- | --- | --- | --- | | Starter | $9/month | 50,000 | Unlimited | | Growth | $19/month | 250,000 | Unlimited | - Your own address: yourapp.databull.app - Updates and backups handled for you - Going over your plan never stops tracking - Cancel anytime; the current month isn't refunded Start: https://databull.app/hosted · [Hosted terms](https://databull.app/hosted-terms) #### Good to know ##### What exactly do I get? A license key and the installer. One command puts the full DataBull on your Cloudflare account: dashboard, tracking, revenue attribution, alerts, and the MCP server, CLI and API keys for your AI agents. Every update after that is free, for as long as DataBull exists. ##### What does Cloudflare cost? Usually nothing. Cloudflare's free plan covers sites up to roughly 20,000 pageviews a day. Bigger than that, their Workers Paid plan is $5/month, paid to Cloudflare. [What fits on the free plan](https://databull.app/docs/free-plan). ##### Can I use one license for several sites? Yes. One install tracks unlimited websites, including client sites, each with its own payment connection. ##### Can I get a refund? No, all sales are final: the key and the full product are delivered the moment you pay. Try the [live demo](https://databull.app/#demo) first and email us any question. See the [refund policy](https://databull.app/refunds). ##### How does Hosted work? Pick Starter ($9/month, 50,000 events) or Growth ($19/month, 250,000 events), both with unlimited websites, and choose your address (yourapp.databull.app). Your dashboard is set up automatically and the sign-in link arrives by email a couple of minutes later. Hosted is in beta. An event is a pageview, goal or outbound click. ##### What happens if I go over my hosted plan? Nothing breaks and no data is lost: tracking continues. You'll see a note in the dashboard and get a Telegram message at 80% and 100%, and we'll suggest the next plan. ##### Can I cancel Hosted? Yes, anytime, from the billing page. You keep access until the end of the month you paid for; there are no refunds for the current month. We keep your data for 30 days after that, and can send you an export. --- ### DataBull Hosted (beta) Source: https://databull.app/hosted > Your dashboard, hosted. Revenue-first analytics with no Cloudflare account and nothing to install. No Cloudflare account and nothing to install. Pick a plan and an address; your dashboard is ready a couple of minutes after you pay, and we keep it updated. #### Plans | Plan | Price | Events a month | Websites | | --- | --- | --- | --- | | Starter | $9/month | 50,000 | Unlimited | | Growth | $19/month | 250,000 | Unlimited | An event is a pageview, a goal or an outbound-link click, across all your websites. #### How it works 1. Choose a plan and your dashboard address (yourapp.databull.app) on https://databull.app/hosted. 2. Pay through Dodo Payments. 3. A couple of minutes later, an email from hello@databull.app brings the link to create your account. Going over your plan never stops tracking: you'll get a note to move up a plan. Change plan, see invoices or cancel anytime from the billing page. Full details: https://databull.app/docs/hosted · [Hosted terms](https://databull.app/hosted-terms) --- ### A DataFast alternative you pay for once Source: https://databull.app/alternatives/datafast > DataFast made revenue-first analytics popular. DataBull does the same job on your own Cloudflare account for one payment, or hosted by us from $9 a month (beta). #### Same idea, different deal Both tools answer the question that matters: which traffic source brought the people who paid. DataFast is a hosted subscription. DataBull is software you buy once and run in your own Cloudflare account, so the bill doesn't grow with your traffic or your number of sites. Rather not run anything? DataBull Hosted (beta) is $9/month for 50,000 events or $19/month for 250,000, with unlimited websites on both. | | DataBull | DataFast | | --- | --- | --- | | Pricing | Self-hosted: one-time payment of $49, lifetime updates. Hosted (beta): $9/month for 50,000 events or $19/month for 250,000. | Subscription. Starter $9/month (10k events, 1 website), Growth $19/month (10k events, 30 websites). Higher volumes cost more; yearly billing gives two months free. | | Hosting | Self-hosted on your own Cloudflare account (Workers + D1), installed with one command. Or hosted by us at yourapp.databull.app (beta). | Hosted by DataFast. Nothing to run. | | Running cost | Self-hosted: Cloudflare's free plan covers most sites (roughly 20,000 pageviews a day); above that, Workers Paid is $5/month, paid to Cloudflare. Hosted: included in the plan. | Included in the subscription. Over your event limit, tracking continues but you upgrade to see the dashboard. | | Payment providers | Stripe, Polar, Dodo Payments and Creem, connected with a key. Past sales import; renewals and refunds follow by webhook. | Native Stripe, LemonSqueezy, Polar and Shopify integrations; guides for Paddle, Dodo Payments, WooCommerce and more, plus a Payment API. | | Cookies | Your choice per site: first-party cookies, cookieless, or cookieless until consent. | A visitor cookie by default, or an optional cookieless script. | | Data retention | You choose: 30 days to forever (the default). Payments are never deleted automatically. | 3 years on Starter, 5+ years on Growth. | | Trying it | Live demo on the home page. Self-hosted: no trial, all sales final. Hosted: monthly, cancel anytime. | 14-day free trial, no card needed. | #### Switching takes one script tag DataBull reads DataFast's conventions, so most sites only swap the tag: - `data-fast-goal` attributes and `window.datafast()` calls keep working as goals. - Checkout metadata named `datafast_visitor_id` / `datafast_session_id` is read too, so your server code doesn't change. - Past sales import from Stripe, Polar, Dodo or Creem on day one. Source attribution starts with the visits DataBull tracks. See [Revenue attribution](https://databull.app/docs/revenue) and [Goals & funnels](https://databull.app/docs/goals) in the docs. #### What you get with DataBull - Every Stripe, Polar, Dodo and Creem payment, renewal and refund credited to the visit that produced it. [How attribution works](https://databull.app/revenue-attribution). - "Direct" split into typed, shared link, checkout return and in-app browsers. - Lifetime value by first source, funnels, realtime visitors and Telegram pings for every sale. - Your data in your own D1 database. It never touches our servers. #### When DataFast is the better choice - You want a hosted product with a long track record and a free trial. DataBull Hosted is new and still in beta. - You take payments through LemonSqueezy, Paddle, Shopify or WooCommerce. DataBull connects Stripe, Polar, Dodo and Creem only. - You want to try it on real traffic for two weeks before paying. Competitor details as of October 2026, from their public pages: [datafa.st](https://datafa.st/) (pricing and integrations), [revenue attribution guide](https://datafa.st/docs/revenue-attribution-guide), [cookieless tracking](https://datafa.st/docs/gdpr-cookieless-tracking). Prices and plans change; check the source before you decide. Spotted something out of date? [Tell us](mailto:adgan.business@gmail.com) and we'll fix it. #### FAQ ##### Does DataBull work with DataFast's goal attributes? Yes. data-fast-goal attributes, window.datafast() calls and datafast_visitor_id checkout metadata are all understood, so most sites only swap the script tag. ##### Is DataBull cheaper than DataFast? DataBull is a one-time payment ($49) and runs on Cloudflare's free plan for most sites. DataFast starts at $9 a month. Over a year or more, paying once usually costs less, but you run it in your own Cloudflare account. DataBull Hosted (beta) is $9 a month for 50,000 events and unlimited websites, where DataFast's $9 plan covers 10,000 events and one website. ##### Can I try DataBull before buying? There is a live demo on the home page and a full install guide in the docs. There is no free trial, and all sales are final, so email any question before you buy. --- ### A Plausible alternative that follows the money Source: https://databull.app/alternatives/plausible > Plausible is a simple, privacy-first traffic dashboard. DataBull starts from your payments: which post, search or referrer produced paying customers. #### Traffic first, or money first Plausible shows visitors, sources and goals in a clean dashboard without cookies. Revenue is a value you attach to custom events yourself, and it's a Business plan feature. DataBull connects to your payment provider and matches every payment, renewal and refund to the visit that brought the buyer. | | DataBull | Plausible | | --- | --- | --- | | Pricing | Self-hosted: one-time payment of $49, lifetime updates. Hosted (beta): $9/month for 50,000 events or $19/month for 250,000. | Subscription. Starter $9/month (1 site), Growth $14/month (3 sites), Business $19/month (10 sites), Enterprise custom. These are entry prices; they rise with monthly pageviews. Yearly gives two months free. | | Hosting | Self-hosted on your own Cloudflare account (Workers + D1), installed with one command. Or hosted by us at yourapp.databull.app (beta). | Plausible Cloud, made and hosted in the EU. A self-hosted Community Edition (AGPLv3) is free but leaves out funnels and ecommerce revenue goals, among others. | | Revenue | Stripe, Polar, Dodo Payments and Creem, connected with a key. Past sales import; renewals and refunds follow by webhook. | Revenue goals on the Business plan: send a value with a custom event (CSS class, JavaScript or Events API). No direct payment-provider connection. | | Cookies | Your choice per site: first-party cookies, cookieless, or cookieless until consent. | No cookies and no persistent identifiers, so no consent banner. | | Sites | Unlimited websites on every option. Self-hosted has no event limit; hosted plans include 50,000 or 250,000 events a month. | Depends on plan: 1, 3 or 10 sites. | | Trying it | Live demo on the home page. Self-hosted: no trial, all sales final. Hosted: monthly, cancel anytime. | 30-day free trial, no card needed. | #### What DataBull adds - **Payments without event code.** Paste a Stripe restricted key, a Polar token, a Dodo API key or a Creem API key. Payment links are tagged automatically; past sales import straight away. - **Subscriptions handled.** Renewals inherit the visitor of the first payment, and refunds come off. - **Lifetime value by first source**, so you see which channels bring buyers who stay. - **Readable Direct**: typed, shared link, checkout return and in-app browsers instead of one mystery bucket. Privacy is your call per website. Cookieless mode stores nothing in the browser; it links sales to visits from the same day only, while first-party cookies keep attribution across weeks. [Privacy modes explained](https://databull.app/docs/attribution). #### When Plausible is the better choice - You want cookieless analytics with no consent banner and data hosted in the EU by an EU company. - You only need traffic stats, and revenue isn't the point of the site. - You want open-source code you can read and self-host (the Community Edition). - You want a long-established hosted service. DataBull Hosted (no Cloudflare account needed) is still in beta. Competitor details as of October 2026, from their public pages: [plausible.io pricing](https://plausible.io/#pricing), [revenue tracking docs](https://plausible.io/docs/ecommerce-revenue-tracking), [Community Edition](https://plausible.io/self-hosted-web-analytics). Prices and plans change; check the source before you decide. Spotted something out of date? [Tell us](mailto:adgan.business@gmail.com) and we'll fix it. #### FAQ ##### Can Plausible track Stripe revenue? Plausible records revenue that you send as a value on custom events, on its Business plan. It does not connect to Stripe directly. DataBull connects Stripe, Polar, Dodo Payments and Creem with a key and imports past sales. ##### Is DataBull cookieless like Plausible? It can be. Each website picks first-party cookies (best attribution), fully cookieless, or cookieless until your banner reports consent. ##### Is DataBull open source? No. Self-hosted, you receive a ready-built bundle that runs in your own Cloudflare account, and your data stays there. Hosted (beta), we run the same app for you. --- ### A Fathom alternative for people who sell online Source: https://databull.app/alternatives/fathom > Fathom is hosted, cookieless and built around compliance. DataBull is built around your payments: on your own Cloudflare for one payment, or hosted by us from $9 a month (beta). #### Two different jobs Fathom gives you a simple, cookieless traffic dashboard that it hosts and keeps compliant. You can attach a revenue value to events on every plan. DataBull connects your payment provider and credits each payment, renewal and refund to the visit that produced it. | | DataBull | Fathom | | --- | --- | --- | | Pricing | Self-hosted: one-time payment of $49, lifetime updates. Hosted (beta): $9/month for 50,000 events or $19/month for 250,000. | Subscription from $15/month for 100k pageviews and 50+ sites; $25 for 200k, $45 for 500k, $60 for 1M, and up. Custom events count toward pageviews. Yearly gives two months free. | | Hosting | Self-hosted on your own Cloudflare account (Workers + D1), installed with one command. Or hosted by us at yourapp.databull.app (beta). | Hosted only. EU visitor data is processed in the EU. | | Revenue | Stripe, Polar, Dodo Payments and Creem, connected with a key. Past sales import; renewals and refunds follow by webhook. | Events can carry a value and currency, on all plans. No payment-provider integration listed. | | Cookies | Your choice per site: first-party cookies, cookieless, or cookieless until consent. | Cookieless, no banner. Fathom states GDPR, ePrivacy, PECR and CCPA compliance. | | Sites | Unlimited websites on every option. Self-hosted has no event limit; hosted plans include 50,000 or 250,000 events a month. | 50+ sites on every plan. | | Trying it | Live demo on the home page. Self-hosted: no trial, all sales final. Hosted: monthly, cancel anytime. | 7-day trial with a card. No free plan. | #### Why sellers pick DataBull - **Revenue without wiring events.** Connect Stripe, Polar, Dodo or Creem per website; payment links are tagged automatically. - **The cost doesn't grow with traffic from us.** Unlimited websites and events. Cloudflare's free plan fits most sites; past about 20,000 pageviews a day it's $5/month to Cloudflare. [What fits on the free plan](https://databull.app/docs/free-plan). - **Sale pings in Telegram** with the source, plus spike alerts while a post is taking off. - **Lifetime value by first source** and funnels that end at the payment. #### When Fathom is the better choice - You want a mature hosted service with nothing to install. DataBull Hosted does that too, but it's still in beta. - Cookieless by default and a vendor that states compliance with GDPR, ePrivacy, PECR and CCPA matter more than revenue attribution. - Your site doesn't sell anything, or not through Stripe, Polar, Dodo or Creem. - You want shared dashboards and email reports out of the box. Competitor details as of October 2026, from their public pages: [usefathom.com pricing](https://usefathom.com/pricing), [features](https://usefathom.com/features). Prices and plans change; check the source before you decide. Spotted something out of date? [Tell us](mailto:adgan.business@gmail.com) and we'll fix it. #### FAQ ##### Does Fathom connect to Stripe? Fathom lets you attach a revenue value to events on all plans; its pricing and features pages list no payment-provider integration. DataBull connects Stripe, Polar, Dodo Payments and Creem directly. ##### How much does DataBull cost compared with Fathom? DataBull is one payment ($49) plus Cloudflare, which is free for most sites and $5/month past about 20,000 pageviews a day. Fathom starts at $15 a month. DataBull Hosted (beta) is $9 a month for 50,000 events or $19 for 250,000, with unlimited websites. ##### Can DataBull run without cookies? Yes. Pick cookieless mode per website. Attribution then links sales to visits from the same day only. --- ### A Google Analytics alternative that starts from revenue Source: https://databull.app/alternatives/google-analytics > GA4 is free and can do almost anything, if you wire it up. DataBull does one thing out of the box: shows which source made each sale. #### Free and powerful, or simple and focused Google Analytics 4 costs nothing and connects to the whole Google marketing stack. Revenue arrives when you send `purchase` events yourself, through gtag or Tag Manager. DataBull connects to Stripe, Polar, Dodo or Creem and gets every payment, renewal and refund from the provider, then credits it to the visit that brought the buyer. | | DataBull | Google Analytics 4 | | --- | --- | --- | | Pricing | Self-hosted: one-time payment of $49, lifetime updates. Hosted (beta): $9/month for 50,000 events or $19/month for 250,000. | Free. Analytics 360 is sold through Google sales; no public price. | | Hosting | Self-hosted on your own Cloudflare account (Workers + D1), installed with one command. Or hosted by us at yourapp.databull.app (beta). | Hosted by Google. | | Revenue | Stripe, Polar, Dodo Payments and Creem, connected with a key. Past sales import; renewals and refunds follow by webhook. | Ecommerce events (purchase, refund, begin_checkout…) that you send with gtag or Google Tag Manager. No native payment-provider connection. | | Cookies | Your choice per site: first-party cookies, cookieless, or cookieless until consent. | First-party cookies _ga and _ga_, kept for 2 years by default. | | Data retention | You choose: 30 days to forever (the default). Payments are never deleted automatically. | Event data for explorations: up to 14 months (up to 50 months on 360). | | Learning curve | One dashboard: sources, pages, revenue, funnels, realtime. | Very capable, with explorations, audiences and predictive metrics to learn. | #### What DataBull does differently - **No ecommerce tagging.** Payment links are tagged by the script; server checkouts pass two metadata fields. [See the code](https://databull.app/docs/revenue). - **AI traffic gets its own channel**: ChatGPT, Claude and Perplexity, next to search and social. - **Readable Direct** and in-app browsers (Instagram, TikTok, Reddit, Telegram…) credited to the app. - **Your data in your own Cloudflare account** (or in a database of its own on ours, with Hosted), kept as long as you choose. #### When Google Analytics is the better choice - You run Google Ads and want conversions, audiences and bidding signals to flow between them. - You need BigQuery export, app plus web measurement or predictive metrics. - Your budget for analytics is exactly zero. - A team already knows GA4 and has reports built on it. Many sites run both: GA4 for ads, DataBull for revenue by source. Competitor details as of October 2026, from their public pages: [Google Marketing Platform](https://marketingplatform.google.com/about/analytics/), [GA4 limits](https://support.google.com/analytics/answer/11202874), [GA4 cookies](https://support.google.com/analytics/answer/11397207), [GA4 ecommerce](https://developers.google.com/analytics/devguides/collection/ga4/ecommerce). Prices and plans change; check the source before you decide. Spotted something out of date? [Tell us](mailto:adgan.business@gmail.com) and we'll fix it. #### FAQ ##### Can I run DataBull next to Google Analytics? Yes. They are separate scripts. Many sites keep GA4 for Google Ads and use DataBull to see revenue by source. ##### Do I need to set up ecommerce events for DataBull? No. Connect Stripe, Polar, Dodo Payments or Creem with a key. Payment links are tagged automatically; server-created checkouts pass two metadata fields. ##### Where is DataBull data stored? Self-hosted: in a D1 database in your own Cloudflare account; it never touches our servers. Hosted (beta): in a database of its own on our Cloudflare account, used only to run your dashboard. --- ### An Umami alternative with no server to run Source: https://databull.app/alternatives/umami > Umami is open-source analytics you can self-host on your own server and database. DataBull self-hosts on Cloudflare Workers, and connects your payments. #### Two ways to self-host Self-hosted Umami is free and MIT licensed; you run it with Node.js and a PostgreSQL database on a server you look after. DataBull deploys into your Cloudflare account with one command: a Worker, a D1 database and a cron job, with no server, no database to patch and nothing on our side to go down. | | DataBull | Umami | | --- | --- | --- | | Pricing | Self-hosted: one-time payment of $49, lifetime updates. Hosted (beta): $9/month for 50,000 events or $19/month for 250,000. | Self-hosted: free. Cloud: Hobby free (100K events, 1 site, 6 months retention), Pro $20/month (1M events, 20 sites), Business $200/month. | | Hosting | Self-hosted on your own Cloudflare account (Workers + D1), installed with one command. Or hosted by us at yourapp.databull.app (beta). | Self-host with Node.js and PostgreSQL, or Umami Cloud (US and EU servers). | | Revenue | Stripe, Polar, Dodo Payments and Creem, connected with a key. Past sales import; renewals and refunds follow by webhook. | Revenue from events that carry a revenue value and currency, sent from the tracker or the API. No payment-provider connection listed. | | Cookies | Your choice per site: first-party cookies, cookieless, or cookieless until consent. | No cookies, no consent banner. | | Source code | A ready-built bundle, not open source. | Open source (MIT). | | Updates | Self-hosted: every future update, one command (`npx databull@latest update`). Hosted (beta): we update it for you. | Self-hosted: you update your own deployment. | #### What DataBull adds - **Stripe, Polar and Dodo connected** with a key, past sales imported, renewals and refunds by webhook. - **Attribution models**: last non-direct (default), first touch or last touch, per website. [How it works](https://databull.app/revenue-attribution). - **Telegram alerts** for every sale, traffic spikes and a daily digest. - **Serverless running costs**: Cloudflare's free plan fits most sites. [Self-hosting on Cloudflare](https://databull.app/self-hosted-analytics-cloudflare). #### When Umami is the better choice - You want open-source code you can read, change and host anywhere. - You already run servers and PostgreSQL, and free matters most. - You want a hosted free tier for one small site. - You need session replays or heatmaps (Umami Cloud Business). Competitor details as of October 2026, from their public pages: [umami.is pricing](https://umami.is/pricing), [revenue docs](https://docs.umami.is/docs/revenue), [GitHub](https://github.com/umami-software/umami). Prices and plans change; check the source before you decide. Spotted something out of date? [Tell us](mailto:adgan.business@gmail.com) and we'll fix it. #### FAQ ##### Does DataBull need a server or database? No. It runs as a Cloudflare Worker with a D1 database in your own account, and the installer sets both up. Or skip that entirely with DataBull Hosted (beta), from $9 a month. ##### Can Umami track Stripe payments? Umami records revenue you send as event data (a revenue value and currency); its docs list no payment-provider connection. DataBull connects Stripe, Polar, Dodo Payments and Creem directly. ##### What does DataBull cost to run? Cloudflare's free plan covers most sites, up to roughly 20,000 pageviews a day. Above that, Workers Paid is $5/month, paid to Cloudflare. --- ### How DataBull compares Source: https://databull.app/alternatives > Honest comparisons with the analytics tools people usually weigh up. Each page says when the other tool is the better choice. #### At a glance | | Pricing | Hosting | Payment connections | | --- | --- | --- | --- | | [DataBull](https://databull.app/) | One-time $49 self-hosted, or hosted from $9/month (beta) | Your Cloudflare account, or hosted by us (beta) | Stripe, Polar, Dodo, Creem | | [DataFast](https://databull.app/alternatives/datafast) | From $9/month | Hosted | Stripe, LemonSqueezy, Polar, Shopify and more | | [Plausible](https://databull.app/alternatives/plausible) | From $9/month | Hosted (EU) or self-hosted CE | None; revenue via events (Business plan) | | [Fathom](https://databull.app/alternatives/fathom) | From $15/month | Hosted | None; revenue via events | | [Google Analytics](https://databull.app/alternatives/google-analytics) | Free | Hosted by Google | None; ecommerce events via gtag/GTM | | [Umami](https://databull.app/alternatives/umami) | Free self-hosted; cloud from free | Self-hosted or cloud | None; revenue via events | Competitor details as of October 2026, from each vendor's public pages; sources are listed on each comparison. #### Comparisons - [DataBull vs DataFast](https://databull.app/alternatives/datafast): Same revenue-first idea, on your own Cloudflare, paid once. - [DataBull vs Plausible](https://databull.app/alternatives/plausible): Payments connected directly, not only traffic. - [DataBull vs Fathom](https://databull.app/alternatives/fathom): Sales tied to sources, without a monthly plan. - [DataBull vs Google Analytics](https://databull.app/alternatives/google-analytics): Revenue by source without wiring ecommerce events. - [DataBull vs Umami](https://databull.app/alternatives/umami): Self-hosted without a server, with payments connected. --- ### See which traffic source made each Stripe sale Source: https://databull.app/stripe-revenue-analytics > Stripe tells you who paid. DataBull tells you what brought them: the tweet, the search, the newsletter or the Hacker News thread. #### Connect Stripe in a minute 1. In your website's setup, choose Stripe and follow the link to create a **restricted key**. The permissions are pre-filled: read access to Checkout Sessions, Charges, PaymentIntents, Invoices, Subscriptions, Products, Prices and Customers, plus webhook endpoints. 2. Paste the key and leave "Instant updates" on. DataBull creates the webhook. 3. Choose every payment in the account, or only some products. Past payments import straight away. New ones arrive by webhook within seconds. #### How each sale finds its visit - **Payment Links** (`buy.stripe.com`): the script adds `client_reference_id` to every link on your site. Nothing to do. - **Checkout Sessions**: pass the visitor and session ids as metadata, two fields. [Copy the code](https://databull.app/docs/revenue). - **Success page**: when the buyer returns with `session_id` in the address, the script links it as a backup. #### Subscriptions, renewals and refunds The first invoice is credited to the checkout's visitor and every renewal inherits it, so a source keeps earning credit for as long as the customer pays. Refunds come off the source they came from. The Revenue page groups customers by first source and adds up their lifetime value. #### What you see - Revenue, sales, average order and revenue per visitor, by referrer, campaign, page and country. - A Telegram message for every sale with its source, location and the buyer's path. - Revenue in USD, excluding tax; other currencies are converted at the day's rate. Also on Polar, Dodo Payments or Creem? Each website connects its own provider. See [Polar analytics](https://databull.app/polar-analytics), [Dodo Payments analytics](https://databull.app/dodo-payments-analytics) and [Creem analytics](https://databull.app/creem-analytics). #### FAQ ##### Do I need to change my Stripe checkout code? Not for Payment Links: the script tags them. Checkout Sessions created on your server need two metadata fields, the visitor id and session id. ##### Does it import my past Stripe payments? Yes. Past payments import when you connect; new ones arrive by webhook. ##### What Stripe permissions does DataBull need? A restricted key with read access to Checkout Sessions, Charges, PaymentIntents, Invoices, Subscriptions, Products, Prices and Customers, plus write access to Webhook Endpoints. The link pre-fills them. --- ### Revenue analytics for Dodo Payments Source: https://databull.app/dodo-payments-analytics > Dodo handles the checkout and the tax. DataBull shows which post, search or referrer sent the buyer, sale by sale. #### One key for the whole business 1. In Dodo, go to Developer → API keys, create a key and paste it into DataBull (Live or Test). 2. Pick this website's products. Other websites can use the same connection with different products. Past sales import straight away, and new payments, renewals and refunds follow. #### Links and checkouts - **Payment links** (`/buy/pdt_…`) are tagged by the script automatically. - **Checkout sessions**: pass the visitor and session ids as `metadata`, and set `return_url` to a page on your site. [See the docs](https://databull.app/docs/revenue). #### Not an afterthought DataBull itself is sold through Dodo Payments, so Dodo gets the same first-class support as Stripe and Polar. #### What you see - Revenue and sales by channel, referrer, campaign, page and country. - Lifetime value by the source that first brought each customer. - A Telegram ping for every sale and refund, with the source. Using Stripe, Polar or Creem on another site? See [Stripe revenue analytics](https://databull.app/stripe-revenue-analytics), [Polar analytics](https://databull.app/polar-analytics) and [Creem analytics](https://databull.app/creem-analytics). #### FAQ ##### Which Dodo Payments checkouts work? Payment links are tagged automatically. Checkout sessions work when you pass the visitor and session ids as metadata. ##### Can one Dodo account feed several websites? Yes. One API key covers the business; each website picks its own products. ##### Does it work in Dodo test mode? Yes. Paste a Live or a Test key. --- ### Know which traffic source made each Polar sale Source: https://databull.app/polar-analytics > Polar sells your product. DataBull shows which post, search or referrer brought the buyer, renewals and refunds included. #### Connect Polar 1. In Polar: Settings → Developers → New token, no expiration, with read scopes for organizations, products, orders, subscriptions, customers, refunds and checkouts, plus webhooks read and write. [The exact scopes are in the docs](https://databull.app/docs/revenue). 2. Paste the token, choose Production or Sandbox, and keep "Instant updates" on. 3. Choose every payment, or specific products. #### How each order finds its visit - **Checkout links** (`buy.polar.sh`): the script adds `reference_id`, and Polar copies it onto the order. Nothing to do. - **Checkout API**: pass the visitor and session ids as `metadata`. - **Success URL**: `?checkout_id={CHECKOUT_ID}` on your thank-you page links it as a backup. #### What you see - Every order, renewal and refund credited to the visit that produced it. - Lifetime value by first source, so you know which channels bring subscribers who stay. - Telegram pings for each sale with the source, plus traffic spike alerts. Selling with Stripe, Dodo or Creem elsewhere? Each website connects its own provider: [Stripe](https://databull.app/stripe-revenue-analytics), [Dodo Payments](https://databull.app/dodo-payments-analytics), [Creem](https://databull.app/creem-analytics). #### FAQ ##### Do Polar checkout links need any code? No. The script adds reference_id to every buy.polar.sh link, and Polar copies it onto the order. ##### Does DataBull work with Polar Sandbox? Yes. Choose Production or Sandbox when you paste the token. ##### Are Polar subscriptions supported? Yes. Orders, subscription renewals and refunds are all matched to the source. --- ### Know which traffic source made each Creem sale Source: https://databull.app/creem-analytics > Creem sells your product. DataBull shows which post, search or referrer brought the buyer, renewals and refunds included. #### Connect Creem 1. In Creem: Developers → API keys, create a key with full access. Use a test-mode key for your test store. 2. Paste it and keep "Instant updates" on: DataBull creates the webhook in Creem for you. 3. Choose every payment in the store, or specific products. #### How each sale finds its visit - **Payment links** (`creem.io/payment/prod_…`, or your own checkout domain): the script adds the visitor as checkout metadata. Nothing to do. - **Checkout API**: pass the visitor and session ids as `metadata`. - **Success page**: Creem sends the buyer back with `?order_id=…`, and the script links the order as a backup. - **Subscriptions**: Creem keeps the checkout metadata on the subscription, so every renewal is credited to the same visit. #### What you see - Every sale, renewal and refund credited to the visit that produced it, net of tax. - Lifetime value by first source, so you know which channels bring subscribers who stay. - Telegram pings for each sale with the source, plus traffic spike alerts. Selling with Stripe, Polar or Dodo elsewhere? Each website connects its own provider: [Stripe](https://databull.app/stripe-revenue-analytics), [Polar](https://databull.app/polar-analytics), [Dodo Payments](https://databull.app/dodo-payments-analytics). #### FAQ ##### Do Creem payment links need any code? No. The script adds the visitor to every creem.io payment link on your site (and to links on your own checkout domain) as checkout metadata. ##### Does DataBull work with Creem test mode? Yes. Paste a test-mode key (creem_test_…) and it connects your test store. ##### Are Creem subscriptions supported? Yes. The first payment, every renewal and refunds are matched to the source. Creem keeps the checkout metadata on the subscription. ##### Does DataFast support Creem? Not as of October 2026: DataFast lists Stripe, LemonSqueezy, Polar and Shopify. DataBull connects to Creem directly. --- ### Self-hosted analytics on your own Cloudflare Source: https://databull.app/self-hosted-analytics-cloudflare > No VPS, no Docker, no database to patch. One command deploys DataBull into your Cloudflare account, and your data stays there. #### What gets installed - **A Worker** serves the dashboard, the API and the tracking script. - **A D1 database** keeps your visitors, sales and goals. - **A cron job** syncs payments, sends alerts and runs cleanup. All of it in your account. Visitors, sales and keys never touch our servers. #### Install in about three minutes ``` npx databull@latest ``` You need Node.js 22 or newer and a Cloudflare account (the free plan is fine). Paste your license key, click Allow when Cloudflare asks, and your dashboard opens. Run it again any time: it picks up where it left off. [Every step](https://databull.app/docs/install). #### What it costs to run Cloudflare bills you directly, not us. The free plan comfortably handles sites up to roughly 20,000 pageviews a day across all your websites. Past that, Workers Paid is $5/month. [What fits on the free plan](https://databull.app/docs/free-plan). #### Yours to keep - **Updates**: free for life, one command, data and settings stay put. [Updating](https://databull.app/docs/updating). - **Your domain**: serve the dashboard and script from a subdomain like analytics.yourapp.com. [Custom domain](https://databull.app/docs/custom-domain). - **Your retention**: keep raw traffic 30 days or forever. Payments are never deleted automatically. [Data retention](https://databull.app/docs/data-retention). - **Your exit**: remove it from your account whenever you like. [Uninstall](https://databull.app/docs/uninstall). #### Rather not run it yourself? [DataBull Hosted](https://databull.app/hosted) (beta) is the same app, run by us at yourapp.databull.app: no Cloudflare account, nothing to install or update. $9/month for 50,000 events or $19/month for 250,000, unlimited websites on both, cancel anytime. #### FAQ ##### Do I need a server? No. DataBull runs as a Cloudflare Worker with a D1 database in your own account. ##### Is Cloudflare's free plan enough? For most sites, yes: roughly 20,000 pageviews a day across all your websites. Above that, Workers Paid is $5/month, paid to Cloudflare. ##### How do updates work? Run npx databull@latest again. Updates are free for life and your data stays where it is. ##### Is there a hosted version? Yes, in beta: DataBull Hosted runs the same app for you at yourapp.databull.app, from $9 a month. No Cloudflare account needed. --- ### Revenue attribution, without the guesswork Source: https://databull.app/revenue-attribution > Pageviews don't pay rent. Revenue attribution ties each sale to the visit that produced it, so you know which work is worth repeating. #### How a sale gets its source The tracking script gives each visitor a first-party id on your domain. When that id reaches the payment, DataBull knows which visit, source and campaign produced the sale. It gets there in one of three ways: 1. **Payment links** are tagged automatically (Stripe, Polar, Dodo). 2. **Server-created checkouts** pass the visitor and session ids as metadata. 3. **Success pages**: when the buyer lands back with the provider's checkout id, the script links it. #### Which visit gets the credit Set per website: - **Last non-direct** (default): the most recent visit with a real source. - **First touch**: the visitor's first visit ever. - **Last touch**: the last visit before buying. Subscriptions keep their source: renewals inherit the visitor of the first payment, and refunds come off the same source. #### Sources you can read - **Channels** from referrer, UTM tags or ad click ids: search, social, AI (ChatGPT, Claude, Perplexity), referral, email, paid, affiliate. - **In-app browsers** that hide the referrer (Instagram, TikTok, Reddit, Telegram and more) are credited to the app. - **Direct, split** into typed or bookmark, shared link and checkout return. A checkout return never takes credit from an earlier visit. #### Lifetime value by first source Customers are grouped by the source of their first attributed payment, with every renewal, upgrade and repeat purchase added since. Some channels send one-off buyers; others send customers who stay. #### Privacy and attribution First-party cookies keep a sale linked to a visit weeks earlier. Cookieless mode stores nothing in the browser and links sales to visits from the same day. Cookieless-until-consent switches when your banner says so. Pick per website. [Details in the docs](https://databull.app/docs/attribution). #### FAQ ##### What is revenue attribution? Crediting each sale to the visit, and so the traffic source, that produced it. It shows which posts, searches and referrers bring paying customers, not just visitors. ##### Which attribution model does DataBull use? Last non-direct by default. First touch and last touch are available per website. ##### Does attribution work without cookies? Yes, with a limit: in cookieless mode, sales link to visits from the same day only. --- ### Ask your AI which post made you money Source: https://databull.app/analytics-mcp-server > DataBull has a built-in MCP server. Connect Claude Code, Cursor, Codex, Windsurf or VS Code in one command, and your agent answers from your own traffic and Stripe, Polar or Dodo revenue, live. #### One command, then just ask ``` npx databull@latest mcp ``` It creates a read-only key on your own DataBull, checks the connection, adds DataBull to Claude Code if it's installed, and prints the exact config for Cursor, Codex, Windsurf, VS Code and any other MCP client. Prefer clicking? Settings → API keys & AI agents shows the same snippets, filled in. Step by step: [DataBull in Claude Code](https://databull.app/mcp/claude-code) · [DataBull in Cursor](https://databull.app/mcp/cursor) · [What to ask Claude about your analytics](https://databull.app/ask-claude-about-your-analytics). #### Questions it answers - **"Which post made me the most money this month?"** Referrers, campaigns and pages ranked by revenue, not just visits. - **"What changed compared with last week?"** Revenue, visitors and conversion against the previous period, with the sources behind the change. - **"Walk me through my latest buyer's journey."** Where they came from, what they read, when they paid. - **"Which channel brings customers worth keeping?"** Lifetime value by first source, renewals included. - **"Who's on the site right now?"** Live visitors with page, source and location. #### Fourteen read-only tools | Tool | What the agent gets | | --- | --- | | list_sites | Every site: today, online now, 7 and 30 days. | | get_overview | Visitors, revenue, sales, conversion and revenue per visitor, against the previous period, with a time series and traffic spikes. | | get_breakdown | Any dimension ranked by visitors or revenue: referrer, channel, campaign, page, landing page, country, device, goal. | | compare_periods | What changed, with the biggest gainers and losers. | | list_sales | Sales with the source each one is credited to. | | list_visitors / get_visitor | Who visited, and one person's whole journey. | | get_realtime, get_goals, get_funnels, get_customer_value | Live visitors, goals, funnel steps, lifetime value by source. | | get_peak_hours, get_engagement, get_purchase_paths | When visitors come and buyers pay, how far each page is read, and how customers got to their first purchase. | #### Your data stays yours The MCP server runs inside **your own DataBull**: on your Cloudflare account when self-hosted, or in your own dashboard on ours with Hosted (beta). The agent talks to your dashboard directly. Keys are read-only, stored only as a hash, and revocable any time. Customer names and emails stay hidden unless you create a key that includes them. #### Not using an agent? Same data in the terminal ``` npx databull@latest sources --by revenue npx databull@latest compare npx databull@latest sales -n 10 --json ``` Every command takes `--json` for scripts, and works on any machine with `DATABULL_URL` and `DATABULL_API_KEY`. Details in the [AI agents, CLI & API docs](https://databull.app/docs/mcp). #### FAQ ##### Which AI clients work? Any client that speaks MCP over Streamable HTTP with a header: Claude Code, Cursor, Codex, Windsurf, VS Code (Copilot agent mode) and others. `npx databull@latest mcp` prints the config for each. ##### Can the agent change anything? No. Every tool is read-only, and keys can only read analytics. ##### Does my data go through DataBull's servers? Self-hosted, no: the MCP server is part of your own install on your Cloudflare account, and your agent connects to it directly. With DataBull Hosted (beta), your dashboard runs on our Cloudflare account and the agent connects to it the same way. ##### Does it work on Cloudflare's free plan? Yes. It needs no extra Cloudflare services: it's part of the same Worker. --- ### Ask Claude about your traffic and revenue Source: https://databull.app/ask-claude-about-your-analytics > Connect Claude to your DataBull and ask in plain English: which post made money this month, why sales dipped, how your latest customer found you. Claude reads your own numbers, live, through a read-only key. **Short answer:** Yes. DataBull has a built-in MCP server, so Claude Code (and any other MCP client) can read your traffic, sales and revenue by source with a read-only key. Run `npx databull@latest mcp`, then ask things like "which referrer made me the most money this month?" Claude answers from your own DataBull data, live. #### Questions Claude can answer, and how Claude doesn't guess from screenshots. It calls DataBull's tools, gets the numbers as data, and explains them. Each question below maps to the tool Claude reaches for. | You ask | Claude uses | What comes back | | --- | --- | --- | | "Which referrer made me the most money this month?" | `get_breakdown` | Referrers ranked by revenue, with visitors, sales and conversion for each. | | "Compare this week with last week. What changed?" | `compare_periods` | Visitors, revenue and conversion against the week before, and the sources that gained or lost the most. | | "Show my last 10 sales and where each buyer came from." | `list_sales` | Each sale with amount, product and the channel, referrer and campaign it is credited to. | | "Walk me through my latest customer's journey." | `get_visitor` | Every visit, source and page in order, up to the payment. | | "Which channel brings customers who keep paying?" | `get_customer_value` | Lifetime value by the source that first brought each customer, renewals included. | | "How long do people take to buy?" | `get_purchase_paths` | Median days and visits before the first purchase, and the pages seen before paying. | | "When should I post?" | `get_peak_hours` | When visitors come and when buyers pay, by weekday and hour in your time zone. | | "Which pages do buyers actually read?" | `get_engagement` | Reading time and scroll depth per page, buyers against everyone else. | There are 14 tools in all, every one read-only. The [MCP server page](https://databull.app/analytics-mcp-server) lists them. #### What an answer looks like An example on sample data (not a real site), for "which post made me money this month?": > **Example, sample data.** "Most of this month's revenue came from x.com: $1,240 from 26 sales, at 3.1% conversion. news.ycombinator.com sent more visitors but converted at 0.9%. Google is smaller but steady: 11 sales, most of them landing on /pricing. If you post again, the busiest buying hours are Tuesday and Wednesday, 3 to 6 pm your time." Claude can follow up on its own: open the buyer journeys behind the top referrer, or compare the same week a month ago. It never sees more than the key allows. #### Set it up in about a minute 1. **Run one command** ``` npx databull@latest mcp ``` On the computer you installed DataBull from, it creates a read-only key, checks the connection, and offers to add DataBull to Claude Code for all your projects. 2. **Open Claude Code** Run `/mcp` and you should see **databull** connected. Details in the [Claude Code guide](https://databull.app/mcp/claude-code). 3. **Ask** Start with "list my sites", then ask about any of them by domain. On [DataBull Hosted](https://databull.app/hosted), or from another computer, create a key in your dashboard under **Settings → API keys & AI agents**. It shows the same command and config, filled in. #### Claude Code, Claude Desktop and claude.ai **Claude Code** is the tested path: one command, header authentication, works on every plan. **Claude Desktop and claude.ai** add remote servers as custom connectors. DataBull keys are a fixed bearer token, not an OAuth sign-in, so a connector needs the **Request headers** option, which Anthropic lists as a beta for a limited set of organizations. If your *Add custom connector* dialog shows it: enter your `/mcp` URL, choose *No sign-in*, and add an `authorization` header with the value `Bearer dbk_…`. If the dialog has no Request headers section, claude.ai can't connect to DataBull yet; use Claude Code, or another client such as [Cursor](https://databull.app/mcp/cursor). #### Safe by default - **Read-only.** No tool can change a setting, a site or a sale. - **Names and emails stay hidden** unless you create a key with *Include customer names and emails*. - **Revocable.** Keys are stored only as a hash. Revoke one under Settings → API keys, and that agent loses access at once. - **Direct.** Claude talks to your own DataBull: on your Cloudflare account when self-hosted, or your own dashboard on ours with Hosted. #### FAQ ##### Does Claude see my customers' names and emails? Not by default. Keys hide customer names and emails unless you create one with *Include customer names and emails*. Sales still show amount, product and source. ##### Can I use Claude on the free claude.ai plan? Only through a custom connector with request headers, which Anthropic is rolling out as a beta. Claude Code works today with a plain header. See [the Claude Code setup](https://databull.app/mcp/claude-code). ##### Are the numbers the same as my dashboard? Yes. The dashboard, the CLI and the MCP tools read the same data with the same attribution model, so Claude and the dashboard agree. ##### What if I have several websites? Ask "list my sites" first. Every tool takes a site by its domain, so you can ask about each one, or compare them, in one conversation. --- ### Your analytics, inside Claude Code Source: https://databull.app/mcp/claude-code > Add DataBull to Claude Code once and ask about traffic, sales and buyer journeys from any project. One command sets it up; the read-only key never leaves your machine and your dashboard. **Short answer:** Run `npx databull@latest mcp`: it creates a read-only DataBull key and adds DataBull to Claude Code for all your projects. By hand, it's `claude mcp add --transport http --scope user databull https://YOUR-DATABULL-URL/mcp --header "Authorization: Bearer dbk_…"`. Then run `/mcp` in Claude Code to check it's connected, and ask. #### The one-command setup ``` npx databull@latest mcp ``` Here's what it does, in order: 1. Updates your DataBull if it's too old for agents. 2. Creates a read-only key named after your computer (or reuses the one it made before, if it still works). 3. Checks the connection by listing the tools. 4. If Claude Code is installed, asks before adding DataBull for **all your projects**, replacing an older `databull` entry if there is one. 5. Prints the config for Cursor, VS Code, Codex and Windsurf too, and a few questions to try. Add `--client claude` to see only the Claude Code part, or `--yes` to skip the question. #### By hand This is the exact command the CLI runs. Get a key from your dashboard under **Settings → API keys & AI agents** (that's also the way on [DataBull Hosted](https://databull.app/hosted)): ``` claude mcp add --transport http --scope user databull https://YOUR-DATABULL-URL/mcp \ --header "Authorization: Bearer dbk_YOUR_KEY" ``` Then open Claude Code and run `/mcp`: **databull** should show as connected. #### Which scope to pick | Scope | Where it applies | Use it when | | --- | --- | --- | | `user` | Every project on your computer, private to you | You want your numbers everywhere. The CLI uses this. | | `local` (Claude Code's default) | Only the project you ran it in, private to you | You only want analytics in your product's repo. | | `project` | Saved in `.mcp.json` in the repo, shared with your team | Rarely: the file would hold your key, so keep it out of git. | #### 10 prompts that work 1. "List my sites with today's visitors and revenue." 2. "Which referrer made me the most money this month?" 3. "Compare this week with last week. What changed, and why?" 4. "Show my last 10 sales and where each buyer came from." 5. "Walk me through the journey of my latest customer." 6. "Which landing page converts best for visitors from Google?" 7. "How much did ChatGPT and Perplexity send this month, and did any of it buy?" 8. "Which campaign brought customers who renewed?" 9. "When do my buyers pay? Suggest a time to post tomorrow." 10. "Which pages do buyers read longer than everyone else?" Name the site by its domain when you have more than one, and add a period ("last 30 days", "since October 1") when it matters. Every tool understands today, 7d, 30d, month to date, last month, 12 months and custom dates. #### Use it while you build Claude Code already sits in your product's repo, so analytics questions fit into the work: check which pages convert before rewriting the pricing page, or ask after a launch which post sent the buyers. Prefer plain commands? The same numbers are in the terminal: `npx databull@latest sources --by revenue`, with `--json` for scripts. #### If it doesn't connect - **401 "Missing API key" or "Unknown API key"**: the header is missing or the key belongs to another DataBull. Check that the value is `Bearer dbk_…`, with the space. - **401 "This API key was revoked"**: create a new key under Settings → API keys, or run `npx databull@latest mcp` again. - **Can't reach the server**: the URL must be your DataBull address plus `/mcp`, over https. - **"already exists"**: remove the old entry with `claude mcp remove databull --scope user`, then add it again. The CLI does this for you. Keys are read-only, stored only as a hash, and hide customer names and emails unless you create one that includes them. #### FAQ ##### Do I need a paid Claude plan? You need Claude Code, which runs on the Claude plans and API accounts that include it. DataBull adds nothing on top: the MCP server is part of your own DataBull. ##### Can Claude Code change anything in DataBull? No. All 14 tools are read-only, and the key can only read analytics. ##### Where is the key stored? In Claude Code's own config on your computer (`~/.claude.json` for the user and local scopes). DataBull keeps only a hash of it. ##### How do I remove it? Run `claude mcp remove databull --scope user`, then revoke the key under Settings → API keys or with `npx databull@latest api-key revoke dbk_…`. --- ### Ask Cursor which page converts Source: https://databull.app/mcp/cursor > Add DataBull to Cursor and the agent can read your traffic, sales and buyer journeys while you work on the product. One entry in mcp.json, a read-only key, nothing to host. **Short answer:** Add DataBull to `~/.cursor/mcp.json` (or `.cursor/mcp.json` in one project) as a remote server: the URL is your DataBull address plus `/mcp`, with the header `Authorization: Bearer dbk_…`. `npx databull@latest mcp --client cursor` creates the read-only key and prints the block, filled in. #### Get the config, filled in ``` npx databull@latest mcp --client cursor ``` It creates a read-only key, checks it works and prints the block below with your URL and key. On [DataBull Hosted](https://databull.app/hosted), or without the CLI, create a key under **Settings → API keys & AI agents**: the dashboard shows the same block. #### The config Put it in `~/.cursor/mcp.json` to have DataBull in every project, or in `.cursor/mcp.json` in one project only: ``` { "mcpServers": { "databull": { "url": "https://YOUR-DATABULL-URL/mcp", "headers": { "Authorization": "Bearer dbk_YOUR_KEY" } } } } ``` If the file already has other servers, add `databull` inside the existing `mcpServers` object. A project file holds your key, so add `.cursor/mcp.json` to `.gitignore`. #### Turn it on Open Cursor's MCP settings (under **Customize** in the sidebar in current versions) and check that **databull** is listed and switched on. By default Cursor asks before it runs a tool; every DataBull tool only reads, so allowing them is low-risk. #### What the agent can read DataBull gives Cursor 14 read-only tools. The ones you'll use most while building: | Tool | Good for | | --- | --- | | `get_breakdown` | Pages, landing pages, referrers or campaigns ranked by revenue or conversion. | | `get_engagement` | Reading time and scroll depth per page, buyers against everyone else. | | `get_funnels` | Your saved funnels, step by step, with drop-off and the revenue of visitors who reached each step. | | `compare_periods` | Before and after a change, with the sources that moved most. | | `list_sales` / `get_visitor` | Recent sales with their source, and one buyer's full path to paying. | The full list is on the [MCP server page](https://databull.app/analytics-mcp-server). Every tool takes a site by its domain and a period, and the answers use the same attribution model as your dashboard. #### Prompts to try - "Which referrer made me the most money this month?" - "Which landing page converts best, and how far do buyers scroll on it?" - "Show my last 5 sales and the page each buyer landed on." - "Compare this week with last week for example.com." - "How many visits does it take people to buy?" #### Watch revenue while you ship Cursor is where you change the product, so ask before and after you change it: 1. **Before you edit a page** "How does /pricing convert over the last 30 days, and what do buyers read before they pay?" gives you a baseline from `get_breakdown` and `get_engagement`. 2. **On launch day** "Who's on the site right now, and where from?" (`get_realtime`), and "which source sent today's sales?" (`list_sales`). 3. **A week later** "Compare the 7 days since the change with the 7 days before" (`compare_periods`). You see whether the new page made more money, not just more visits. Leave a note on the dashboard chart when you ship, so the change shows up next to the numbers. #### If it doesn't connect - **Server shows an error or red dot**: check the URL ends in `/mcp` and starts with https. - **401 errors**: the header value must be `Bearer dbk_…` with the space. "Unknown API key" means the key belongs to another DataBull; "revoked" means make a new one. - **No tools appear**: check the JSON is valid (a missing comma is the usual cause), then restart Cursor. #### FAQ ##### Does it work in Cursor's free plan? MCP is a Cursor feature, not a DataBull one. If your Cursor can use MCP servers, it can use DataBull: it's a standard Streamable HTTP server with a header. ##### Global or project config? Global (`~/.cursor/mcp.json`) if you want your numbers in every project. Project (`.cursor/mcp.json`) if only one repo should see them; keep that file out of git. ##### What about VS Code, Codex and Windsurf? `npx databull@latest mcp` prints the config for each. VS Code uses `servers` with `"type": "http"`, Windsurf uses `serverUrl`, Codex uses `[mcp_servers.databull]` in `~/.codex/config.toml`. See the [docs](https://databull.app/docs/mcp). --- ### Every sale in Telegram, with where it came from Source: https://databull.app/stripe-sale-notifications-telegram > A Telegram message the moment someone pays: the amount, the product, and the tweet, search or campaign that brought them. Refunds, traffic spikes and a daily digest too, for Stripe, Polar, Dodo Payments and Creem. **Short answer:** DataBull sends a Telegram message for every Stripe, Polar, Dodo Payments or Creem sale, naming the source that brought the buyer (referrer, channel, campaign), their location and their journey. Create a bot with @BotFather, paste its token in DataBull under Account → Telegram, message the bot, and pick the chat. Refunds, spike alerts and a daily digest are switches per website. #### What a sale message says Most "Stripe to Telegram" setups tell you that someone paid. DataBull tells you why: it knows the visit behind the payment. - **The sale:** 💰 new sale or 🔁 renewal, the website, the amount, the product, and the buyer's own currency when it differs. - **The source:** the referrer (x.com, google.com, chatgpt.com…), its channel and the campaign, if any. - **The buyer:** city and country, device, system and browser. - **The journey:** when they first visited, how many sessions and pageviews, and the page they landed on. - A masked email (ah••@example.com) and a link to the buyer's full journey in your dashboard. When a sale can only be matched by checkout timing, the message says it's an estimate. When it can't be matched at all, it says the source is unknown, instead of guessing. #### Set it up in two minutes 1. **Make a bot** Message [@BotFather](https://t.me/BotFather) in Telegram, send `/newbot`, pick a name, and copy the token it gives you. 2. **Paste the token** In DataBull, go to **Account → Telegram** and paste it. One bot covers all your websites. 3. **Say hello** Send your new bot any message, or add it to a group. DataBull finds the chat; pick it and send a test message. 4. **Choose what you get** Per website: sale and refund messages, spike alerts, and the daily digest with the hour you want it. Messages can go to up to 5 chats, say you and a co-founder. For a whole team, add the bot to a Telegram group. #### More than sales | Alert | When | What it says | | --- | --- | --- | | ↩️ Refund | A sale is refunded, fully or partly | Amount refunded, the original sale and its source. | | 🚀 Traffic spike | Checked every 5 minutes: a source sends at least 10 visitors in an hour and 4× its usual (or the whole site 3×) | How many visitors from where, the page they land on and how many are online. Each source alerts at most once every 6 hours. | | 📊 Daily digest | Once a day, at the hour you choose | Yesterday's visitors and revenue against the day before, and the top 3 sources. | Spikes need two days of history first, so a brand-new site stays quiet. A spike also leaves a note on your dashboard chart. When you connect a payment provider and its history imports, old sales don't flood your chat: only payments from the last few hours send a message. #### Why the source changes what you do A sale ping with its source is something you can act on right away. If three sales in an hour say x.com and the same campaign, the post is working: reply to the comments, pin it, post a follow-up while people are still reading. If a sale comes from a Google search you never targeted, that page deserves more work. And if a spike alert says Hacker News is sending 9× the usual traffic to a blog post, you know where to show up before the thread goes quiet. #### Other ways to get Stripe alerts - **Stripe's Dashboard app** can push a notification for new payments, disputes and a daily summary. It knows the payment, not the visit, so it can't name the post that sold. - **Zapier or Make** can forward a Stripe event to Telegram. Same limit: the message holds what Stripe knows (amount, customer, product), plus an automation account and a workflow to keep running. - **DataBull** sends the message from the analytics side, so the source, campaign and journey come with it, for [Stripe](https://databull.app/stripe-revenue-analytics), [Polar](https://databull.app/polar-analytics), [Dodo Payments](https://databull.app/dodo-payments-analytics) and [Creem](https://databull.app/creem-analytics). Want to know how the source gets attached to a payment? See [revenue attribution](https://databull.app/revenue-attribution) and the guide to tracking Stripe revenue by traffic source. #### FAQ ##### Do I need to code a Telegram bot? No. @BotFather creates the bot in a chat, and you only paste its token into DataBull. DataBull sends the messages from your own install. ##### Do renewals send a message too? Yes, marked 🔁 Renewal, credited to the source of the first payment. Refunds get their own ↩️ message. ##### Can I turn alerts off for one website? Yes. Sales, spikes and the digest are separate switches per website, and the digest hour is per website too. ##### Does it show the customer's email? Masked: the first two letters and the domain. The full details stay in your dashboard. --- ### Getting started Source: https://databull.app/docs > Add your website, install one script, connect payments. Most people finish in under five minutes. > Self-hosted and not installed yet? One command puts DataBull on your own Cloudflare account: `npx databull@latest`. See [Install DataBull](https://databull.app/docs/install), then come back here. On [DataBull Hosted](https://databull.app/docs/hosted) (beta)? Your dashboard is ready: start at step 1. #### 1. Add your website Click **Add website** and type your domain. DataBull opens your home page to fill in the name and detect your platform (Next.js, Framer, Webflow, WordPress, Shopify and more), so the next step shows the right guide first. Subdomains are tracked automatically. #### 2. Install the script Paste the tag shown in your setup into the `` of every page: ``` ``` Single-page apps need nothing extra: client-side route changes are tracked by the script. The setup page watches for your first visit and confirms it live, or tells you exactly what's wrong (script missing, blocked by a Content-Security-Policy, wrong website id). > Using Cursor, Claude Code or Copilot? Use **Copy AI prompt** in the setup. It tells the editor exactly where the tag goes and how to pass checkout metadata. #### 3. Connect payments Pick where this website takes payments: Stripe, Polar, Dodo Payments or Creem. Each website connects on its own, so different sites can use different providers or accounts. Past sales are imported straight away. See [Revenue attribution](https://databull.app/docs/revenue). #### 4. Turn on alerts Connect a Telegram bot once and get a message for every sale (with its source), refunds, traffic spikes and an optional daily digest. See [Alerts](https://databull.app/docs/alerts). Coming from another tool? See [how DataBull compares](https://databull.app/alternatives) with DataFast, Plausible, Fathom, Google Analytics and Umami. --- ### Tracking script Source: https://databull.app/docs/script > Where to paste the script on each platform. Every guide uses the same tag from your website's setup page. Replace the placeholders with the values shown there. ##### Plain HTML Paste the tag inside `` on every page. ##### Next.js Add it to `app/layout.tsx` (App Router) or `pages/_document.tsx` (Pages Router): ``` import Script from 'next/script';