Changelog

What is new in Quiet Metrics, release by release: platform, SDKs and integrations.

1.5.0 4 September 2026

Your account's home screen no longer talks about your subscription. It talks about your sites, and answers the question you actually open it with: which one moved?

One board, one row per site

The home screen used to show your plan, your usage, your number of sites and your number of seats, then two charts adding all your sites together, then your five busiest. Finding the one that had dropped meant opening them one by one.

It now carries every site, one per row, with its traffic over the last seven days, the change against the seven before, and the date it last measured anything. The sort puts the steepest drop first.

A site that has stopped reporting comes before everything else, and says so in plain words. It is the only failure we can be certain about, and the one you can fix: a tracker removed during a redesign, a changed key, a disabled plugin. Until now it looked like a site without visitors.

Only a drop gets colour. A rise stays grey: it is not something to act on, and colouring it would make the whole screen stand out, which means nothing would.

A change, or the reason there isn't one

Below twenty visitors in the previous week, no percentage is shown. Four visitors dropping to two is not a fifty per cent fall, and such a figure would place that site ahead of a real drop. The screen says why it computes nothing, rather than showing a number that means nothing.

A site created this week has no previous week: it says so too, instead of announcing infinite growth.

The method is written next to the figures

The board counts its days in the application's timezone, while a site's statistics count in that site's own timezone. A list comparing several sites cannot have a different day on every row. The gap between the two screens can therefore be one day, and this is now written where the figures appear.

When your data is sampled, the column concerned says so in its own heading. The warning no longer leaves the top of the page while you scroll through the numbers it qualifies.

Your usage stays visible everywhere

The four billing tiles move to the Subscription page, where they belong. Your monthly usage stays visible at all times in the top bar, on every page: going over should not be an end-of-month discovery.

Readability and screen readers

Several light-theme texts were too pale, including the indicator values themselves. They are fixed and checked in both themes.

One hundred and five labels meant for screen readers announced a technical identifier instead of a sentence, including the very first element reachable by keyboard on every page. They are translated.

1.4.2 September 2, 2026

Another release with no screen, and again about accuracy. The addresses of your longest pages stop being hidden, and you can now turn down a referrer that is not one.

Your long page addresses get their name back

Collected addresses go through a scrub that replaces anything looking like personal data: an email address, a session identifier, a token. The rule that recognised tokens was too broad. It treated as a token any slightly long segment containing a hyphen, which is exactly the shape of your article addresses.

Your long-tail pages, the ones carrying a full title in their address, were therefore grouped under a truncated name instead of appearing one by one. Those are precisely the ones Search Console reports separately, so reconciling the two tools was impossible where it mattered most to you.

The rule now rests on what really separates a token from a run of words: the length of its stretches without a hyphen or underscore. Email addresses, identifiers and tokens are still scrubbed as before.

Pages already recorded under their truncated name cannot be restored: the original address was never kept, which is the whole point of this scrub. The fix applies from now on.

Turning down a referrer that is not one

The header announcing where a visitor comes from is declarative: anyone can claim an origin they never had, and some do it in series so that their domain shows up in your statistics.

Your site settings now hold a list of blocked referrers. A domain you put there also covers its subdomains, and no hit claiming to come from it is counted, neither as a pageview nor as a visitor. As with robots and excluded paths, these hits are not drawn from your plan.

1.4.1 September 2, 2026

A release with no screen, entirely about what your numbers count. Two kinds of visitors that were never visitors leave the measurement, and a site tracked on several domains no longer names itself as a source.

Two fewer robots among your visitors

Bot filtering relies on the device-detector library, extended in August to reject command-line tools and unreadable agents. Two families still slipped through, and only on sites tracked server-side: the script never saw them, since these clients run no JavaScript.

  • Headless browsers. Chrome driven by an automaton (puppeteer, Playwright, the uptime monitors that embed them) presents itself as an ordinary browser but for one detail, and device-detector files it among browsers. It is now excluded.
  • Link previews from messaging apps. When you share a page on WhatsApp, Signal or Viber, the app fetches it to display a preview, with an agent bearing its name. Each share added a page view and a visitor, as "direct", with "WhatsApp" in the browsers column. The person who then opens the link is still counted: they read the page in a real browser.

If your site is tracked by the PHP SDK, the Laravel bridge, the Symfony bundle or the WordPress plugin in server mode, your visitors may dip slightly from today. That is the measurement getting closer to reality, not your audience shrinking.

A site on several domains no longer names itself as a source

A site declared with a primary domain and secondary domains is browsed from one to the other. A visit that began with that crossing attributed the session to a "referral" coming from your own secondary domain. All of the site's declared domains are now treated as internal navigation, as subdomains already were.

1.4.0 August 31, 2026

A release that opens the account to people other than you. Until now a Quiet Metrics account had a single pair of eyes. It now holds several, with distinct rights and a way out at both ends.

Your team joins the account

You invite someone by email address, they get a link, they join your account. What they see there depends on their role.

A viewer reads the statistics and nothing else: not the billing, not the account settings. A manager can also create and edit your sites.

The number of seats follows the plan, yours included. Solo stays a one seat account. Pro opens three, so two guests. Agency does not count them, and it is the only plan that delegates the manager role: elsewhere the seats remain and their rights fall back to reading. The screen says so rather than hiding it, so you never believe you invited a manager who is not one.

A guest who had no account yet now follows their own sign-up path. They used to hit a login screen asking for a password they had never chosen.

What happens when your plan shrinks

Moving from Agency back to Pro left a question unanswered: what becomes of the extra seats ?

They freeze, they do not vanish. Seats beyond the new plan's limit lose access and keep their existence, ready to reopen if you move back up. Only you are notified, and the notice names the people about to lose access rather than announcing a number.

White label no longer leaks into emails

Agency and Ambassador accounts dress the product in their own colors. That dressing stopped at the door of emails: a message sent to an agency's client could carry "Quiet Metrics" in its signature or in its text version, right under a header bearing the agency's brand. Every email surface now goes through a single source of brand.

Real time finally speaks at low traffic

The minute by minute chart assumed a rhythm. On a site with three pageviews in thirty minutes it drew twenty-seven empty slots and three isolated spikes: the screen suggested nothing was being measured.

Below ten pageviews over the window, the bars give way to the latest visits with their timestamps, which is the information you are after at that volume. The chart now displays its own numeric summary, which was locked inside the label meant for screen readers. It carries three time markers instead of two, and a minute without a pageview gets a hairline: silence and absence of measurement no longer read the same.

What you cannot see, and what it costs

Three fixes with no screen.

Email verification and password reset links could arrive already expired. Their validity counted down from the moment they entered the queue rather than from the moment they were sent, so a worker restarting late delivered a normal looking message whose link answered "invalid link". Both durations are three hours and are now held by a test.

A payment failure notice was lost when the Stripe portal did not answer. It is kept.

Monitoring went quiet when it failed to send its alert, which is the worst possible moment to go quiet.

1.3.0 29 August 2026

A release devoted to the screen you open most: statistics. It carried thirteen cards of identical width, a row of controls that wrapped, and several places where missing data read like a breakdown.

Controls now fit in two rows

Picking a period went through eight buttons in a row. It is now a menu carrying the current period, and the row it frees up goes to filters.

Filters can finally be read. They showed one chip per value, each repeating the dimension name: three filtered pages gave three "Page" chips, unreadable exactly when you are narrowing down. One chip per dimension now, naming its first value and counting the rest. Clicking it reopens the window on that dimension, values ticked, to add or remove.

Rankings group by question

The thirteen cards group into five families: pages, acquisition, countries and languages, devices, events. Each family fits in one card, with tabs to move between dimensions.

Two dimensions surface along the way. Regions and operating systems have always been measured, exportable as CSV and readable through the API, but no card ever displayed them.

The grid moves to six columns and each card takes the width its content asks for: a list of paths does not have the same needs as a list of four devices.

Two more screens

Real time answers "what is happening now": visitors over the last five minutes, the pace of the last thirty minutes minute by minute, and what those people are reading. The screen updates on its own.

Pages is the full table the dashboard only showed eight rows of. Sorting on every column, search by path, pagination, share of views, exit rate, and two filters: the page role and a views threshold to set the long tail aside.

Comparison now shows on the chart

The control was called "Compare" and only compared six figures. The previous period now overlays the audience chart, dashed.

When there is nothing, the screen says it better

"No data for this period" under a Source tab does not tell you those values come from links you have to tag yourself: you read a breakdown where there is only untagged traffic. Each family now explains its own emptiness.

Exit pages are the clearest example. An exit is only known once the visit is over: they are computed every night, and today's do not exist yet. The tab now says so instead of staying empty. And a missed night of computation, which used to leave a permanent gap, can now be caught up.

The shared dashboard follows

The whole reorganisation applies to the dashboard you share by link too: families, tabs, grid, empty states, regions and operating systems.

One defect is fixed there, one that only showed up for an agency's client. On a password-protected dashboard, applying a filter broke the signed link and sent the reader back to "this link has expired". A share without a password was never affected, which is why it lived so long.

More latitude in white label

