Skip to main content

Feed URL Formats

Every Benecaster feed URL is a standard HTTPS URL that works in any podcast app. There are two format options — query string and pretty permalinks — and one special case for the public feed.

Default Format (Query String)

The default feed URL uses a query string to pass the subscriber’s token:

https://yoursite.com/podcast-feed/?token=a1b2c3d4e5f6...

This format works on any WordPress installation without any extra permalink configuration. The token is a long hex string — typically 64 characters. The full URL, including the token, is what subscribers add to their podcast app.

When you have multiple shows or membership tiers, Benecaster can include the show slug and tier slug in the URL path to make the URL descriptive:

https://yoursite.com/podcast-feed/your-show-slug/gold/?token=a1b2c3d4e5f6...

The tier slug in the path is for readability only — it does not control access. The token determines the subscriber’s tier. See Per-Tier URL Slugs below.

If you prefer cleaner URLs, Benecaster supports a pretty permalink format that embeds the token directly in the URL path:

https://yoursite.com/podcast/your-show-slug/feed/gold/a1b2c3d4e5f6.../

Pretty permalinks are optional. Enable them in Benecaster → Settings → Feeds. After enabling, flush your WordPress permalinks by visiting Settings → Permalinks and clicking Save Changes — the feeds won’t work until you do.

The show slug in the URL is the URL slug of your show. For a show called “The Deep Cut,” the slug is typically the-deep-cut. The tier slug is the URL slug for your membership tier — for a tier called “Gold,” it is gold. You can change both slugs in their respective settings screens.

Both formats are equivalent — they resolve to the same feed content for the same token. The choice is cosmetic.

Why query string is the default: Some caching layers — CDNs, certain hosting control panels, and podcast directory crawlers — cache responses by URL path. A path-based token (pretty permalink) may be cached and served stale after a token reset, meaning the subscriber’s new URL returns old content until the cache expires. Query strings are typically excluded from path-level caching, so the query-string format is safer by default. If you enable pretty permalinks, verify that your hosting or CDN is not caching feed responses — the Cache-Control: no-store header Benecaster sends should prevent this, but not all caching layers honour it.

Paginated Feeds

By default Benecaster includes all published episodes in a single feed page — there is no limit. This works well for most shows. Very large catalogs (hundreds of episodes) may result in a large XML file; if this is a concern, you can enable feed pagination via the benecaster_feed_episode_limit filter (developer feature):

// Paginate at 300 episodes per page
add_filter( 'benecaster_feed_episode_limit', fn() => 300 );

When pagination is enabled, page 2 onwards appends a page parameter:

https://yoursite.com/podcast-feed/?token=a1b2c3d4e5f6...&paged=2
https://yoursite.com/podcast-feed/?token=a1b2c3d4e5f6...&paged=3

Podcast apps that support RFC 5005 feed paging (most do) follow these links automatically. Your subscribers don’t need to do anything — their app retrieves all episodes across all pages.

Public Feed (Free Version)

If you’re using the WordPress.org free version of Benecaster, or if you’ve created a public show with no subscriber authentication, the feed URL has no token:

https://yoursite.com/podcast-feed/

This feed is accessible to anyone with the URL. It can be submitted to Apple Podcasts, Spotify, and other directories like any standard podcast feed.

Follower Feed URLs

Free followers receive a private token-based feed URL using the same format as paying subscribers:

https://yoursite.com/podcast-feed/?token=a1b2c3d4e5f6...

The per-tier form also works, using follower as the tier slug (or whatever slug you’ve configured via benecaster_follower_tier_slug):

https://yoursite.com/podcast-feed/your-show-slug/follower/?token=a1b2c3d4e5f6...

What followers see: Only episodes where the Followers availability date in the episode editor has been set and has passed. Followers do not automatically see all public-tier episodes — follower access is configured per episode. See Free Follower Tier for how to grant follower access on an episode.

Follower feed tokens behave identically to subscriber tokens in every other respect: they are private, individually revocable, and resettable via the subscriber detail panel.

Per-Tier URL Slugs

When you have multiple membership tiers, each subscriber’s feed URL includes their tier slug in the path — both in the query string format and the pretty permalink format. This makes it easy to see at a glance what tier a URL belongs to:

https://yoursite.com/podcast-feed/your-show-slug/gold/?token=a1b2c3d4e5f6...
https://yoursite.com/podcast-feed/your-show-slug/silver/?token=a1b2c3d4e5f6...

The tier slug in the URL is decorative for authenticated subscribers. The token is the authoritative record of the subscriber’s tier. When a podcast app polls a feed URL, Benecaster reads the token and looks up the associated tier from the subscriber record — the tier slug in the URL path is ignored. This means:

  • If a subscriber upgrades from Silver to Gold, their token record is updated. Their existing URL continues to work and will return Gold-tier episodes on the next poll. The URL still shows silver in the path — it’s cosmetically wrong but functionally correct.
  • The welcome email always sends the URL matching the subscriber’s current tier, so most subscribers will have a correct-looking URL. But correctness of the tier slug in the URL is not enforced or required.

The tier slug in the URL only has functional meaning for public-tier access — when a URL has no token at all, Benecaster uses the tier slug in the path to determine which public feed to serve.

Subscribers don’t choose their tier’s feed manually. The welcome email sends them the correct URL for their membership level automatically.

What Happens with an Invalid Token

By default, when a subscriber’s token is revoked, not found, or incorrectly entered, Benecaster routes the request to the public feed rather than returning an error. The subscriber’s podcast app keeps working — it receives a valid feed with whatever episodes you’ve made publicly available. From the subscriber’s perspective, their private content disappears and only public episodes remain, with no error message or notification.

This is the recommended default (configured in Show Settings → Advanced → Cancelled subscriber feeds). Cancelled or lapsed subscribers stay in a working state in their podcast app, and their feed request still reaches your feed request log — giving you re-engagement signal. When you’re ready to reach out, the data is there.

If the show has no public episodes, the public feed will appear empty — which has the same practical effect as an empty-feed response, but is structurally different.

You can switch this behavior to strict mode (returns HTTP 403) in Show Settings → Advanced. In strict mode, podcast apps typically display an error or stop refreshing. See Revoked Token Behavior for the full comparison.

If a paying subscriber’s feed content disappears, they should reset their token or contact you directly — it typically means their subscription has lapsed.

Sharing Feed URLs

Feed URLs are private. Each subscriber’s URL is uniquely tied to their subscription. Subscribers should treat their feed URL like a password — it gives access to your premium content.

Benecaster does not prevent URL sharing technically, but token reset is available if a subscriber reports that their URL has been shared or compromised. See Token Reset.

Feed URL format diagram

See Also