Dynamic Paywalls in Pugpig Bolt
Table of Contents
We're always looking to develop Bolt's feature set to better support our diverse range of customers, and the varying commerical and content strategies they pursue. We're committed to ensuring you have the ability to engage your users or your terms, and giving you flexible tools to deepen and monetise that engagement.
As such, we've taken a big step in putting the power in your hands when it comes to content access. Pugpig Bolt now supports using an external decision engine to determine whether to show the paywall for a given piece of content. This gives you more control over who sees which content, while still relying on Bolt’s standard paywall and entitlement capabilities as a fallback.
How it works
When an anonymous (not signed in) user opens an article that is marked as paid:
- The app makes a request to a customer-managed endpoint.
- The endpoint returns a simple decision (for example, show_paywall: true or false).
- Based on the response:
- If true, the standard paywall is displayed over the content.
- If false, the paywall is not displayed and the user can read the article.
Because the request and subsequent decision happen after the content has started loading, there may be a short delay between the article appearing and the paywall being displayed. In practice this should be brief, but we’ll test this with your own endpoint performance in mind.
Metered paywall banner behaviour
When your endpoint returns a “do not show paywall” decision for a paid article, you can optionally still show the metered paywall banner at the top of the content. This lets you signal that the content is usually paid, even if the user has been allowed through for this article.
A few important points:
- The metered banner in this mode won’t include the standard “X articles remaining” messaging.
- To keep things predictable and avoid conflicting experiences, you cannot use dynamic metering and the existing standard metering at the same time. If you enable external decisioning for metering, that becomes the source of truth.
Fallback behaviour and error handling
The external decision is treated as an enhancement on top of Bolt’s existing paywall logic, not a replacement.
If any of the following occur:
- The endpoint does not respond within the timeout window (currently 1 second).
- The response is malformed or does not contain the expected fields.
- There is any other network or parsing error.
then Bolt will ignore the external decision and behave exactly as it does today. For a non-entitled user on a paid article, that means the paywall is shown.
This ensures that problems with your external service will not accidentally open up paid content to all users.
Customising paywall copy via the decision endpoint
In addition to deciding whether to show the paywall, there is support for overriding certain strings returned by the endpoint.
In the initial version this applies only to the copy shown on the metered paywall banner (not the full paywall modal). For example, you might use this to:
- Tailor messaging for specific campaigns.
- Show different copy based on user segment or referral source.
- Localise banner text independently of your main app configuration.
If present and valid, the string(s) returned by your endpoint will replace the default banner text for that view. If they are missing or invalid, the standard configured copy will be used instead.
Over time, this approach may be extended to support additional paywall strings. If you have specific use cases in mind, speak to your Customer Success Manager so they can be factored into future iterations.
Implementation and configuration
To use external paywall decisioning you will need to provide us:
- A customer-managed HTTPS endpoint that can:
- Accept the information Bolt sends about the current request (for example, article identifier and any other agreed context).
- Return a boolean decision indicating whether to show the paywall.
- Optionally include replacement strings for the metered banner text.


