The Subscriber Account Page
The subscriber account page is a front-end WordPress page where subscribers can access their private feed URL, add it to a podcast app, reset their token, and download their data. Benecaster creates a /podcast-account/ page automatically on activation — the shortcode is already placed. You can use any page you like.
Setting up the Account Page
Benecaster creates a /podcast-account/ page with [benecaster_account] on first activation. The page ID is stored in the benecaster_account_page_id option. If you prefer a different URL, create a page at the path you want and add the shortcode — both pages will work, but link your members to the one you intend.
The page is only useful when a logged-in subscriber views it. Logged-out visitors see a login prompt. You do not need to restrict the page itself — Benecaster handles the authentication check.
Showing Account Info for One Show
[benecaster_account show_id="3"]
Without show_id, the shortcode shows subscriptions across all shows the current user has access to.
Finding your show ID: every show displays a #3-style chip you can click to copy — in the header when you open a show, on every sub-tab, and on each card in Benecaster → Shows including archived ones.
Showing Specific Sections Only
[benecaster_account show_id="3" sections="feed_url,app_links"]
Available sections: subscription, feed_url, token_reset, app_links, qr_code. Default is all. Token reset is a discrete section — you can include or exclude it independently of the feed URL section.
What Subscribers See
When a subscriber visits the account page while logged in, each show they’re subscribed to appears as a card.
Profile Section
At the very top of the page, above the profile picture and every subscription card, a PROFILE section lets a subscriber manage their own account — First Name, Last Name, Display Name, Email Address, and a Change Password block — without ever needing wp-admin.
Changing an email address is not immediate. Submitting a new address does not update it right away. A single-use link, valid for 24 hours, is emailed to the new address, and the account keeps the old address until that link is used — a mistyped address can never lock anyone out. After submitting, the Email Address field reverts to the address still on file; the new address appears only in a “waiting for confirmation” line below it until the link is confirmed. Depending on what happens when the link is opened, the subscriber lands back on this page with one of: confirmed, already used, not valid or expired, or already in use by another account.
The Current Password field doesn’t appear for everyone. Followers who signed up by email, subscribers a podcaster added manually or through bulk enrollment, and subscribers created through a donation have never chosen a password — there’s nothing for them to confirm, so they’re simply asked to pick one. Everyone else must enter their current password before a new one is saved.
The New Password field shows a Weak / Fair / Strong indicator. It’s guidance only — it doesn’t block anything — but a twelve-character minimum is enforced when saving.
Subscription Section
The subscription card shows the show name, a tier name or Follower, and a join date. A free follower’s card reads Follower where a paying subscriber’s tier name goes — followers hold a feed token but no tier — and the card carries is-follower (a paying subscriber’s carries is-subscriber), so a theme can style the two differently.
Feed URL Section
The subscriber’s private RSS feed URL is masked by default — only the token prefix is visible until they take action. This prevents the URL from being captured in screenshots or browser history unintentionally. The masked URL has the same shape as the one they were actually emailed: the standard …/podcast-feed/?token=abc12345••••… form, or …/podcast/{feed-slug}/feed/abc12345••••…/ if the podcaster has turned on Use pretty feed URLs (Settings → Permalinks).
Revealing the full URL: The subscriber clicks Show My Feed URL (or Reset My Feed URL). A two-step confirmation explains that revealing the URL for the first time is safe, and that resetting generates a new URL and invalidates the old one.
Once confirmed:
- The full feed URL is shown with a Copy button
- Podcast app deep links activate (Apple Podcasts, Overcast, Pocket Casts, Castro, Podcast Addict)
- The QR code renders with download buttons
The full token is never stored in browser history or page HTML — it’s delivered client-side after the reveal/reset action is confirmed.
App Links Section
After the feed URL is revealed, direct links appear to open the feed in:
- Apple Podcasts (
podcast://deep link) - Overcast (
overcast://x-callback-url/add?url=deep link) - Pocket Casts (
pktc://subscribe/deep link) - Castro (
castro://subscribe/deep link) - Podcast Addict (
podcastaddict://subscribe?url=deep link — the feed URL is percent-encoded, so?token=becomes%3Ftoken%3D) - Spotify (shown only when the show has a Spotify entry configured in show settings — links to the show’s public Spotify page, not the private feed)
QR Code Section
After the feed URL is revealed, a QR code for the subscriber’s private feed URL renders with SVG and PNG download buttons.
See QR Codes for print dimensions and use cases.
Token Reset Section
The token reset section provides the subscriber’s self-service reset button — a dedicated section separate from the feed URL display. After confirming, they receive a new private feed URL and the old one stops working immediately. See Resetting a Subscriber’s Feed URL for what subscribers need to do after a reset.
When a Show’s Feed Has Gone Dark
The Feed URL, QR Code, and Token Reset sections all check whether the show’s private feed is currently serving — most commonly because the podcaster’s license has lapsed — and change what they show instead of offering a URL that would 403.
- Feed URL section: reads “This feed is not currently active, so there is no URL to copy. Your subscription details are unchanged, and your feed will start working again once the podcaster restores it.” No masked URL, no reveal/reset prompt.
- QR Code section: reads “This feed is not currently active, so there is no QR code to generate. It will be available again once the podcaster restores the feed.”
- Token Reset section: the reset button does not render at all. A reset mints a new token and invalidates the subscriber’s existing podcast-app setup, and the URL it would produce fails exactly as the current one does — so the button would only cost them their one recovery action for nothing.
This reports state; it does not gate anything else. The subscription card, tier name, and join date are unchanged and keep showing normally — this is not a third tier of degraded access, just the page telling the truth about a feed that has stopped serving.
Followers are deliberately unaffected. A follower’s feed carries the public episodes and keeps working when a show goes dark, so a follower never sees any of the states above, regardless of the show’s license.
On a site with no license connected at all, nothing here changes. There is no private feed to go dark in the first place — followers are the only feed-token holders on an unlicensed install, and their feed is unaffected as above.
Passwords Are Optional
A follower can use the account page without ever setting a password, and the page is written to
read that way rather than treating a password as the normal route in.
Someone who follows your show arrives here by clicking the link in their welcome email. They are signed in when they land — they have never chosen a password, and nothing asks them to. The page carries a Set a Password section with the plain version of that:
You can use this site without a password — the link we email you is enough to get back in. Set one if you would rather sign in the usual way.
Paying subscribers are different. They choose a password at checkout, so they already have one
and can sign in either way.
An administrator or editor account is never signed in by an emailed link — those go to the WordPress password-reset screen instead. It is a deliberate protection for accounts that can edit the site. If you are testing with your own admin address, that is what you will see.
Redirected From wp-admin?
A logged-in user who is not a podcaster or team member — technically, anyone without the edit_posts capability — is redirected away from /wp-admin/ to this account page instead of the WordPress dashboard. Podcast subscribers have no reason to see the WordPress admin screens.
Two things worth knowing, since both get reported as bugs:
- The redirect is based on WordPress permissions, not on any Benecaster relationship. If Benecaster shares a site with a shop or a forum, customers and members without editing access are redirected here too — not just podcast subscribers. A developer can exempt specific people with the
benecaster_block_subscriber_wpadminfilter; it’s the only way to turn this off, in whole or in part. - Nothing happening behind the scenes is affected. A logged-out visit still goes through WordPress’s own login page, and AJAX requests, scheduled (cron) tasks, and front-end form submissions through
admin-post.phpare never redirected — so no other plugin or theme feature breaks.
Podcasters and anyone on their team with at least Contributor-level access reach wp-admin exactly as before.
Finding the Account Page from Your Membership Plugin
Subscribers don’t need to bookmark the account page URL — Benecaster adds links to it in common membership plugin account areas:
| Plugin | Where the link appears |
|---|---|
| WooCommerce | A “Podcast Subscriptions” tab in My Account |
| Paid Memberships Pro | A “Manage Podcast Subscriptions” link in the account page |
| MemberPress | A section added via mepr_account_home_after |
| Restrict Content Pro | A section added via rcp_after_member_profile_form |
WooCommerce: The “Podcast Subscriptions” tab requires a WordPress permalink flush after Benecaster activation. If the tab doesn’t appear, go to Settings → Permalinks and click Save — no changes needed, just a flush.
Downloading Subscriber Data
A Download my data button appears at the bottom of the account dashboard. Clicking it triggers an immediate download of benecaster-my-data.json containing:
- Account details (email, display name, registration date)
- All token records across all shows (token prefix only — the hash is never returned)
- Migration patron records (if migration tables exist for this account)
- Download history entries (if the download proxy is enabled — IP hashes are excluded)
The file downloads instantly from the browser. Nothing is stored server-side.
Avatars, Badges, and Supporter Wall
Built-in membership subscribers see additional sections in the account dashboard.
Profile picture — Subscribers can upload a profile photo that appears in the admin subscriber list and, when opted in, on the Supporter Wall. The upload form includes a disclosure when the Supporter Wall is active: “Your avatar will be visible on the Supporter Wall.” Subscribers can remove their avatar at any time.
Badges — Badge chips appear below the profile picture:
- Tier badges — chips assigned automatically based on the subscriber’s tier, or manually by the creator
- Tenure badge — when the site-wide tenure badge is enabled, a chip showing how long the subscriber has been a member appears here; labels advance automatically (e.g. “6-Month Member”, “1-Year Member”). See Subscriber Tenure Badges.
Supporter Wall opt-in — When at least one of the subscriber’s active shows has the Supporter Wall enabled, a “Show me on the Supporter Wall” checkbox appears inside the Profile picture / Badges block. Checking it makes the subscriber visible on the wall; unchecking removes them immediately — no cache flush required. Status messages appear while saving:
- “Saving…” — request in flight
- “Saved” — on success
- “Could not update your preference. Please try again.” — on failure; the checkbox reverts to its prior state
Wall name — Below the Supporter Wall opt-in, a “Your wall name” field lets subscribers set the name displayed on the Supporter Wall and in [benecaster_member_thanks] output. The field only appears when the show has Supporter Wall enabled. The wall name is kept separate from the subscriber’s WordPress account name — changing it here changes nothing about their account. If they leave it blank, Benecaster shows their first and last name instead, and falls back to their WordPress display name if those are empty too.
First-run wall name prompt: On a subscriber’s first account page visit when their show has Supporter Wall enabled, a one-time overlay prompts them to set a wall name before the rest of the dashboard loads. They can save and continue, or skip — the overlay appears only once. The wall name field remains available for them to fill in later.
Developer controls: benecaster_show_account_wall_name_field (filter, boolean) controls whether the wall name field renders; benecaster_show_wall_name_prompt (filter, boolean) controls whether the first-run overlay fires. These replace the deprecated benecaster_show_account_display_name_field and benecaster_show_display_name_prompt filters. Two free actions, benecaster_before_account_wall_name and benecaster_after_account_wall_name (both ( int $user_id )), fire immediately before and after the wall name field renders.
Membership Tenure Shortcode
To show a subscriber’s membership tenure outside the badge chip — in emails, a custom profile card, or a member-only page — use the [benecaster_member_since] shortcode:
[benecaster_member_since]
[benecaster_member_since format="short"]
[benecaster_member_since format="raw"]
| Format | Example output |
|---|---|
long (default) |
Member since June 2024 |
short |
1-Year Member |
raw |
2024-06-01 |
A follower reads “Following since June 2024” in the long format, instead of “Member since” — they follow the show, they are not a member of it. This only applies when a show is in context (an explicit show_id, or the sole show on a single-show install); with no show in context the snapshot comes from whichever token is oldest, and since one person can follow one show while paying for another, that case keeps “Member since.” short and raw are unchanged for a follower.
The shortcode is gated by the site-wide tenure badge toggle and outputs nothing when the feature is disabled. See Subscriber Tenure Badges for the full attribute reference, including user_id and show_id parameters.
Promote to Bridge — Grace Period Banner
Subscribers who have been migrated via the Promote to Bridge wizard and are within their grace period see an amber banner at the top of their account page:
Your membership is being transferred.
Your current feed URL works until [date]. Complete your setup in [target plugin name] before then to avoid interruption.
The banner appears automatically based on the promote_grace_period_ends_at value in the subscriber’s record. It disappears once the grace period ends and the token is revoked. Subscribers whose grace period has been manually cleared by an admin also stop seeing the banner.
Free Followers
Free followers — listeners who signed up via [benecaster_follower_signup] — appear on the account page in the same way as paying subscribers. They see their own tokenized feed URL, can add it to a podcast app, reset their token, and unsubscribe from emails. That feed carries your public feed’s episodes; the token is what makes it theirs, not what unlocks extra content. The only functional difference from a paying subscriber’s view is the absence of a billing or membership section — followers have no bridge membership and no payment history to display.
A follower’s card does say “Follower.” Where the subscription card reads the tier name for a paying subscriber, it reads Follower for a follower — it used to print the follower feed slug as if it were a tier, which this replaced. If “Member since” appears for a show that’s in context, a follower reads “Following since” instead: see Membership Tenure Shortcode below. This is a label only — nothing about what a follower can do on the page changes.
Caching Warning
The account page contains subscriber-specific data and must not be cached per-user. Configure your caching plugin to exclude the account page URL.
See Caching Plugin Configuration for instructions.
See Also
Need this built rather than just documented? See our services →