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.
Your subscribers never actually receive a URL with a show or tier slug in it — the URL Benecaster sends is always the plain form above, with no slug of any kind, even on a multi-show site or a show with multiple tiers. It works correctly regardless: the show and tier both come from the token itself, not from anything in the path. The slugged form below still resolves if someone types or constructs it by hand — it’s a valid alternate spelling of the same URL — but nothing sends one to a subscriber automatically:
https://yoursite.com/podcast-feed/your-show-slug/gold/?token=a1b2c3d4e5f6...
The slug in the path is decorative — it does not control access, and does not need to be correct. The token alone determines the show and the subscriber’s tier. See Per-Tier URL Slugs below.
Pretty Permalink Format
If you prefer cleaner URLs, turn on Use pretty feed URLs under Benecaster → Settings → Permalinks → Private feed URLs. Once it’s on, subscriber feed URLs are issued in this form instead:
https://yoursite.com/podcast/your-show-slug/feed/a1b2c3d4e5f6.../
The show slug is your show’s Feed Slug, set on the show’s own settings screen — a show with no Feed Slug keeps the standard query-string form regardless of this switch, since there’s nothing to put in its place. There’s no tier slug in this form; the tier, like everything else about the URL, comes from the token itself, not the path.
Turning the switch on changes which form new subscriber URLs use going forward — welcome emails, reset emails, and the account page. It doesn’t touch anyone’s existing URL, and URLs already sent keep working even if you turn the switch off again later — Benecaster keeps recognizing the pretty form permanently once it’s ever been turned on, specifically so nobody’s link breaks. Renaming your Feed Slug afterward doesn’t break a pretty URL already sent, either — an old slug in the path still finds the right show through the token.
Both formats are equivalent — they resolve to the same feed content for the same token. The choice is cosmetic, and reversible without breaking anything already delivered.
It moves your public feed address too, even though it sits under Private feed URLs. With it on, the public feed is advertised as yoursite.com/podcast/your-podcast/feed/ instead of yoursite.com/podcast-feed/your-podcast/, everywhere Benecaster shows it: the [benecaster_rss_link] shortcode, the RSS Feed link in [benecaster_platform_links], the show’s QR code, the show’s feed URL in the REST API, the setup wizard’s final screen, and the feed’s own self link inside the RSS (its <atom:link rel="self">, plus the first, last, next and previous page links when paging is on). Changing the switch clears cached feeds, so the self link follows straight away. Both addresses keep serving the same feed, so nothing already published breaks. Turning the switch off puts new links back on the plain form, while pretty addresses already handed out keep working.
Opening a Feed URL in a Browser
A private feed URL — query string, per-tier, or pretty permalink, any form — now shows a landing page when opened in a web browser instead of raw XML: the show’s artwork and title, one-tap Open in buttons for the major podcast apps, and a Copy field. Podcast apps still get the actual feed; only a browser sees the page. The Copy field gives back the exact URL the listener opened, with any extra query parameters (like a campaign tag) dropped. See QR Codes and Adding Your Feed to a Podcast App.
The public feed URL is unaffected — it still returns raw XML in a browser, since there is no credential to protect there.
Why query string is the default: Some caching layers — CDNs, certain hosting control panels, and podcast directory crawlers — cache responses by URL path, and a path-based token (pretty permalink) is more exposed to that than a query-string one. Every private feed response, in either format, now tells WordPress page-cache plugins (WP Super Cache, W3 Total Cache, WP Rocket) not to store it, so those specifically are covered automatically — no exclusion rule needed on your end. A server-level or CDN cache that ignores the Cache-Control: no-store header Benecaster sends is the remaining risk, and it applies to both URL formats: if you use pretty permalinks, make sure /podcast/ is excluded from any such cache alongside /podcast-feed/. That covers your public feed address as well as subscriber ones, since the switch moves both.
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.
A private feed points at itself. Inside a subscriber’s or follower’s feed, the feed’s own self link and its page links name that listener’s own feed URL, in the shape the Use pretty feed URLs switch selects. So an app that pages through the feed, or adopts the address the feed gives for itself, stays on the private feed. This also holds for a subscriber over your plan’s limit who is being served the public episodes. The public feed’s self link is always the public address, which is the one Apple Podcasts checks.
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: your public feed’s episodes. A follower feed is not separately gated — there is no per-episode follower setting, and anything in your public feed reaches every follower automatically. See Free Followers.
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
A feed URL can carry a tier slug in the path, in both the query string format and the pretty permalink format — but as covered above, subscribers are never actually sent a URL built this way; this form only matters if you construct one by hand:
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 — with no change needed, since the URL they actually hold never had a tier slug in it to begin with.
- The URL Benecaster’s welcome email sends is always the plain, slug-less form — there is no tier-slugged variant to keep in sync with a subscriber’s current tier.
A feed URL with no token always serves the public feed, whatever tier slug it carries. There is only ever one public feed for a show. A request to /podcast-feed/your-show-slug/gold/ with no token does not return Gold episodes — it returns exactly the same public feed as /podcast-feed/your-show-slug/. The tier slug never grants access on its own; only a valid token does.
Subscribers don’t choose their tier’s feed manually, and don’t need a tier-specific URL to get it — one URL, tied to their token, always serves the right tier’s episodes.
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.
This holds at every URL form. A revoked token at a tier-slugged URL such as /podcast-feed/your-show-slug/gold/ is routed to the public feed exactly as it would be at any other URL — the tier slug in the path does not preserve any access the token no longer grants.
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, it typically means their subscription has lapsed, and they should contact you. Resetting their link won’t help. If they’ve lost their URL, it’s on their account page, or you can re-send it with Email link on their detail panel.
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 a reset is available if a subscriber’s URL has been shared or exposed. It costs the subscriber their app setup, so keep it for that case. See Token Reset.
See Also
Need this built rather than just documented? See our services →