DEV3 Technologies home

DEV3 Tallyglass – Cookieless Website Analytics SaaS Laravel Script with Goals, Funnels, Shared Dashboards

A self-hosted, cookieless website analytics platform on Laravel 12 and Filament 4: a script under 2 KB, goals, funnels, retention, realtime, read-only shared dashboards, CSV import and export, an API and plans by monthly pageviews. Web installer and demo data included. No mobile apps.
by DEV3 TechnologiesVerified Author(0) 0 sales 5 viewsUpdated 08 Nov 2026

Launch Offer: up to 50% off

This item is 50% off: $24.50 instead of $49

Ends in
--
Days
--
Hrs
--
Min
--
Sec

Video tour. Pick a section below to browse 100 screenshots in 9 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Mobile web1:01

Tallyglass is a website analytics product you host yourself, built by DEV3 Technologies on Laravel 12 and Filament 4. You run it as the operator and sell plans by monthly pageviews; each customer is a workspace with its own sites, goals, funnels, shared dashboards, imports, exports and API keys.

What it does

  • Cookieless by design. One script under 2 KB (about 1 KB gzipped) sets no cookie and stores nothing in the browser. A visit is told apart by a hash of IP, browser and a random daily salt; the salt is deleted after the day closes, and IPs and user agents are never written to any table or log.
  • The Glass Pane dashboard. Unique visitors, pageviews, views per visit, bounce rate, visit duration and a live visitor count over a trend chart with the previous period dashed. Click any referrer, page, country or campaign to filter the whole page, then save the filter as a segment. Sources, pages, locations (a flat tile map), devices, goals and custom events sit in tabbed cards with a searchable details drawer.
  • Goals, funnels and retention. Page and event goals with exact, prefix or wildcard matching. Funnels of two to eight steps, ordered or in any order, inside a visit or 24 hours, with drop-off and the pages people left from. Weekly retention cohorts for sites that send their own first-party id, and an honest explainer for those that do not.
  • Shared dashboards. Read-only links with an optional password, expiry and widget list. Revoking a link closes it at once, and password guesses are limited per link and address.
  • Data in and out. Import daily aggregates from a previous tool (days that already hold data are handled by a rule you choose, imported days are drawn hatched) and export CSV or JSON of the rollups with signed, expiring links. A REST API with workspace keys, scopes and an OpenAPI document, plus server-side events.
  • Time zones that behave. Days follow each site's own zone, including the days when the clock changes. Changing the zone never rewrites the past.
  • Operator panel. Tenants, plans, subscriptions, invoices and an MRR curve; ingestion health with events per minute, rejections by reason, rollup lag and an abuse queue; a spam referrer list; audited view-only support sessions.
  • Plans and quotas. A monthly pageview meter with an 80 percent notice, a soft overage margin and a hard stop, enforced under row locks so parallel traffic cannot overshoot far.

Quality checks

The release passed seven gates on the final code: Larastan level 6 with 0 errors, GATE_PEST, a build inside the page budget, migrations and the full demo seed on MySQL 8 and SQLite, a headless smoke test with seven MySQL race groups (parallel retries of one event, quota overshoot, one session for two parallel first pageviews, parallel rollups, rollups during ingestion, share password guessing, purge during a rollup), an installer test from the zip, and a secret scan. An independent logic review of the visitor hash, ingestion, sessions, rollups, funnels and quota code found issues that were fixed with tests.

What you need to know before buying

  • Locations use a simulated geo-IP table by default. Real locations need a GeoLite2 file you download yourself; the reader package (geoip2/geoip2) is a Composer install you run yourself, and no database is bundled.
  • Browser, system and device detection covers the major engines; others show as Other. The bundled bot list has about 190 markers.
  • Visitors are per-day identities: a returning person counts again the next day, and ranges merge the days. Funnels cannot span days. Filters, funnels and retention read raw events, which are kept for 35 days; older months exist as rollups only.
  • Tested to about 5 million pageviews a month on one MySQL server. Above that you need a columnar store (not included).
  • You need cron every minute and MySQL 8 or MariaDB 10.6 (rollups use named locks). Reverb is optional; without it live counts poll.
  • Payments, mail and geo-IP are simulated until you connect your own. You are the merchant of record for what your customers pay you.
  • Server-side events take an explicit IP and user agent from your code: that is personal data you must justify. Cookieless tracking is not legal advice; ask your own counsel.
  • Web only: there are no mobile apps. Demo brands, people and domains are fictional.

In the package

The Laravel app with a web installer (/install), prebuilt assets and the tracker, an offline buyer guide in Documentation/, a tenancy and race-check write-up, LICENSE.txt and START-HERE.txt. Six months of support are included. Node.js is not needed to run it.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Tallyglass passed before release.

