Blur-mangle Strategy
Sticky bottom bar over blurred content
Blur-mangle gating with an always-sticky bottom-bar paywall — the unlock CTA stays on screen no matter where the reader scrolls.
The fastest way to validate paid content demand before moving access control to a backend or edge layer — the premium part is blurred and mangled, and the paywall bar never leaves the bottom of the viewport.
Developer Kit
Source on GitHub | gvm.js documentation
Sticky bottom-bar + blur-mangle snippet
<!-- 1) Inject gvm.js SDK -->
<script src="https://esm.sh/@wdft/gvm-sdk@latest/gvm.js" type="module"></script>
<!-- 2) Initialize gvm on body -->
<body data-gvm data-gvm-tenant="your_tenant" data-gvm-env="qa" data-gvm-currency="PLN">
<!-- 3) Declare payment template (modal) -->
<template data-gvm-template="payment" data-gvm-template-inject-to="body">
<dialog open><button data-gvm-bind-send-sms>Open SMS</button></dialog>
</template>
<!-- 3b) Declare paywall as an always-sticky bottom bar -->
<template data-gvm-template="paywall" data-gvm-template-inject-to="#article">
<div class="paywall-bar">
<button data-gvm-bind-pay>Unlock for <span data-gvm-bind-price></span> <span data-gvm-bind-currency></span></button>
</div>
<style>
.paywall-bar { position: fixed; left:0; right:0; bottom:0; }
</style>
</template>
<!-- 4) Declare payment item/content -->
<div id="article" data-gvm-reference="article-42" data-gvm-price="0.75"
data-gvm-template-name="payment" data-gvm-hide-template-name="paywall"
data-gvm-hide-strategy="mangle-blur" data-gvm-hide-sections="2">...</div>
</body>
The ledger lived in a drawer under the cash box, and for forty years that was the entire system. When the printer's bill arrived, the editor drew a line and counted out the year; when a reader wrote asking about an old story, one of the three journalists walked down to the cellar and found the bound volume by hand.
Then the cellar became a server, and the server got an invoice of its own. By 2024 the digital archive — 38,000 articles, every issue since 1976 — cost more to host each month than the paper earned from its entire online presence. The numbers were small enough to hurt: a few hundred złoty in ad revenue against a hosting bill three times that size.
The obvious answers were the ones the paper had already tried and rejected. A full annual subscription had stalled at a few hundred members. A newsstand-only model ignored the readers who no longer lived in town — the diaspora of people who had grown up with the Kurier and wanted the town's news, once a week, without buying a bundle they would never finish.
In December, over coffee, the editor and the two remaining reporters made a list of what the archive held that nobody else did: the 1987 river flood, the school strike, the mill closure, the result of every local football season since 1979. “People don't want all of it,” the editor said. “They want their piece of it.”
So they ran the smallest possible experiment. The most-requested stories went behind a single-article paywall: price, one złoty ninety-nine; term, forever — once bought, always readable. The checkout was one button and a phone number.
The second week, the local radio called. The third week, a reader in London bought the 1987 flood story twice — once for herself, once, by mistake, for her brother. The numbers were not yet a business. But for the first time in years, someone was paying for the past.
The purchase records turned out to be the real discovery. Readers were not buying the front pages — the things the paper still published every week. They were buying the gaps: the issues missing from the bound volumes, the stories that had later been corrected, the five weeks during the mill strike when the paper had almost gone under and stopped printing altogether.
That was the archive doing work the paper had never understood it was doing. It was not a library of old news; it was the town's only complete record of itself. A woman in Hamburg found her father's obituary and paid for it before she had finished reading the preview. A schoolteacher bought the 1984 spelling contest three times, for three former pupils.
The economics were unglamorous and, for once, stable. Within six months the archive averaged eleven purchases a day, spread across 340 different articles. A third of buyers came back within the month for a second story. The hosting invoice stopped being a crisis and became a line item the paper could plan around.
The harder question was workflow. Nobody wanted to build a subscriptions desk for a staff of three, so they did nothing of the kind. The archive ran itself: a story was marked for single-article access the day it was published, and the same price point applied to everything, old or new. The editor kept a single rule taped above the desk — “one honest price, no renewals.”
They also started marking new stories that they suspected would age well — the history pieces, the investigations, the long profiles — because the data showed readers were far more willing to pay for a story with a second life than for yesterday's news. The present was free. The past had a price.
A year later the archive was paying for itself, and a little more. The editor framed the first quarterly report and hung it beside the bound volumes in the cellar. Under the numbers, in a hand that had set headlines for four decades, she had written a single line: “The town has started buying its own memory back.”