Agency and Ambassador accounts can now give the shared dashboard a title of their choosing instead of the site's technical name, an introduction line under it, a footer note, and hide the families their client has no use for.

The method statement never goes away: it is not a branding element but the ground of what the product claims.

1.2.0 August 23, 2026

A release mostly about what you read and sign, rather than about measurement itself.

Contractual documents in three languages

The seven legal documents now exist in French, English and Spanish. Five were French only: Terms of Use, Terms of Sale, DPA, legal notice and the withdrawal form. The fallback worked, and that is exactly what made the gap painless: an English-speaking tester was accepting terms they could only read in a language that is not theirs.

French remains the only authoritative version, as the contract is governed by French law. Each translation carries the fingerprint of its source and withdraws itself as soon as the French text moves without it: you will never read a stale translation without being told.

Three presentation defects were fixed along the way. Translated documents now show their update date, which was missing. A paragraph left in French in the middle of the English and Spanish Terms of Sale is translated. And the corpus index lists titles in the language you are reading.

The email summary is set per site

The "weekly report" field becomes a three-value cadence: none, weekly or monthly. You choose it site by site, in the site settings. Existing sites stay weekly, as before.

The monthly report was missing while the offer announced it. Branding it with your own colours still depends on your plan and has not changed.

Custom date ranges, everywhere

The signed-in dashboard and the CSV export already accepted a chosen date range. The shared dashboard and the read API only knew preset periods and silently fell back to thirty days. All four surfaces now answer the same way.

Validation messages in your language

A visitor who left a field empty on the contact form read validation.required. Not an English message: the raw key. That was true of every validation message in the product. They are now translated into French, English and Spanish, pagination and password messages included.

Elsewhere on the site

A page comparing Google Analytics alternatives, then one page per tool for Matomo, Plausible, Fathom, SimpleStats and Ranetrace. Each says what the other does better, carries the date it was checked and cites its sources.

Finally, the preview shown when you share a link to the site is now in your language. It used to be in English for everyone.

1.1.0 July 22, 2026

Two changes visible in your dashboards and in your exports.

Retention aligned with your plan

Your plan's retention period (6, 13 or 25 months depending on the plan) now applies to raw data and aggregates alike. Previously, only detailed events were purged. The terms of sale and the DPA have been updated accordingly.

In practice: beyond your plan's retention, dashboards no longer go back any further. Within it, nothing changes. CSV export and the read API remain available at any time over your plan's full depth.

An "(other)" row beyond the daily cap

Each site measures a bounded number of distinct values per day and per dimension (pages, sources, campaigns, events). Beyond that cap, further values are counted together under the (other) label: the detail is grouped, no visit is lost and your totals remain exact.

  • The table concerned carries a note stating the threshold reached, the number of days involved and the number of grouped values.
  • That number is only known after the nightly rebuild, which revisits a day up to two days later: until then, the note says so rather than showing a misleading zero.
  • The read API reports the same state in the capped key of /breakdown, and the CSV export in the X-Cardinality-Capped header (see the API documentation).
  • The weekly e-mail report carries the same note under the rankings concerned.

This cap can be raised for your site: write to support.

1.0.0 July 17, 2026

First complete release of Quiet Metrics, opened as a private beta.

Platform

  • Collection with no identification or tracking cookies: qm.js script (under 4 KB compressed), fallback pixel, signed server-side tracking (HMAC), deduplication of near-simultaneous hits.
  • One-page dashboard: visitors, page views, sessions, bounce rate, duration, top pages, sources, campaigns, countries and regions, devices, languages, events, real time (5 minutes), click-to-filter.
  • Goals and conversions (by page with wildcards, or by exact event), weekly e-mail reports, CSV exports, read API (Bearer).
  • Public dashboards by link, white label for the Agency plan.
  • Transparent quotas: grace zone up to 1.2×, alerts at 80% and 100%, never a silent loss.
  • Trilingual public site (English, French, Spanish): documentation, complete legal pages, sitemap, llms.txt.

SDKs and integrations

  • Pure PHP SDK (quiet-metrics/php-metrics): PHP 7.4+, zero dependencies, non-blocking sends, signed mode, single-file first-party proxy.
  • Laravel bridge (quiet-metrics/laravel-metrics): automatic pageview middleware, facade, publishable configuration.
  • Symfony bundle (quiet-metrics/symfony-metrics): pageviews on kernel.terminate, semantic configuration.
  • WordPress plugin: first-party script mode (REST relay), unblockable server mode, role and path exclusions, PHP and JS events.
  • JavaScript tracker: SPA navigation (pushState), outbound clicks, custom events, kill switch.