Buy-up Content Gating
Once you have defined one or more buy-ups, you can restrict individual episodes so that only subscribers who hold an active grant for that buy-up can access them. This is separate from tier-level access — an episode can require a specific buy-up regardless of which tier the subscriber is on.
Setting up Per-Episode Access
In the episode editor, open the Availability panel. You will see an Add-on access section below the existing tier controls. Use the multi-select to choose which buy-ups grant access to this episode. Leave the field empty to apply normal tier-based access rules with no buy-up requirement.
Access Logic
The access check uses OR logic across the selected buy-ups: if the subscriber holds an active grant for any one of the selected buy-ups, access is granted. There is no way to require multiple buy-ups simultaneously on a single episode.
Tier access and buy-up access are checked independently. A subscriber with a tier that already satisfies normal episode availability does not need a buy-up grant — buy-up access is an additional path to access, not a replacement.
| Episode config | Subscriber state | Result |
|---|---|---|
| Buy-up required, no tier requirement | Subscriber holds a valid buy-up grant | Access granted |
| Buy-up required, no tier requirement | Subscriber does not hold the buy-up | Access denied |
| Buy-up required, tier also grants access | Subscriber qualifies by tier (no buy-up) | Access granted |
| Buy-up required, tier also grants access | Subscriber holds buy-up but wrong tier | Access granted |
Feed Access
When a subscriber gains or loses a buy-up grant, Benecaster appends the corresponding token type to the subscriber’s feed token so it can resolve access at request time. No token regeneration is required — access changes take effect the next time the feed is fetched.
For Developers
The episode _benecaster_required_buyups meta key holds a comma-separated list of buy-up slugs. The access resolution function checks this list via benecaster_episode_is_accessible, which fires for all episodes — use it to inspect or override buy-up access in custom code.
See benecaster_user_has_buyup() for checking buy-up status from PHP.