Skip to content

Changelog

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

1.13.0 28 September 2026

The health of your sites joins their audience: an SEO tab, and a home page that answers one question first, does anything need your attention?

A new tab: SEO

Quiet Metrics now visits the pages of your sites the way a search engine would, with its own robot, QuietMetricsBot. It respects your robots.txt, visits one page per second and keeps no HTML. It records error responses and redirects, missing or duplicate titles, descriptions and H1 headings, canonical tags, pages excluded from search engines, broken internal links and the consistency of your sitemap. Its visits do not count in your statistics.

The robot only visits sites that have allowed it: nobody can have someone else's site analysed by declaring it as their own. With a Quiet Metrics SDK, allowing it takes one environment variable, QUIET_METRICS_SEO_CRAWL=true, next to the site's secret key; without an SDK, a file to upload, shown in the SEO tab. Without it, nothing is visited.

Ranked by your real traffic

Each issue is ranked by the views, the landings from search engines and the conversions of the page concerned: a broken link on your most-read page comes before the same link on a forgotten page. Each site gets a health score, a "Fix first" list, a log of what changed from one analysis to the next and the list of pages whose traffic has dropped three months in a row. An issue you choose to ignore stays ignored in later analyses.

The SEO tab opens on a dashboard of all your sites. Analyses run on their own, at the pace of your plan, and you can relaunch one by hand. The documentation details what the robot checks, what it keeps and how to keep it away from part of your site.

What only your traffic reveals

Because Quiet Metrics also measures your audience, the SEO tab flags what a robot alone cannot see: a widely read page poorly linked from the rest of the site, a possibly orphan page, content without a visit for six months, a widely read page that converts clearly less than the others, traffic on addresses the robot does not know. It also checks structured data, images without alternative text, language versions, slow responses, identical or very similar content and pages buried too deep.

The changes log shows, next to each change, landings from search engines before and after. Each issue keeps its history, you can remove whole paths from the crawl, and the Pro and Agency plans are analysed every day.

An SEO report by email

A new account menu, "Email reports", gathers the reports of all your sites: the audience summary and, new, an SEO report, each weekly, monthly or off, site by site. The SEO report gives health and its trend, issues that appeared and were fixed, the latest changes and declining pages; if the analysis was refused for lack of permission, it says so. Every report now carries a link to stop receiving it.

SEO health in your AI assistant

The MCP server gains three read-only tools: a site's SEO summary, its issues from most to least urgent, and the changes log.

A home for all your sites

The customer area now opens on "Home". Each of your sites fits on one line, with the visitors of the last seven days, the change from the previous week, the health score, the critical issues and the latest measurement. Under the title, a sentence says how many sites need your attention, on the audience side as on the health side, or that none does. The five issues to fix first, across all sites, follow the table.

"Sites" becomes "Metrics"

The "Sites" entry is now called "Metrics". It opens the same audience overview, charts included, and stays lit on every page of a site. The pages of a site have not changed.

1.12.0 25 September 2026

A customer area that is simpler to find your way around, and that finally looks like the site.

One entry: Sites

The top bar carried "Dashboard", "Sites" and an "Account" menu, and the first two led to the same sites. It now carries only "Sites", which opens the overview of your sites. The list where you add, configure and delete a site is now called "Manage sites" and opens from that overview.

Your account in the avatar menu

Profile, subscription, API tokens, members, white label, theme and language now sit together in the menu behind your avatar. The profile keeps the top bar: you no longer leave it through "Cancel".

A site's pages as tabs

Statistics, real time, pages, goals, installation and settings are tabs under the site name, no longer a column on the left. The site name stays as the title from one tab to the next, and statistics use the full width of the screen. Period, comparison and filters fit on a single line.

The same design as the site

Pill buttons, a bottle green primary button, rounder cards, pill-shaped tabs: the customer area and the shared dashboard now follow the public site's design. The shared dashboard keeps your white label accent colour, and the White-label page now shows that colour instead of its code alone.

Plainer words

The word "hit" leaves the customer area, the emails, the home page, the pricing page, the comparison pages and the documentation: we now speak of pageviews, visits, requests and data received and, for the quota, of events, the word used in the terms of sale and on the Subscription page. The Real time cards now share the design of the statistics cards.

1.11.0 24 September 2026

A release that barely shows, and that is the point.

French typography, at last

French puts a space before colons, semicolons, exclamation and question marks, and inside quotation marks. That space must not break, or the punctuation can fall alone onto the next line. None of them was protected: on one section of the French home page, a colon ended up alone at the start of a line. Every French page, the documentation, the changelog, the legal documents, the customer area and the emails now use the narrow no-break space. Other languages are unchanged.

1.10.1 24 September 2026

A fix for the two nights of the year when the clocks change.

The hourly curve now follows the real length of the day

A day is not always 24 hours long: the night the clocks go back has 25, the night they go forward has 23. The hour-by-hour curve of these two days was wrong. On the day the clocks went back, the 11 pm bar was missing and the midnight bar also carried its visits; on the day they went forward, the curve spilled one hour into the next day. It now carries one bar per hour actually lived: 25 on the day the clocks go back, with the repeated hour shown twice, and 23 on the day they go forward.

For developers

GET /timeseries and the MCP server's get-timeseries tool therefore return 23, 24 or 25 hourly points depending on the day. If your code relies on 24 points, it needs a second look. On the night the clocks go back, two consecutive points carry the same hour: tell them apart by their position, not by their label.

1.10.0 24 September 2026

A release about what leaves your site. Quiet Metrics already kept only the page path, four campaign parameters and the referrer's domain. The rest still reached us before being thrown away. It no longer leaves.

Only what we read leaves your site

The script, and the PHP, Laravel, Symfony and WordPress integrations from their version 0.5.0, reduce the page address to its origin, its path and the utm_source, utm_medium, utm_campaign and ref parameters. The referrer is reduced to its origin. A form submitted with GET, a token or an email address in the URL stays with you. No figure changes: this data was already discarded on arrival.

Outbound links and downloads lose their query string

The address of an outbound link or a download was stored in full with the event. It now keeps only its origin and path, in the script and on arrival, for copies of the script that are not up to date yet.

For developers

The Laravel SDK offers QuietMetrics::fake(), which replaces the client with a fake in your tests and checks what you send: assertEventSent(), assertPageviewSent(), assertNothingSent(). The PHP SDK exposes the QuietMetrics\Tracker interface, which makes the client replaceable under Symfony too. And with Laravel, an error page raised before your controller, such as a missing model, now sets its visit cookie along with its pageview.

1.9.1 19 September 2026

A release without a screen, for your AI assistant. We had it answer real questions about our own sites, and it went wrong where a person would have gone wrong too, for lack of context. It now gets that context.

A tightened filter is no longer an audience drop

When a bot filter tightens, your visitors drop overnight, and history is not recalculated. You read it in this changelog; your assistant only saw the curve, and announced lost audience. Every answer now tells it about the changes in how we count that happened during the period it reads, and it is asked to mention them before calling anything a trend.

The list of your sites also gives the first day each one was measured: before that day, a zero means "not measured yet", not "no visitors".

"No page not found" no longer passes for good news

Pages not found are measured through an event your site sends. Without it, your assistant got an empty list and presented it as the absence of errors. The answer now says whether your site sends its 404 errors, so that an empty list is read as "not measured" when that is the case.

Two reading details

Today's curve stops at the current hour instead of showing zeros for the hours still to come. And page paths where a part was replaced by ~, because it looked like personal data, are now explained to the assistant.

The read API refuses a filter it cannot apply

A filter on a dimension that does not accept one, such as entry or exit pages, or on a misspelled dimension name, used to be ignored silently: the API answered with unfiltered numbers, while its response still showed the requested filter. It now answers with a 422 error naming the refused dimension, and the filters field of the response only lists the filters actually applied. A call that sent such a filter used to get wrong numbers; it now gets an error.

1.9.0 17 September 2026

This release opens an MCP server: your AI assistant can now read your statistics, with your consent, without being able to change anything.

Your statistics in your AI assistant

Claude, ChatGPT, Cursor, VS Code and Claude Code can connect to Quiet Metrics and answer questions such as "which sites lost visitors this week?". You connect with your usual account: you authorise the assistant on a page listing the sites it will be able to read, and you remove that access whenever you want from the Connected apps page.

The assistant only reads aggregated results: key metrics, curves, rankings, visitors online and pages not found. It sees no individual visit and changes nothing. With filters, any figure computed from fewer than 5 visitors (or, in a ranking, any row below 5) is hidden, to limit the risk of singling out a visit. The results it asks for are sent to the provider of the assistant you chose.

The MCP server is included in the Pro and Agency plans, the beta and the trial. The "Connect an AI assistant" documentation page explains how to connect each tool.

Your members' access

Your team members do not have access to the MCP server by default. From the Members page, you turn it on or off for each of them, and removing it takes effect immediately.

1.8.0 15 September 2026

This release fixes background server events, aligns pageview rules across integrations and adds a diagnostic explaining what is counted or excluded.

Server events without a browser are preserved

A background event may have neither a browser nor a language. Our filter could reject it despite a valid signature. These events are now accepted, and an explicitly absent browser identity is no longer replaced with that of the HTTP software carrying the request.

This fix applies to signed server events. Pageviews and script events remain subject to browser and language filtering. Previously rejected events cannot be recovered.

A shared definition of pageviews

Version 0.4.0 of the server integrations counts rendered HTML documents, including 404 and 500 error pages, like the JavaScript tracker. PDFs, JSON responses, downloads, redirects and empty responses are excluded. The Laravel middleware could previously count some of these documents.

Counts may change after upgrading: some documents are removed from measurement and HTML error pages are included. Historical data is unchanged. A page served entirely from cache without executing PHP remains outside server tracking's reach.

Separate 404 events are optional: enable track_404 in Laravel or Symfony, or “Pages introuvables” in WordPress. Each 404 then adds an event alongside its pageview and consumes quota. The option is off by default. Enable it either server-side or with the script's data-404 on a given page to avoid duplicate events.

