AGGREGATE Analytics by Subschema

Count what happens on your websites, not who did it.

Get started with AGGREGATE

Download the latest release and run it on your own hosting. No account, no email gate, no telemetry. Free and open source under AGPL-3.0.

Count events, not people

By default, each event keeps only a sanitized page path, a coarse referrer channel, device and screen-size buckets, and the UTC hour it happened in. No visitor or session ID, IP address, browser string or exact timestamp is stored.

See what is stored

Your BI tool is the dashboard

Power BI, Tableau, Looker or any SQL-capable tool connects to stable, versioned reporting views in your own database. There is no separate analytics product to learn, license or put through vendor review.

Connect a BI tool

Ask an AI assistant, with guardrails

Give an assistant the same read-only account as your BI tool. It sees documented views and a built-in data dictionary: released counts, never raw rows, identifiers or numbers below your disclosure threshold.

Connect an assistant

Yours to run

Self-hosted from a release ZIP on ordinary PHP hosting, with MySQL, MariaDB, PostgreSQL, SQL Server or SQLite. Open source: AGPL-3.0 for the server, BSD-3-Clause for the tracker.

View on GitHub

Download AGGREGATE Beta v2026.10.12 (ZIP, about 14 MB)

Free and open source. No account, no email gate, no telemetry.
Release notes and earlier versions ยท View on GitHub

What is included

  • Privacy-minimized collection. Page views and named events with sanitized
    paths, coarse dimensions and hour buckets. Emails, UUIDs and numeric record
    IDs are stripped from paths before storage.
  • Suppression in the view, not the dashboard. The reporting views withhold
    the current period and hide any cell below your configured minimum. The
    threshold lives in the database, so every report, extract and query gets the
    same protection.
  • Reporting views for BI. Versioned views for events, daily rollups, goals
    and geography, plus a coverage view that says how complete each view is.
    Names and column meanings stay stable across releases.
  • Reporting database and BigQuery sync. Copy the approved views into a
    second database, or into a BigQuery dataset on a schedule, so BI users never
    touch the application database.
  • Reporting API. Read the reporting views over HTTPS with a token, for
    scripts, notebooks and AI tools that cannot open a database connection. Off
    by default; private views need their own switch.
  • Tag Manager Lite. Serve the tags each site needs from your own
    AGGREGATE host, configured per website in the dashboard or in YAML.
  • Consent Manager Lite. A consent banner whose choices actually change what
    the server records, with regional rules and Google Consent Mode signals.
  • Consent-based enhanced mode. Visitor and session IDs, custom properties
    and exact dimensions, only after an affirmative consent choice, and stopping
    the moment consent is withdrawn.
  • Server-side collection. Send page views and goals from your backend in
    PHP, Java, .NET, Node.js, Python, Ruby or Go, with no script on the page.
  • Users, permissions and an audit trail. Permission groups and profiles for
    the admin UI, and a record of administrator actions when a privacy office
    asks who changed what.
  • Rebrandable without a fork. Name, logo, colors and fonts are
    configuration. We run it white-labeled for client work; so can you.

Inside the admin

A data dictionary your tools can read

Definitions should not live in one person's head. The BI glossary publishes the labels and definitions behind every reporting view, in sync with the database, so Power BI, Tableau, Looker, and an AI assistant all describe the same number the same way.

AGGREGATE BI glossary page showing published locales and value labels

Who changed what, and when

Every administrative change is recorded with who made it and when: settings, users, integrations, tokens, updates. Denied attempts are recorded too, entries never hold passwords or submitted values, and the filtered record exports to CSV when auditors ask.

AGGREGATE audit trail page with filters for area, action, outcome, and user

Ready for AI assistants

An MCP server at /mcp lets AI assistants list, describe, and query the reporting views with a granted token. It is off by default, every tool call lands in the audit trail, and turning it off returns 404 while tokens and connections stay revocable.

AGGREGATE feature flag card for the MCP server for AI assistants

Collection without tag sprawl

Tag Manager Lite and Consent Manager Lite are configured per website, in the dashboard or as YAML. One tracker, consent asked before analytics loads, and settings you can download and review like code.

AGGREGATE Tag Manager Lite settings for a website, with Consent Manager Lite enabled

Get running in five steps

No terminal is required for the release ZIP path:

  1. Prepare the site. Create the site in your hosting panel, choose PHP 8.2
    or newer, and create an empty database (SQLite needs no database server).
  2. Upload the release. Download the ZIP, upload and extract it with the
    file manager, and set the document root to the extracted public folder.
  3. Open the site. The setup page checks the server, asks for the one-time
    code in SETUP-CODE.txt, tests your database connection and writes the
    configuration. Then create the administrator account.
  4. Add one scheduled task that runs bin/console app:scheduler:run every
    five minutes, for maintenance and the optional syncs.
  5. Add the tracker to a website, or use Tag Manager Lite, the Grav plugin
    or the Google Tag Manager template below.

