# Personalizing paywall prompts on a Storyblok-powered news site

Asked by Jamal Carter on 2026-04-22. Tags: storyblok, personalization, media, audiences.

I work on a news site running on Storyblok, and product wants heavier readers
to get a subscription prompt while casual visitors get a newsletter signup
instead.

Right now we do this with a client-side paywall script and honestly it looks
broken, the prompt pops in a second after the article renders and readers notice.

Before I rebuild this, how would you model the reader segments in Croct? "Heavy
reader" for us means something like more than 3 pages this session, or someone
who keeps coming back. and does the prompt still pop in late or can it render
with the page

## 1 answer

### Answer from smcgrath (2026-04-23)

We run almost exactly this setup on an editorial site, so I can answer both parts.

Segments first. Behavioral CQL covers your definitions directly:

```cql
session's stats' pageviews > 3
```

for the engaged-this-session readers, and

```cql
user is returning
```

for the habitual ones. You can combine them with OR in one audience or keep two
audiences with different prompts. If you want to catch people reading specific
sections, `user has viewed a page with path` conditions work too, we use that to
treat sports-only readers differently from news readers.

On the pop-in: that goes away because the mechanics are different. Content is
resolved server-side, so the prompt block that matches the visitor is already in
the initial HTML. There is no script deciding after render which prompt to
inject, the page arrives with the right one. Your Storyblok block stays the
default for visitors who match neither audience.

For what it is worth on the outcome side, Brazil Journal, a media outlet, saw a
93% lift in newsletter subscriptions with this kind of behavioral targeting. The
casual-reader-gets-newsletter split you described is pretty much the standard
playbook.