Understand exclusions

A “Collection quality” panel in each site's statistics separates counted pageviews and events, recorded rejections by reason, and events dropped after exceeding the quota. It follows the selected period and the site's timezone, regardless of audience filters.

It does not claim to count all incoming requests: exclusions made on your site and refusals before processing, such as invalid keys, are not included. Past rejections are not reconstructed.

Observed duration, explained

The average duration help now explains that it measures the time between a session's first and last event, including pageviews. A single-event session counts as zero seconds; reading time after the last event is unknown. No additional periodic signal is sent.

Package versions

The PHP SDK, Laravel bridge, Symfony bundle and WordPress plugin move to 0.4.0. Laravel and Symfony require PHP SDK ^0.4; WordPress bundles it. The JavaScript tracker keeps its version. The WordPress JavaScript relay remains unavailable; this release concerns server mode.

A clearer dashboard

The live strip is more compact, with a link to its detailed screen. Visitors, pageviews and sessions keep their sparklines; bounce rate, duration and events use the same Filament cards, with matching backgrounds, outlines and typography without sparklines, even when events are counted. Their values and the event comparison remain visible. The audience chart appears before the collection diagnostic.

Recorded rejections and over-quota counts remain visible when the diagnostic is collapsed. Only exceeding quota receives a warning color: normal filtering is not shown as an incident.

A single-category breakdown shows its label, 100% and its volume without a large ring. Charts remain when several categories are represented.

Find the 404s to fix

The “Page not found (404)” table shows the ten most reported paths, their occurrences and the change in event count from the previous period. It follows dashboard dates and filters; turning comparison off hides changes.

It reads events named 404, grouped by their normalized URL path, within retained history. No results does not guarantee no errors: tracking must be enabled, and purged data is not reconstructed. “New” indicates no retained event in the previous period.

1.7.0 9 September 2026

Your numbers are going to drop, and that is the point. This release filters out a category of bots we could not see, and on the sites we measure ourselves it removes roughly a third of the pageviews and a quarter of the visitors. Nothing was lost: that traffic was not human.

The bots that posed as a browser

Until now our filter read one thing only: the identity a visitor declares, its user agent. That is enough for honest bots, which announce what they are, and for tools that make no attempt to hide. It is not remotely enough for a program that copies the identity of Chrome on Windows word for word.

Those went through, every one of them, and there are a lot of them.

We now look at something else: the language. A real browser always announces the language of the person using it, because it needs it to render pages correctly. A program that merely copies an identity almost never does. A visit that presents itself as Chrome yet never states its language is therefore not what it claims to be, and it is no longer counted.

A pageview with no declared identity at all is filtered for the same reason. Your conversions sent from your own server keep being counted: they have no browser behind them, and that is expected.

If you track your site from your server, with one of our SDKs, the drop will be more visible than if you use the script: server-side tracking sees all traffic, including everything that never runs JavaScript.

"UNK" was not an operating system

When our detector failed to recognise a visitor's system, it returned a technical code, "UNK", which we stored as though it were a name. Your dashboard therefore showed an operating system called "UNK", on a line separate from the genuinely unknown visitors: the same thing counted twice, under two labels.

The two lines are now one, and the counters from the old rows were added together rather than discarded.

What our "How we count" page says

It claimed that the public part of our site is served "without any cookie". We are preparing to measure our own site, from our server and without ever loading a script on your device, and that sentence deserved to be made precise before we needed it rather than after.

It now says what the product says everywhere else: without identification or tracking cookies. The only thing that can be written in your browser on our pages remains the refusal marker, which you set yourself by adding ?qm_ignore=1 to the address, and which exists solely to stop you being counted.

1.6.0 6 September 2026

Quiet Metrics opens without asking for permission. Registration is no longer an application: it opens a free account, right away, with no credit card and no manual approval.

A free offer, and a permanent one

The account you create measures your traffic and shows you its dashboard, with no time limit. This is not a trial that stops: there is nothing to cancel, and no date to watch.

It has bounds, and they are written down: a number of sites, a monthly volume of events and a retention period, all three on the pricing page. Conversion goals, CSV export and email reports stay with the paid plans. The rest of the product is the same from one account to the next: same measurement, same dashboard, same privacy commitments.

The beta is no longer a queue

Until now, registering during the private beta created a pending account, and a screen asked you to wait while someone reviewed your request. That screen is shown to nobody any more: you come in, you install the script, you see your first visitors.

Access to the Pro plan features during the beta still exists. It is simply no longer something you ask for: it is something we grant, by invitation, to an account that is already measuring.

What the pages say, and what the contract says

Article 2 of the terms of use now describes what registration actually does, and the public pages were revised along with it: several still announced access on approval, right next to the line that opened it to everyone. The legal corpus carries the date of this version.

Plan names are translated

The Agency plan showed as "Agence" on the English and Spanish pricing pages, while the home page said "Agency": two names for one plan, on two pages of the same site. Labels now come from the translations, on the pricing page as well as in your account.

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.