Know which pages get read.
Compare page views, referring websites, broad countries and devices. Export popular pages as CSV.
SITEPULSE · FREE APP · HOST IT YOURSELF
One clear dashboard for active browser tabs, page views and traffic sources across your websites. No analytics subscription. Your own Cloudflare account. Your own traffic data.
Free software · No SellerBundle account · Cloudflare free allowances apply
example.com /products/ · Desktop
Example figures, not live customer data.Compare page views, referring websites, broad countries and devices. Export popular pages as CSV.
Reports require your private dashboard key. Visitors receive only a small public tracking snippet.
No analytics cookies or persistent visitor identifiers. Query strings are excluded and traffic history is kept for 30 days.
START HERE / ABOUT 15–30 MINUTES
Use HTTPS websites you own or have permission to manage. Generate a standalone Worker containing your dashboard and collector. Domain entries stay in this browser; no login or private key is requested here.
THE INSTALL / ONE STEP AT A TIME
In your own Cloudflare account, open Workers & Pages and create a Worker named sitepulse-traffic. Open its code editor, replace the starter code with your downloaded sitepulse-worker.js, and deploy. Keep the HTTPS workers.dev address.
Open Storage & databases → D1 and create a database named sitepulse-traffic. In its SQL Console, paste the contents of sitepulse-setup.sql and run it on the new empty database. In your Worker’s Bindings, add that D1 database with the variable name DB. Save and deploy.
In Worker Settings → Variables and Secrets, add a Secret named DASHBOARD_KEY. Generate a random value of at least 32 characters in your password manager, save it there, and deploy. Enter it only in your own Cloudflare settings and your own SitePulse dashboard. Never put it in a website snippet, screenshot, URL or support message.
Add a Cron Trigger under your Worker’s trigger settings: 17 3 * * *. This schedules daily removal of traffic older than 30 days. Without this trigger, automatic retention cleanup will not run.
Open your Worker’s HTTPS address. Click Connect or Set up tracking, enter that same Worker address and your saved key, then connect. The key stays in page memory. Reloading or closing the dashboard requires connecting again.
Use the snippet builder below or your dashboard’s Installation guide. Insert the script before </head> in the shared template of each approved website. It should run once per page. Clear any page cache after saving. If your website has analytics consent controls, use its analytics category and verify that declining or withdrawing consent prevents tracking.
Open a public tracked page in a normal browser, then click Refresh traffic in your dashboard. Check that the domain shows Data received and that the correct page path appears. Test a second page. A successful deployment alone does not prove tracking is installed.
WordPress, StackCP, Cloudflare and troubleshooting instructions ↗
This public snippet contains no dashboard key. Use the address of the Worker you deployed, not the SellerBundle website.
Your tracking snippet will appear here.
Your entries stay in this page. No account credentials are needed.
A visible tab seen in the last 150 seconds counts as active. Several tabs can belong to one person. Reloads create new anonymous visits.
The app records page paths and referring hostnames. It does not identify customers, capture forms, record sessions, track conversions or report campaign parameters.
Cloudflare’s free limits are account-wide: 100,000 Worker requests per day; D1 allows 5 million rows read and 100,000 rows written per day, with 5 GB total storage. Heartbeats and dashboard refreshes use requests too.
Limits checked 13 October 2026. Check Workers limits and D1 pricing before enabling a paid plan. Free-tier limits can stop collection or reports until their daily reset.
The software is free under the MIT licence and has no SellerBundle analytics subscription. You deploy it in your own Cloudflare account; Cloudflare allowances and any plans you choose still apply.
Yes. Generate a Worker with all your approved domains, then install the matching snippet on each website. To add another website later, regenerate the Worker with the complete list, replace only its code, and preserve your existing DB binding, secret and Cron Trigger.
It works on public HTTPS pages where you can add a JavaScript script to the shared template. WordPress, static HTML and custom websites can use that approach. A Cloudflare DNS connection alone does not install the script. Platform permissions can restrict script installation.
Your deployed collector sends traffic to your own Cloudflare D1 database. SellerBundle’s setup wizard does not receive your domains, dashboard key or collected traffic. SellerBundle has its own website traffic measurement, described in its privacy notice.
SitePulse does not set analytics cookies or persistent visitor identifiers. It records page paths, anonymous in-memory tab IDs, referring hostnames, broad device types, countries and timestamps. It does not save raw IP addresses or form contents. Hosting still processes normal connection information. Avoid pages with personal details in their paths; review your site’s privacy and consent setup.
SitePulse measures anonymous tab sessions. Refreshes, multiple tabs, browser blockers, consent choices, Do Not Track, Global Privacy Control and quota limits affect its figures. It does not claim to count unique people.
Remove the tracking snippet from your templates and clear the website cache. Collection from those pages stops. Remove the Worker and database in your own account only when you are ready to discard the app and its stored traffic.
Explore more free tools for your shop, or check the software options for your next stage.
Explore the free toolbox ↗