Full deployment guide

Works with the tools you already use

  • AGGREGATE for Grav. Our plugin for the Grav CMS, listed in the official
    Grav Plugin Manager. Installs the tracker, Tag Manager Lite and the consent
    banner from the Grav admin.
    Get the plugin
  • AGGREGATE for Google Tag Manager. A community template for the web
    container, so existing GTM setups can send events to AGGREGATE.
    Get the template
  • Your BI stack. Power BI, Tableau and Looker Studio read the reporting
    views directly, through the reporting database, or through BigQuery sync.

Governance before tooling

Most web analytics begins by identifying the visitor, with a cookie, a device
fingerprint or a daily hash of an IP address. Unique visitors, sessions and
funnels are all built on that identity.

For organizations that answer to a privacy office, the identity is the hard
part. It has to be justified, disclosed and often consented to, and it is
usually more than the question requires. Leadership wants to know which pages
are read, which campaigns bring people in and whether sign-ups are rising.
None of that requires following a person.

AGGREGATE starts from the other end. It counts what happened, enforces privacy
rules on the server where the data arrives, and publishes the results into the
reporting tools your organization already governs.

How it works

  1. Collect. Add the lightweight tracker or your tag manager, or send events
    from your own backend with no script on the page. The server removes query
    strings, emails, UUIDs and numeric record IDs from page paths before
    anything is stored.
  2. Protect. Events are grouped into completed time periods. The reporting
    views withhold the current period and hide any count below your minimum,
    five by default. That threshold lives in the database, so every report,
    extract and query receives the same protection.
  3. Publish. Documented, versioned SQL views, plus glossary views that
    label every code, give your BI tool or AI assistant what it needs to answer
    questions correctly. View names and column meanings stay stable across
    releases.

Two modes, one honest consent model

Anonymous mode (default) Enhanced mode
Applies when Consent is unknown or declined The visitor makes an affirmative choice
What is stored Sanitized path, referrer channel, device and viewport buckets, UTC hour. Optionally, allowlisted goals and country- or continent-level geography. Everything in anonymous mode, plus visitor and session IDs, custom properties and exact dimensions
How it stops Administrators can pause collection globally or exclude sensitive paths Immediately, when the visitor withdraws consent

Consent in AGGREGATE changes what the server records, not just what the banner
says. Connect it to your consent manager and the behavior matches what your
notice promises. Withdrawal is prospective: it stops future enhanced detail but
does not erase what was already stored, and coarse anonymous counting continues.

What you give up

Our own documentation puts this before the feature list, and it belongs here
too.

  • No unique visitors, sessions or bounce rate in anonymous mode. Computing
    them requires exactly the identifier AGGREGATE refuses to create.
  • Small numbers disappear. Counts below your threshold are withheld, and
    widening the date range will not bring them back. Low-traffic sites will see
    gaps.
  • No real-time view. Events are released after each UTC hour ends; goals
    and geography after each UTC day.
  • No built-in charts or assistant. AGGREGATE makes the data safe to query.
    The BI tool, the model and the connector are yours to choose and to govern.
  • "Anonymous" is the name of a mode, not a legal conclusion. Rare paths,
    small populations and outside information can still make data personal in
    context. Installing AGGREGATE does not by itself make a website compliant
    with GDPR, CCPA or any other law.

Is it the right fit?

Likely yes if you answer to a privacy office or data protection officer;
run a public-sector, health, education or legal website; already own a BI stack
and want measurement to feed it rather than compete with it; want to ask an AI
assistant about your traffic without handing it visitor-level data; or want to
explain your entire analytics data model on one page.

Likely no if you need unique-visitor counts, funnels, session replay,
heatmaps or marketing attribution. Established tools such as Matomo and
Plausible will serve you better, and AGGREGATE is not trying to win that
comparison.

Where Subschema helps

AGGREGATE is open source and designed to be installed and operated by your own
team. When the measurement decision carries regulatory or reputational weight,
our advisory practice can help.

  • Measurement governance. Decide what to collect, which goals and campaign
    properties to allow without consent, and which disclosure thresholds suit
    low-traffic or sensitive sites.
  • Reporting and AI access review. Define read-only grants, approved views
    and assistant guardrails, so every consumer of the data receives the same
    protection.
  • Implementation assurance. Verify the deployment, consent-manager wiring
    and reporting contracts before live traffic, and document them for your
    privacy office.

Request a consultation

Status and next steps

AGGREGATE is in public beta. The current release is Beta v2026.10.12. Start
with a disposable installation and synthetic events, and review the known
limitations before using it with live traffic. No independent security or
privacy audit is claimed.

Download the latest release ZIP