The engineering behind Tallyglass: a daily-salt visitor hash, rollups that rebuild from raw events, HyperLogLog visitors and quota counters that hold under parallel traffic.

The problem it solves

Privacy-first analytics sounds simple until the numbers have to be right. Visitors must be told apart without storing anything about them, days must follow each site's own clock through daylight saving changes, a rollup that crashes halfway must not double count, and a monthly pageview limit must hold while hundreds of requests arrive at once.

Architecture and approach

Every visit becomes a hash of IP, browser and a random salt that exists for one site-local day and is then deleted, so nothing identifies a person and yesterday's hash cannot be rebuilt. Raw events are kept for 35 days; hourly and daily rollups are additive, claimed before they are computed, and can be rebuilt from raw for any hour. Unique visitors across days are a HyperLogLog union, so a year of history stays small.

Ingestion takes a per-visitor lock, stitches sessions across the idle timeout and midnight, and consumes quota under a fixed lock order. Funnels, retention, shared dashboards and imports sit on the same query layer the API uses, and a check command compares rollups with raw, quota counters with raw pageviews and every tenant row with its team.

Quality gates and results

Seven MySQL race groups run in the release gate: retries, quota overshoot, parallel first pageviews, parallel rollups, rollups during ingestion, share password guessing and purge during a rollup.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Livewire, REST API
Data MySQL 8, HyperLogLog sketches
Frontend SVG charts, Vite
Quality Pest, Larastan level 6, Playwright

Inside the build

Know what visitors do, not who they are: The home page: a cookieless analytics promise beside a frosted Glass Pane of real numbers. Know what visitors do, not who they are — The home page: a cookieless analytics promise beside a frosted Glass Pane of real numbers.

Home in dark mode: Deep graphite with frosted cards and the same single mustard accent. Home in dark mode — Deep graphite with frosted cards and the same single mustard accent.

Guides & articles

Practical guides and engineering write-ups for DEV3 Tallyglass.

Cookieless website analytics: 7 things to check before you pick one

Last updated
Cookieless website analytics: 7 things to check before you pick one: DEV3 Tallyglass

"No cookies" is easy to say and hard to build. Before you trust a number from an analytics tool you host yourself, check how it counts, what it keeps and where it stops being right. Here are seven things to look for, with DEV3 Tallyglass as the worked example.

Tallyglass home page: the headline beside a frosted Glass Pane of visitors, pageviews and bounce rate

1. How does it tell two visitors apart?

Without a cookie the tool needs something else. Tallyglass hashes the IP, the browser and a random salt that belongs to one site and one day. The hash is the only thing stored. Ask any tool you consider whether the salt is ever deleted, and when.

The privacy model: IP and browser plus a daily salt become a hash, then the salt is deleted

2. What is stored, and where?

The honest answer is "the hash and the page", not "nothing". Check that IP addresses and user agents are not written to a database or a log. In Tallyglass the country and browser are derived on arrival and the address is dropped, and a test asserts that no analytics table has an IP or user-agent column.

3. Do days follow the site's clock?

A shop in Berlin and a blog in Auckland do not share a midnight. Daily numbers should follow each site's own time zone, survive the days when the clock changes, and never rewrite the past when you change the zone later.

The Glass Pane: six KPIs and a trend with the previous period dashed

4. What can a funnel and retention really do?

A hash that changes every day cannot follow a person across days. That makes funnels one visit or 24 hours long, and retention possible only when the site sends its own first-party id. A tool that shows perfect weekly cohorts without asking for one is inventing them. Tallyglass shows an explainer instead.

A funnel with drop-off between steps and the pages people left from

5. Can you share it and get your data out?

Clients want a link, not a login. Look for read-only links with a password and an expiry that you can revoke, imports from the tool you are leaving, and exports with signed, expiring links.

A read-only shared dashboard for a client

6. Who sees what?

Owners, analysts and viewers should differ in what they can change, and a viewer should open only the sites assigned to them. For an operator selling the product, check that every table is scoped to a workspace and that a wrong id returns nothing.

7. Where does it stop?

Every analytics database has a ceiling. Tallyglass is tested to about 5 million pageviews a month on one MySQL server, keeps raw events for 35 days and rollups for as long as the plan allows, and uses a simulated geo-IP table until you add your own GeoLite2 file. Read the limits before you buy, not after you launch.

The operator's ingestion health: events per minute, rejections and rollup lag

See it run

The video tour shows the dashboard, goals, a funnel, a shared link and the operator panel.

Video: a tour of Tallyglass from the site to a funnel, a shared link and the operator panel

Cookieless tracking is not legal advice. Ask your own counsel what applies where you operate.

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

Free snippets from this product

Questions about this product (6)

Answers from the DEV3 team and the community.

Ask a question

More from this author

View all

Related in Web Scripts & Software

View all