This $129 came from one post on X

DataPenny ties every sale to the visit that earned it, then prints the trail. Open source, on your own Cloudflare.

DataPenny
SALE #0412SAMPLE

Pro plan, yearly$129.00

CAME FROM
x.com

Campaignpricing-thread
First visit12 days before
Visits4
Pages seen7
LocationBerlin
DevicePhone

CREDITED$129.00
Matched by checkout metadata
A post on X12 days before the sale
Read /pricing twice4 visits from Berlin
$129.00 saleCredited to x.com

Revenue from Stripe, Dodo Payments, Razorpay, Lemon Squeezy, Polar, Paddle and Creem, or anything that can make an HTTP call. Runs on Cloudflare Workers and D1.

01Traffic

Every visitor, next to what they paid

Sources, pages, countries and devices, with the revenue each one brought in. Click any row and the whole dashboard filters to it.

Visitors
18,406+21%
Revenue
$11,482+34%
Conversion
1.74%+0.2
Revenue per visitor
$0.62+11%
Top sources by visitors and revenue, sample data
SourceVisitorsRevenue
x.com6,211$3,118
google.com4,102$2,640
Direct · shared link2,644$1,207
news.ycombinator.com1,918$1,466
chatgpt.com1,207$1,092
Entry 1The dashboard for a sample siteSample data
02Revenue

Every sale lands on a visit

One key connects your payment provider. From then on new sales, renewals and refunds flow in by themselves, and your history comes across in one go.

One buyer, three visits

Post on X12 days before
$129
Google search3 days before
$129
Typed the address20 minutes before
$129

The default. The latest visit with a real source gets the sale, so a typed address never hides what sent them.

Entry 2Switch the model and the credit movesSample data
03Peak hours

Your week, hour by hour

Find your three busiest hours and the best moment to post. Then flip to sales, because people often pay at a different hour from when they browse.

Peak hours

Last 30 days, local time

Thursdays, 2 pm to 5 pm is your busiest stretch.

2.6 times a usual three hours. Post around Thu 1 pm to be there before they arrive.

Entry 3Each square is one hour of your weekSample data
04Reading

How far buyers read before paying

Scroll depth and reading time for each page, with buyers set against everyone else. An idle tab doesn’t count as reading.

On /pricing, buyers get 44% further down the page and stay 2.5 times as long.

Reading time
Buyers
2m 56s
Everyone else
1m 11s
Scroll depth
Buyers
91%
Everyone else
63%
Entry 4Pick a page to see where readers drop offSample data
05Path to purchase

The source that found them, and the one that closed

Retrace how customers reached their first sale: how long they took, which source introduced them, and which one gets the credit.

2.8 daysMedian time to buy
3 visitsMedian visits before paying
27%Bought on the first visit
6 pagesMedian pages before paying
Brought them inCredited with the sale
x.com64Google55Hacker News23ChatGPT17Reddit14Other19Google88x.com32Direct · typed30Hacker News14ChatGPT9Reddit7Other12

Time from first visit to purchase

  1. 58Same visit
  2. 14Same day
  3. 511 to 3 days
  4. 344 to 7 days
  5. 261 to 2 weeks
  6. 172 to 4 weeks
  7. 12Over a month
Entry 5Point at a source to trace its customersSample data
06Direct

38% of visits, with no source

Typed or bookmarkedPeople who have been before, and first-time desktop visitors on your home page.
18%
Shared linkFirst-timers with no referrer, deep in the site or on a phone. Usually a link pasted into a chat, an email or a note.
13%
Checkout returnBuyers on their way back from the payment page. If they visited earlier, that visit keeps the credit.
7%

Apps hide the referrer inside their built-in browsers. DataPenny recognises the browser and gives the visit to the app.

InstagramTikTokRedditTelegramGoogle app
Entry 6The same visits, split by what they really wereSample data

Direct is three different things

Someone who typed your address, someone who got a link in a chat, and someone back from checkout are not the same visit. AI assistants get their own channel too.

07Lifetime value

What a customer from each source is worth

Customers grouped by where they first came from, with everything they’ve paid since: renewals, upgrades and repeat orders.

Lifetime value by first source, sample data
First sourceCustomersLifetime valueBought againPaid so far
Hacker News23$21439%$4,922
x.com64$14828%$9,472
chatgpt.com17$17635%$2,992
google.com58$13124%$7,598
reddit.com14$9614%$1,344
Entry 7Lifetime value by first sourceSample data
A dark globe with sample visitors pinned on Berlin, Bengaluru and Toronto.
08Realtime

Everyone on your site, on a spinning globe

Press M anywhere in the dashboard. Each visitor gets a pin with their page and source, and every sale plays a chime.

ruby otterBerlin on /pricing, from x.com
teal heronBengaluru on /, from google.com

Entry 8The real mapSample visitors

09Alerts

Your phone buzzes, and it says why

  • Every sale and refundEach one names the post or search behind it.
  • Traffic spikesWhile the post is still taking off, with the page they land on.
  • A daily digestAt a time that suits you, in up to five Telegram chats.
