Cloudflare free plan and analytics: what fits
Our docs say Cloudflare's free plan comfortably handles self-hosted Ownlytics for sites up to roughly 20,000 pageviews a day across all your websites. Past that, or if your database nears its size cap, the $5 Workers Paid plan is the next step. Cloudflare sets its own limits and can change them, so check Cloudflare's current pricing page before you plan around any number below.
Fig.A small site on a free Cloudflare plan. Sample data, not a real site.
What does the Cloudflare free plan limit?
Ownlytics self-hosted uses a Worker (dashboard, API and tracking) and a D1 database, both in your account. Cloudflare bills you directly, not us. The limits listed in our docs at the time of writing are:
| Free | Workers Paid ($5/month) | |
|---|---|---|
| Worker requests | 100,000 a day | 10 million a month included, then $0.30 per million |
| D1 rows read | 5 million a day | 25 billion a month included |
| D1 rows written | 100,000 a day | 50 million a month included |
| Database size | 500 MB per database | 10 GB per database |
Treat this as a snapshot, not a promise. Cloudflare's pricing page is the source of truth.
What counts toward those limits?
More than pageviews. The things that use your allowance:
- Pageviews and goals. Each one is one request and a few rows written.
- Heartbeats. An open tab sends a small heartbeat once a minute, so long visits cost a little more than short ones.
- The background job. A once-a-minute job handles payment sync, alerts and cleanup.
- You. Your own dashboard use reads rows too.
- Importing sales history. On the free plan a Worker run may call other services only 50 times, so about 25 past sales are imported per minute. A few thousand take an hour or two, and new sales keep arriving meanwhile. On Workers Paid it goes several times faster.
Our docs state the 20,000 pageviews a day figure as a rule of thumb rather than the raw 100,000 requests in the table, and the extras above all draw on the same allowance. Treat it as a rough guide, not a guarantee.
What happens if you go over?
On the free plan, requests above the daily limit fail until midnight UTC. For analytics that means you lose tracking for the rest of that day. Events that arrive while requests are failing are not recorded, so the gap in your data stays a gap.
That is the real risk, and it is why we suggest moving up before a big day rather than after. If you are planning a launch, a newsletter feature or anything that could multiply your traffic, treat the paid plan as insurance. Upgrading is one click in the Cloudflare dashboard under Workers & Pages, then Plans. Nothing changes in Ownlytics.
Example (made-up numbers for illustration)
Imagine a founder with two sites averaging 4,000 and 2,500 pageviews a day. That is 6,500 pageviews against a comfort ceiling of roughly 20,000. She has about three times headroom.
Now she is featured somewhere and one day sees 45,000 pageviews. That one day is more than twice the comfort ceiling. Depending on tab-open time and everything else running, it could cross the daily request limit and cut tracking for the rest of the day. If she had expected the feature, switching to the $5 plan the day before costs $5 for the month.
Note the shape of that decision. The monthly cost is small; the cost of a missed launch day in your data is what you are really buying off.
How do you keep the database small?
The free plan caps a database at 500 MB. Two controls help:
- Data retention. Under Settings, then Data, you choose how long to keep events, sessions and bot traffic: 30, 90 or 180 days, one to three years, or forever (the default). Payments and their attribution are never removed by retention. See data retention.
- Watch the size. The same page shows the database size and approximate row counts.
Cleanup runs once a day in small batches so it stays inside the free plan's limits. A big first cleanup simply finishes over a few minutes.
If you ever hit the cap, you will probably prefer raising the plan to deleting history you wanted. But if raw traffic older than a year is not useful to you, a shorter retention window is free.
When the free plan is the wrong choice
Be honest about these cases:
- Spiky traffic. If your pages go viral or you run launches, the daily limit is the thing most likely to bite you.
- Multiple busy sites. The 20,000 figure is across all your websites combined, not per site.
- You cannot tolerate a gap. If missing a day of data would hurt, pay the $5.
- You want no Cloudflare relationship at all. Then hosted is the alternative, with its own event allowance and nothing to pay Cloudflare.
For how the pieces fit together, read self-hosted analytics on Cloudflare Workers, explained. For the money side, see one-time vs monthly analytics cost over three years.
At a glance
| Question | Short answer |
|---|---|
| Comfort ceiling on free | About 20,000 pageviews a day, all sites combined |
| What fails over the limit | Requests, until midnight UTC |
| Upgrade cost | $5/month, paid to Cloudflare |
| Upgrade effort | One click in Cloudflare, nothing changes in Ownlytics |
| Database cap on free | 500 MB per database |
| Where to check current limits | Cloudflare's pricing page |
You can see what your install would be tracking by browsing the live demo.
FAQ
Can I run self-hosted analytics on Cloudflare's free plan?
Yes, for most small sites. Our docs say roughly 20,000 pageviews a day across all websites fits comfortably. Check Cloudflare's current limits, since they are Cloudflare's to change.
What happens when I exceed the free limit?
Requests over the daily limit fail until midnight UTC, so tracking stops for the rest of that day.
Do I need a credit card for Cloudflare?
Our install docs say a Cloudflare account on the free plan is fine and that signing up needs no card. Check Cloudflare's sign-up flow for its current requirements.
Does it cost more if I track several websites?
One Ownlytics install tracks unlimited websites. Cloudflare's limits apply to the install as a whole, so more busy sites use up the same daily allowance sooner.