Cloudflare free plan

Most indie sites run on Cloudflare's free plan. Here's what fits, and when the $5 plan is worth it.

For self-hosted installs. ownlytics Hosted runs on Supabase with its own event allowance and nothing to pay Cloudflare.

ownlytics uses a Worker (dashboard, API, tracking) and a D1 database in your account. Cloudflare bills you directly, not us. Their limits, today:

FreeWorkers Paid ($5/month)
Worker requests100,000 a day10 million a month included, then $0.30 per million
D1 rows read5 million a day25 billion a month included
D1 rows written100,000 a day50 million a month included
Database size500 MB per database10 GB per database

Check Cloudflare's pricing page for the current numbers.

What counts

  • Each pageview and goal is one request and a few rows written.
  • An open tab sends a small heartbeat once a minute, so long visits cost a little more.
  • The once-a-minute background job (payment sync, alerts, cleanup) and your own dashboard use some too.
  • Importing your sales history: on the free plan a Worker run may call other services only 50 times, so ownlytics imports about 25 past sales a minute (a few thousand take an hour or two) and new sales keep arriving meanwhile. On Workers Paid it goes several times faster.

Rule of thumb: the free plan comfortably handles sites up to roughly 20,000 pageviews a day across all your websites.

When to move to Workers Paid

  • You regularly pass about 20,000 pageviews a day. On the free plan, requests over the daily limit fail until midnight UTC, so you'd lose tracking for the rest of that day.
  • The database nears 500 MB. Settings → Data shows its size; data retention keeps it in check.

Upgrading is one click in the Cloudflare dashboard (Workers & Pages → Plans). Nothing changes in ownlytics.

How the whole setup fits together: self-hosted analytics on Cloudflare.