Entry 9As the bot sends themSample data
10AI agents

Ask your agent what changed this week

A read-only MCP server is built into every install, so Claude Code, Cursor and other clients answer from your own numbers. The CLI gives you the same data as JSON.

> which post earned the most this month?

  datapenny: get_breakdown  dimension=referrer  by=revenue  period=30d

  x.com brought in $3,118 from 41 sales, more than any other source.
  Most of that traces to one campaign, pricing-thread ($2,240).
  Google is second at $2,640, but those buyers take longer to decide.

> how does this week stack up against the last one?

  datapenny: compare_periods  period=7d

  Visitors up 18%, revenue down 6%. The extra traffic came from
  Reddit, and those visitors didn't buy. x.com sales held steady.
Entry 10An example sessionSample data
11Setup

One tag, one key, one receipt

  1. Paste one script tagIt’s about 3 KB gzipped. Single-page apps and subdomains work without extra code.
  2. Connect your payment providerPast sales import, and payment links get tagged for you.
  3. Read your first receiptThe next sale shows the source that brought it, on the dashboard and on your phone.
// Inside head, on every page

<script defer data-site="site_yourapp"
  src="https://YOUR-DATAPENNY-URL/js/script.js"></script>
Entry 11Guides for more platforms are in the docsCopy and paste
12Self-hosting

It runs in your Cloudflare account, not ours

No server to manage and no database to babysit. From a clone, npm run setup creates the database, sets your secrets and deploys.

In your account

  • One Worker: ingest, API and dashboard
  • One D1 database: visits, sales, settings
  • Your dashboard password and encryption key, as secrets
  • Unlimited websites and events

Never on our side

  • Your visitors and your sales
  • A license check or activation limit
  • Telemetry from your install
  • A bill that grows with your traffic
Entry 12What lives whereFree plan fits most small sites
13Open source

Open source

AGPL-3.0, the whole product. Read every line, change what you like, and keep your install forever.

The repository opens at launch. Everything that doesn’t cost money to run stays in the open version.

14Pricing

Free to run yourself. Cloud is coming.

The same product either way. Self-host it on an account you own, or join the waitlist for the version we run.

Self-hosted

Every feature, on your own Cloudflare.

$0 forever


WebsitesUnlimited
EventsUnlimited
FeaturesAll of them
LicenseAGPL-3.0
Your dataYour account

Cloudflare’s free plan fits most small sites. Busier ones pay Cloudflare $5 a month. The repository opens at launch.

Read the install guide

Cloud

We run it for you. Not available yet.

$9 a month, first paid tier


Free tierSmall, planned
Paid tiers$9, $19, $49 /mo
Priced byMonthly events
Cloudflare accountNot needed
WaitlistLifetime deal

Limits and the lifetime price aren’t set yet. People on the waitlist hear them first and get early access.

Join the waitlist
15Questions

Questions

Where does my data live?

In your own Cloudflare account, where DataPenny runs as one Worker and one D1 database. None of our servers sit in the path, and there’s no license check or telemetry.

When can I install it?

The repository opens at launch. Join the waitlist and we’ll email you the day it does. Until then, the live demo is the real dashboard running on sample data.

Does it work with my payment provider?

Stripe, Dodo Payments, Razorpay, Lemon Squeezy, Polar, Paddle and Creem connect directly. Anything else can report its sales with one HTTP call to the Payments API.

What does it cost to run?

Self-hosting is free from us. Cloudflare’s free plan covers most small sites, roughly 25,000 pageviews a day. Busier sites need Workers Paid at $5 a month, which you pay to Cloudflare.

Do I need a cookie banner?

That depends on the mode you pick for the site. First-party cookies follow a buyer for weeks. Cookieless stores nothing in the browser, but only links sales to same-day visits. The third mode stays cookieless until your banner gets a yes. Your lawyer has the last word on which one fits.

Coming from DataFast?

Your data-fast-goal tags, window.datafast() calls and datafast_visitor_id metadata keep working, and the Payments API uses the same field names. On most sites the only change is the script tag.

Why not just use Google Analytics or Plausible?

They start from pageviews and need you to send revenue as events. DataPenny starts from the payment: connect your provider with a key and every sale, renewal and refund lands on the visit that earned it.

How sure is each match?

Most sales carry the visitor id through checkout, or come back through your thank-you page. When only timing links a sale to a visitor, DataPenny marks it estimated and replaces it if proof arrives. You can turn timing matches off.

Can Claude or Cursor read my numbers?

Yes. An MCP server with read-only keys ships inside the Worker, so Claude Code, Cursor and other clients answer from your own data. Customer names and emails are left out unless a key is allowed to read them.

Will ad blockers stop it?

Some will, as with any analytics. Routing the script and its events through your own domain keeps most of them out of the way. Payments reach DataPenny from your provider either way.

Find out what your last sale came from.

Open the demo to see it on sample data, or join the waitlist to hear when the repository and Cloud open.

One email at launch, and one with the lifetime deal. Nothing else.