Your RSS Feeds
Benecaster generates private RSS feeds for your subscribers. RSS (Really Simple Syndication) is the standard format podcast apps use to discover and download episodes — every major podcast app supports it. Each subscriber gets a unique feed URL that their podcast app polls to receive episodes, and it works without any special configuration on the subscriber’s end.
One Feed per Tier
Benecaster generates a separate RSS feed for each membership tier on each show. If you have two tiers — Gold and Silver — your show has two feeds. A Gold subscriber’s feed might contain 50 episodes; a Silver subscriber’s feed might contain 30, depending on how you’ve set availability dates.
Every subscriber at the same tier receives the same feed content. The feed is cached per tier, not per subscriber — this keeps performance fast regardless of how many subscribers you have.
How Authentication Works
Each subscriber’s feed URL contains a unique token — a long random string tied to their subscription. When their podcast app polls the URL, Benecaster:
- Extracts the token from the URL
- Looks up which subscriber and membership tier that token belongs to
- Compiles the feed for that tier
- Returns the RSS XML
If the token is missing, invalid, or the subscription has lapsed, Benecaster routes the request to the public feed by default — the subscriber’s podcast app keeps working but shows only public-tier episodes. If the show has no public episodes, the feed will appear empty. Subscribers don’t receive an error message. They won’t lose episodes already downloaded.
The token is the only form of authentication. There is no username or password. Subscribers share their feed URL with their podcast app — and only their podcast app. If a URL is shared with someone else, that person gets the same feed access. Token reset is available if a subscriber believes their URL has been compromised. See How Feed Tokens Work.
What’s in the Feed
Benecaster generates fully iTunes-spec compliant RSS 2.0 feeds. Where you’ve provided the relevant data, feeds also include Podcasting 2.0 namespace tags — including <podcast:transcript> when a transcript URL is set on the episode, and <podcast:chapters> when chapter markers have been added. Each feed includes:
- All episodes whose availability date for the subscriber’s tier is in the past (or has no availability date set)
- Episode title, description, publish date, duration, and file size
- Audio enclosure URL pointing directly to your hosted file
- Episode artwork (falls back to show artwork if no episode-specific artwork is set)
- Episode type (full, trailer, bonus)
- Season and episode numbers (when enabled on the show)
- Show-level metadata: title, author, description, category, language, artwork
By default, every available episode is included in a single feed — there’s no cap on catalogue size and nothing is paginated. A developer can opt a site into RFC 5005 feed pagination at a fixed page size via the benecaster_feed_episode_limit filter, which is useful only for very large catalogues where a specific podcast app is struggling to load the full feed. This isn’t something most shows need to touch.
A note on Apple’s 300-episode figure. If you’ve heard that podcast apps cap out at 300 episodes, that limit belongs to Apple’s own podcast directory — how many episodes appear when someone browses or searches for your show inside Apple Podcasts — not to your actual RSS feed. Once a listener is subscribed to your feed URL directly (which is exactly how a Benecaster subscriber feed works), their app reads the feed itself, not the directory listing, so every available episode reaches them regardless of catalogue size.
Measuring Downloads with Podtrac, OP3 or Podscribe
If you use a podcast measurement service that works by sitting in front of your audio URL — Podtrac, OP3, or Podscribe — you don’t need a plugin or a custom hook for it. Set it once, under Show Settings → Feeds → Enclosure URL prefix.
The prefix goes on the front of every episode’s audio link, in the public feed and in every paid tier’s feed, plus <podcast:trailer> — not just whichever feed you happen to be looking at. Because these services expect their own URL form, the episode link’s leading https:// is dropped right after the prefix is joined to it.
If you have download tracking turned on for an episode, this doesn’t expose anything private: a subscriber’s feed link still points at your own site, exactly as it always has, and it’s the redirect from your site out to your audio host that carries the prefix. The measurement service still sees and counts the download — it just never sees a subscriber’s private feed link.
This only affects what goes out in your feeds. It has no effect on the player on your website.
See Show Settings Reference for the field itself.
Availability and Timing
Each episode has a per-tier availability date. Benecaster only includes episodes in a feed where that date has passed — episodes with a future availability date are invisible to that tier until the date arrives. Episodes with no availability date set for a tier are also excluded from that tier’s feed.
Benecaster checks for newly-available episodes every 5 minutes via a scheduled task. When an episode becomes available to a tier, the feed cache for that tier is cleared and rebuilt on the next request.
For time-sensitive releases — for example, early access that unlocks at midnight — availability checks depend on WordPress’s scheduled task system. On low-traffic sites, a short window of delay is possible. For tighter timing, configure a real server cron to run WordPress’s scheduled tasks every few minutes. See System Requirements and Cron isn’t firing on time →.
Spotify Compatibility
Private token feeds are not compatible with Spotify’s subscription system. Spotify requires their Open Access API for subscriber-authenticated podcasts, which Benecaster does not implement.
Your public podcast episodes (if you have any) work normally on Spotify. Only the private subscriber-authenticated feeds are incompatible. Most podcasters using Benecaster distribute private content exclusively through apps that support custom RSS URLs — Apple Podcasts, Overcast, Pocket Casts, Podcast Addict, and others.
If Spotify distribution is a requirement for your private podcast, Benecaster is not the right tool for that specific use case.
Feed Caching
Feeds are cached to avoid recompiling the same XML on every request. The cache is per tier per show — one cached copy for all Gold subscribers, one for all Silver subscribers. The cache is automatically cleared when:
- An episode is published, updated, or deleted
- An episode’s availability date passes
- Show settings are changed
- You manually flush the cache from Benecaster → Tools
Feed responses include ETag headers. Podcast apps that support conditional requests will receive a 304 Not Modified response when nothing has changed, further reducing server load.
See Feed Cache and Manual Cache Clearing for cache duration and how to flush manually.
Episode Pages
In addition to the private RSS feed, Benecaster generates a public-facing web page for each episode. These pages are accessible at your WordPress site URL and render the episode’s title, player, description, and any custom fields you’ve configured.
Episode pages and the private feed are separate but related:
- The feed is what podcast apps use. It’s authenticated by token and delivers audio to the subscriber’s app.
- Episode pages are for web browsers. They’re useful for sharing links, SEO, and show notes that reference material.
Tier access applies to episode pages as well — locked episodes show teaser content and an upgrade prompt to visitors who aren’t subscribed at the required tier. Subscribers see the full episode content.
Episode pages are enabled by default. To disable them, go to Show Settings → Advanced and turn off Episode single pages. You can also disable the episode archive page independently if you don’t want a listing of all episodes.
See Episodes Overview for more on episode pages, episode defaults, and how episodes appear in feeds.
See Also
Need this built rather than just documented? See our services →