# DataPenny > DataPenny is open-source, revenue-first web analytics. It shows which traffic source (a post, a search, a referrer, a campaign, an AI assistant) brought each paying customer, for Stripe, Dodo Payments, Razorpay, Lemon Squeezy, Polar, Paddle and Creem. It runs on your own Cloudflare account as a Worker and a D1 database. Website: https://datapenny.pages.dev Pricing: https://datapenny.pages.dev/pricing Live demo: https://datapenny.pages.dev/demo/?site=site_lumenforms&period=30d Docs: https://datapenny.pages.dev/docs ## Key facts - License: AGPL-3.0. The repository opens at launch. - Self-hosted: free, unlimited websites and events, on your own Cloudflare account. Cloudflare's free plan fits most small sites, roughly 25,000 pageviews a day. Busier sites pay Cloudflare $5 a month. - Cloud: not available yet. Planned with a small free tier and paid tiers of $9, $19 and $49 a month by events. The waitlist gets early access and a lifetime deal. - Payment providers connect natively: Stripe, Dodo Payments, Razorpay, Lemon Squeezy, Polar, Paddle, Creem. Anything else can use the Payments API. - Past sales import, last 12 months: Stripe, Dodo Payments, Razorpay, Lemon Squeezy, Polar. - Attribution models per site: last non-direct (default), first touch, last touch. - Reports: revenue by source, peak hours, scroll depth and reading time, path to purchase, lifetime value by first source, funnels, goals, chart notes, a live 3D globe with OpenFreeMap tiles. - Alerts: Telegram, up to five chats, for sales, refunds, traffic spikes and a daily digest. - AI agents: a built-in read-only MCP server at /mcp, a CLI with JSON output, and read-only API keys. - Privacy: per site, first-party cookies, cookieless (daily-rotating salted hash), or cookieless until consent. - Tracking script: about 3 KB gzipped. DataFast goal attributes, window.datafast() and visitor metadata work unchanged. ## What DataPenny doesn't do No teams or roles, no native mobile apps, no Slack alerts, no Search Console keywords, no AI crawler tracking, no session replay or heatmaps of clicks. ## Docs - [Getting started](https://datapenny.pages.dev/docs): Deploy DataPenny, paste one script tag and connect your payment provider to see which post or search made each sale. - [Tracking script](https://datapenny.pages.dev/docs/script): Where to paste the DataPenny script on Next.js, WordPress, Shopify, Webflow, Framer and other platforms, and every attribute it takes. - [Goals & funnels](https://datapenny.pages.dev/docs/goals): Record signups and clicks from HTML or JavaScript, and chain pages, goals and payments into funnels. - [Sources & attribution](https://datapenny.pages.dev/docs/attribution): How a visit gets its source and channel, what the three kinds of Direct mean, and how DataPenny decides which visit earns a sale. - [Revenue attribution](https://datapenny.pages.dev/docs/revenue): Connect a payment provider to each site, so every sale lands on the visit that earned it. - [Stripe](https://datapenny.pages.dev/docs/stripe): Connect Stripe to DataPenny with one key, tag checkouts with the visitor id, and import the last 12 months of sales. - [Dodo Payments](https://datapenny.pages.dev/docs/dodo): Connect Dodo Payments to DataPenny with one API key, and see which source made each sale. - [Polar](https://datapenny.pages.dev/docs/polar): Connect Polar to DataPenny and credit each order and subscription to its traffic source. - [Creem](https://datapenny.pages.dev/docs/creem): Link Creem to DataPenny, and each sale or subscription shows what brought the buyer in. - [Lemon Squeezy](https://datapenny.pages.dev/docs/lemonsqueezy): Connect Lemon Squeezy to DataPenny, tag checkout links, and import past orders. - [Paddle](https://datapenny.pages.dev/docs/paddle): Connect Paddle Billing to DataPenny and pass the visitor id through Paddle.js. - [Razorpay](https://datapenny.pages.dev/docs/razorpay): Connect Razorpay to DataPenny, pass the visitor id in order notes, and import the last 12 months of sales. - [Payments API](https://datapenny.pages.dev/docs/payments-api): Send sales to DataPenny from your own server, for any billing system. Same field names as DataFast's API. - [Peak hours](https://datapenny.pages.dev/docs/peak-hours): Your week as a grid of hours, showing when visits, sales and revenue peak in your own time zone, and the best moment to post. - [Scroll depth & reading time](https://datapenny.pages.dev/docs/engagement): See how much of each page people really read, and whether the ones who buy read it differently. - [Path to purchase](https://datapenny.pages.dev/docs/path-to-purchase): The days and visits it takes customers to buy, the source that introduced them, the one that gets the credit, and what they read on the way. - [Chart notes](https://datapenny.pages.dev/docs/notes): Pin "Launched on Product Hunt" to the day it happened, so a jump on the chart still makes sense three months later. - [Live globe](https://datapenny.pages.dev/docs/live-globe): Press M to watch every visitor on a 3D globe or flat map, with a live feed of pages, goals and sales. - [Public dashboards](https://datapenny.pages.dev/docs/public-links): Share a read-only dashboard with a link, without customer names or visitor profiles. - [Alerts](https://datapenny.pages.dev/docs/alerts): Every sale and refund in Telegram with its source, word of a traffic spike while the post is still climbing, and a digest once a day. - [AI agents, CLI & API](https://datapenny.pages.dev/docs/mcp): Give Claude Code, Cursor or Codex read-only access to your numbers, or pull the same stats from a terminal or a script. - [Ad blockers & proxy](https://datapenny.pages.dev/docs/proxy): Route the script and its events through your own domain, which keeps most ad blockers out of the way. - [Import from Plausible](https://datapenny.pages.dev/docs/import-plausible): Bring your Plausible export into DataPenny, and your charts keep the months before you switched. - [Install](https://datapenny.pages.dev/docs/install): One command puts DataPenny on your own Cloudflare account. Run it again any time to update. - [Updating](https://datapenny.pages.dev/docs/updating): One command pulls the latest version, applies database changes and redeploys, with your data and settings untouched. - [Custom domain](https://datapenny.pages.dev/docs/custom-domain): Move the dashboard and tracking script to an address of your own, such as stats.yourapp.com. - [Reset password](https://datapenny.pages.dev/docs/reset-password): Change your DataPenny dashboard password with one command. - [Cloudflare free plan](https://datapenny.pages.dev/docs/free-plan): How much traffic Cloudflare's free limits hold, what uses them up, and when to move to the $5 plan. - [Data retention](https://datapenny.pages.dev/docs/data-retention): Decide how long raw events, sessions and bot counts stay in your database. Payments always stay. - [Uninstall](https://datapenny.pages.dev/docs/uninstall): Remove the DataPenny Worker from your Cloudflare account, and optionally its database. - [Troubleshooting](https://datapenny.pages.dev/docs/troubleshooting): Fixes for the usual DataPenny problems, from install errors to visits and sales that don't show up. - [Changelog](https://datapenny.pages.dev/docs/changelog): What's in DataPenny so far. The first public version arrives when the repository opens. ## Comparisons - [DataPenny vs DataFast](https://datapenny.pages.dev/alternatives/datafast): DataPenny and DataFast both credit sales to traffic sources. One is open source on your own Cloudflare, the other is hosted with more integrations. - [DataPenny vs DataBull](https://datapenny.pages.dev/alternatives/databull): DataPenny and DataBull both run on your Cloudflare account. One is open source and free, the other is a closed, paid product with hosted plans. - [DataPenny vs Minilytics](https://datapenny.pages.dev/alternatives/minilytics): Minilytics and DataPenny are both free, open-source revenue analytics on Cloudflare. How they differ, and when Minilytics is the better fit. - [DataPenny vs Plausible](https://datapenny.pages.dev/alternatives/plausible): Plausible is privacy-first traffic analytics. DataPenny starts from your payments. When each one fits, and how to bring your Plausible history across. - [DataPenny vs Fathom](https://datapenny.pages.dev/alternatives/fathom): Fathom is simple, privacy-focused hosted analytics. DataPenny credits each sale to its source and runs on your own Cloudflare. - [DataPenny vs Google Analytics](https://datapenny.pages.dev/alternatives/google-analytics): Google Analytics 4 can show revenue by source once you wire up ecommerce events. DataPenny gets there by connecting your payment provider. - [DataPenny vs Umami](https://datapenny.pages.dev/alternatives/umami): Umami is simple open-source analytics with its own server. DataPenny needs no server and connects directly to your payment provider. ## Use cases - [Stripe sales, traced to their source](https://datapenny.pages.dev/stripe-revenue-analytics): One restricted key links Stripe to DataPenny. Every charge shows where the buyer came from, and renewals, refunds and your last year of sales come with it. - [Dodo Payments sales, traced to their source](https://datapenny.pages.dev/dodo-payments-analytics): One API key links Dodo Payments to DataPenny. Every sale shows where the buyer came from, and your history comes across too. - [Polar sales, traced to their source](https://datapenny.pages.dev/polar-analytics): One token links Polar to DataPenny, and each order or subscription shows the post or search behind it. Your order history comes across too. - [Creem sales, traced to their source](https://datapenny.pages.dev/creem-analytics): One API key links your Creem store to DataPenny, and every order or subscription shows the post or search behind it. The script handles payment links. - [Lemon Squeezy sales, traced to their source](https://datapenny.pages.dev/lemon-squeezy-analytics): Connect Lemon Squeezy to DataPenny and see which post or search made each order, with checkout links tagged and past sales imported. - [Paddle sales, traced to their source](https://datapenny.pages.dev/paddle-analytics): Connect Paddle Billing to DataPenny and credit each transaction to its traffic source through Paddle.js custom data. - [Razorpay sales, traced to their source](https://datapenny.pages.dev/razorpay-analytics): See which post or search made each Razorpay sale. A revenue-first analytics tool with a native Razorpay connection, past sales imported. - [Analytics that live in your Cloudflare account](https://datapenny.pages.dev/self-hosted-analytics-cloudflare): One Worker and one D1 database, in an account you own. No machine to look after, one command to install, and most small sites stay on the free plan. - [Revenue attribution, explained](https://datapenny.pages.dev/revenue-attribution): Attribution connects a sale to the visit behind it. What that takes, which models exist, and what DataPenny does when the trail goes cold. - [An analytics MCP server, built in](https://datapenny.pages.dev/analytics-mcp-server): Your coding agent can answer questions about traffic and revenue. A read-only MCP server ships inside every DataPenny install. - [Talk to your analytics from Claude Code](https://datapenny.pages.dev/claude-code-analytics): One command gives Claude Code read-only access to your traffic and sales. - [Talk to your analytics from Cursor](https://datapenny.pages.dev/cursor-analytics): One mcp.json entry gives Cursor read-only access to your traffic and sales. - [Telegram pings that name the source](https://datapenny.pages.dev/telegram-sale-alerts): Your phone buzzes for each sale, whichever provider took the payment, and the message says what sent the buyer. - [Traffic and revenue from AI assistants](https://datapenny.pages.dev/ai-traffic-analytics): Are ChatGPT, Claude and Perplexity sending you buyers, or only readers? AI assistants get a channel of their own, with revenue beside the visits. ## Guides - [Find the tweet behind a sale](https://datapenny.pages.dev/guides/which-tweet-made-a-sale): Clicks from X lose track of the post they came from. One tagged link per post puts that post's name on every sale it earns. - [Stripe revenue by traffic source, step by step](https://datapenny.pages.dev/guides/track-stripe-revenue-by-traffic-source): Stripe only sees the payment, never the visit. What it takes to get the source through Payment Links, Checkout Sessions and subscriptions. - [Keeping UTM tags through Stripe Checkout](https://datapenny.pages.dev/guides/utm-tracking-stripe-checkout): UTM tags sit on the landing URL, and the payment comes pages later. Two ways to tie them together, with code. - [Seeing ChatGPT visits in your analytics](https://datapenny.pages.dev/guides/track-chatgpt-traffic): Some ChatGPT clicks arrive labelled and some don't. What to expect, and how to tell whether those people spend anything. ## Legal - [Privacy](https://datapenny.pages.dev/privacy): What DataPenny and this website do with your data, in plain words. - [Terms](https://datapenny.pages.dev/terms): The terms for using this website and the DataPenny software. - [Refunds](https://datapenny.pages.dev/refunds): DataPenny is free to self-host, so there's nothing to refund today. - [Contact](https://datapenny.pages.dev/contact): How to reach the people behind DataPenny. ## Optional - Full text of every page: https://datapenny.pages.dev/llms-full.txt - Sitemap: https://datapenny.pages.dev/sitemap.xml