The meter count: where it lives, what it counts and who can reset it
In short
A metered paywall counts articles by making 4 independent decisions: which events count as a view, where the running count is stored, when it resets, and which pages are exempt from it. The free-article number everyone argues about is the least consequential of the 4, and the storage decision is the one that determines whether your CDN can still cache anything.
Key takeaways
- The meter is 4 decisions, not a number: countable event, storage location, reset window and exemption list.
- Where the count lives decides your caching story — a count read on the server puts every article render behind a lookup.
- A calendar reset gives every reader the same free allowance on the 1st; a rolling window spreads the load and removes the month-start spike.
- An exemption you cannot express in the cache key is not an exemption, it is a cache miss on your highest-traffic pages.
A meter is a counting policy, and the policy has 4 independent parts: what counts as a view, where the count is stored, when it resets, and what is exempt. Teams usually decide only the first part on purpose — 5 articles a month, agreed in a meeting — and inherit the other 3 from whichever vendor script or edge function got there first.
That is expensive. The 3 inherited decisions determine whether the meter is enforceable, whether the site is cacheable, and whether the subscriptions dashboard means anything. How easily a reader can wipe the count is a separate trade with its own threshold, worked through in the meter resets in a private window.
What counts as a view, and the events that must not
The countable event has to be defined tightly enough that 2 engineers implement it the same way. "A page view" is not tight enough. A returning reader opening the same story 4 times in a morning has consumed 1 article; a reader who bounced in 3 seconds has arguably consumed none.
- Count article renders, not requests. A prefetch, a bot, a feed reader and a link preview all generate requests and none of them is a reader.
- Deduplicate by story, not by URL. Query strings, AMP variants, syndicated copies and a canonical that changed after a headline edit are 1 article to the reader and 4 keys to a naive counter.
- Decide what a video play is worth before video sits behind the same meter — the video side also has its own publishing prerequisites, including the cue sheet without which video cannot publish.
- Never count a story the reader was entitled to anyway. Whether a subscriber in grace after a failed payment falls back to the meter belongs to dunning as a state machine, not to the counter.
Where the count is stored, and what each location costs
| Where the count lives | What it buys | What it costs |
|---|---|---|
| Browser storage — a first-party cookie or local storage written by script | No infrastructure, full page cacheability, works for anonymous readers | Cleared by a private window, a second device or ordinary privacy hygiene, and invisible to your reporting |
| Edge — counted in the CDN worker against a signed cookie | Survives client-side clearing, keeps the decision next to the cache, 1 place to change policy | The cache key gains a meter dimension, so the object is stored per bucket rather than once; still device-scoped |
| Identity — counted server-side against a resolved reader id | Follows the reader across devices, feeds reporting, cannot be wiped by clearing a browser | Needs a registration step first, and puts a lookup in the path of every article render |
Most publishers land on a hybrid: browser storage while anonymous, identity-bound counting once a reader signs in. That is a reasonable place to be, and it is why the identity gate is a separate mechanism with its own success metric — the registration wall is not a cheap paywall.
The reset window: the 1st of the month, or 30 days from first read
A calendar reset hands every reader a fresh allowance at the same instant. It is easy to explain and produces a visible pattern: free reading in the first days of the month, conversion prompts in the last. A rolling window — 30 days from each reader's first counted article — spreads both across the calendar and is harder to game, at the cost of a support conversation that is harder to have.
Two details decide more than the choice itself. A calendar month has to reset in 1 stated timezone, and readers elsewhere will notice on the 1st. And a meter that resumes an old count when a lapsed subscriber returns treats a former customer worse than a stranger, which is rarely what anyone intended.
Exemptions are the part that reaches the CDN
Every exemption is a rule about which requests skip the counter: section fronts, live blogs during a major event, public-safety stories, newsletter clicks, referrals from search or social. Each is defensible. Each also has to be evaluated somewhere, and where it is evaluated decides what you can cache.
| Exemption | Keyed off | Caching consequence |
|---|---|---|
| Section, story type or age | A content attribute known at publish time | None. It is a property of the object and can be baked into the cached variant |
| Newsletter or campaign click | A query parameter on the inbound link | One extra variant per value, unless the parameter is stripped at the edge and turned into a short-lived cookie |
| Search or social referral | The referrer header, which is often absent | A dimension the cache cannot see reliably, so the fallback path is what readers actually get |
| Breaking-news override | An editorial flag toggled during an incident | Fine if the flag purges by surrogate key; painful if lifting it means purging the whole site |
That last row bites during an incident, and it is a cache-invalidation problem rather than a paywall one — surrogate keys and purging one story, not the site covers the mechanism. One more warning on referrals: a missing referrer is normal, not an attack, and a meter that reads absence as evasion will meter people arriving from your own newsletter.
Telling search engines the page is gated, without cloaking
A meter means crawlers and readers can legitimately see different renders of the same URL, which is the shape of cloaking. Google documents structured-data properties for paywalled content precisely to distinguish the 2: an `isAccessibleForFree` boolean, and a `hasPart` block of type `WebPageElement` carrying a `cssSelector` that points at the gated section, where only class selectors are permitted. Confirm the current requirements in Google's own paywalled-content documentation before shipping, because that markup is what your degraded render depends on.
The consequence for the meter is that the gated section must be a stable, selectable element — a front-end constraint agreed before the counting logic is built. Retrofitting it is how a paywall project acquires a second phase. Building the render, the counter and the access check as 1 coherent piece is product build work, not a plugin choice.
The free-article number is a marketing decision anyone can change in an afternoon. Where the count lives is an architecture decision that sets what the site can cache for the next 5 years.
Write the 4 decisions down as a policy table, with the owner of each, before anyone writes the counter. The rest of this silo sits under paywalls, subscriptions and entitlements, inside our media and publishing practice.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
How does a metered paywall know how many articles I have read?
It keeps a count somewhere and increments it when a page it considers countable renders. That count usually sits in browser storage for anonymous readers, in the CDN edge against a device identifier, or server-side against a signed-in reader id. Each location behaves differently when you switch device or clear storage, which is why the same publisher can seem to count you twice or not at all.
Should the meter count be stored in the entitlement record?
No. An entitlement is a grant of access with a subject, a scope and a window; a meter count is a running total attached to a device or a session. Merging them forces you to create a grant row for every anonymous reader on the internet, and it puts a mutable counter inside the record your access decisions depend on.
Is a calendar month or a rolling window better for the reset?
A rolling window is usually better operationally and a calendar month is easier to explain. Calendar resets concentrate free reading at the start of the month and conversion pressure at the end; a rolling 30 days from each reader's first counted article spreads both out. If acquisition campaigns are planned monthly, the calendar reset at least lines the 2 up.
Does exempting search referrals require serving Google something different?
It means the same URL can render differently for different visitors, which is why structured-data markup for paywalled content exists — it tells search engines the gate is deliberate rather than cloaking. Referrer headers are missing often enough that the exemption cannot be the main path, so design what a reader sees when the header is absent.
- paywall
- metering
- caching
- publishing
The work behind this page
Builds from our portfolio that this page draws on.
Churn Radar
An AI customer-success platform that flags at-risk B2B accounts before they churn and prescribes the save-play to run.
Customer SuccessAskVault
An AI internal knowledge-search platform that answers employee questions from your own docs — grounded in citations, with knowledge gaps surfaced and deflection tracked.
Productivity AIRead next
- The meter resets for anyone who opens a private windowA meter stored in the browser can be cleared by the browser. Measure the leak first, then decide whether identity-bound counting is worth what it costs.diagnostic
- The registration wall is not a cheap paywallA regwall trades content for a durable identity. Judged on revenue it always looks like a weak paywall; judged on known-reader coverage it is a different instrument entirely.definition
- Dunning as a state machine: retries, grace and when access stopsDunning is not a sequence of emails. It is a state machine, and every state must be written into the entitlement record so access, messaging and reporting cannot drift.definition
- Paying subscribers are hitting the wall, and only on the popular storiesThe symptom tracks popularity because the hit ratio is the exposure: the more cacheable a story is, the more likely a subscriber gets served the anonymous copy of it.diagnostic
- Renewals that never reached the access systemCount the gap between what the provider sent and what you processed. Its size and shape separate delivery loss from processing loss, and only one of them is fixed by a better handler.diagnostic
- The app says subscribed, the site says notCross-surface disagreement is three causes wearing one complaint: two identities, two authorities, or two caches. Resolving the identifier on each surface eliminates the first in minutes.diagnostic
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation