Skip to main content

Creating Episodes

The Episode List

Go to Benecaster → Episodes to see all episodes for the currently selected show. The list shows each episode’s artwork thumbnail, title, metadata line (episode number, type, publish date), status badge (Draft / Published / Scheduled), and access pills indicating which tiers can access it.

Access pills: The colored pills on each episode row summarize tier access at a glance.

Pill Meaning
All tiers Episode is accessible to all configured tiers
Paid only Episode is restricted to paid tiers
Free in N days Free tier gains access on a future date
Live At least one tier has active access
Upcoming No tiers have access yet (scheduled)

Inline row actions: Hover over an episode row to reveal: Edit, Copy audio URL, Preview, and a More⋯ menu (additional actions including Duplicate and Move to Trash).

Creating an Episode

Click + New in the episode list toolbar, or go to Benecaster → Episodes → Create Episode. The episode editor opens with a two-column layout.

Left Column — Content

Title The episode title. Appears on the episode page, in podcast apps, and in the RSS feed.

Podcatcher description Plain text shown in podcast apps. Keep this under 500 characters — many apps truncate longer descriptions in episode listings. A character counter updates as you type. Maps to <description> and <itunes:summary> in RSS.

Full page content A rich text editor for the episode’s show notes. Headings, formatted lists, links and blockquotes work here, and three keyboard triggers pull in real content from your show — @ for a link to another episode, # for a timestamp into the audio, and / for a block such as a player or a supporter thank-you. The Add image button in the toolbar places an image from your WordPress media library.

This content is shown on the episode page on your website, and it is also delivered to podcast apps in the feed’s content:encoded field. Shortcodes are not resolved on the way into the feed, apart from the two gate blocks, so anything else you insert with @, # or / reaches an app as raw shortcode text — fill in Podcatcher Description above so your app-facing summary is prose you controlled. Most podcast apps ignore images in show notes, so treat an image as something for the episode page.

See The Rich Text Editor for the full set of controls and triggers.

Right Column — Sidebar Tabs

Details Tab

Field Description
Show Which show this episode belongs to.
Episode number Auto-increments from the last numbered episode on first publish. Enter a number manually to override; if a number is already set before publish, auto-assignment is skipped. An episode with no number shows an empty Episode # box with a grey Auto placeholder. Click Auto (or empty the box) and save: a draft stays unnumbered until it is published, and an episode that is already published gets the next number when you click Update. Its own number isn’t counted, so the show’s highest-numbered episode keeps its number.
Season Shown only when seasons are enabled for the show. Enable via Shows → Settings → Feeds → Seasons (or from the show’s Details tab → Show Flags). Empty it and save to remove the season.
Episode type Selects the episode’s type from the types configured for this show. Hidden when the show has only one type configured. See Episode Types.
Explicit A three-way choice: Inherit from show (the default), Yes, or No. Inherit uses whatever the show is set to. Yes marks this one episode explicit on an otherwise clean show. No marks this one episode clean on an explicit show — useful for a listener-safe recap or a trailer sitting inside an explicit series. The choice applies to this episode only and does not change the show’s setting.
Recorded on Optional. The day the episode was recorded, for your own records: the help text reads “For your own records. It is not shown to listeners or included in your feed.” It does not appear on the episode page or in any feed. Clear the date to remove it. Importing from Seriously Simple Podcasting fills it from SSP’s Date recorded.
Author Override the show-level author for this episode.

Where the Explicit setting shows up. Once set, it is visible in three places without you doing anything:

  • A badge on the front end — on the episode page, on archive cards, in [benecaster_episodes] lists, and in the [benecaster_player] title strip. Explicit episodes carry it; clean episodes show nothing at all, which is deliberate — a badge on every episode tells a listener nothing. Themes can restyle it, reword it, or place it themselves with [benecaster_explicit_badge].
  • A column on the Episodes list — sortable and filterable, so you can audit a back catalogue at a glance instead of opening episodes one at a time. It shows the value that actually applies, and marks episodes carrying their own override so you can tell “explicit because the show is” from “explicit because someone set it here”.
  • Quick Edit — change the setting straight from the list without loading the editor. Useful when a review turns up a handful of episodes to correct.

How the value is worked out. The episode’s own setting wins whenever it is Yes or No. Only Inherit from show defers to the show’s Explicit setting. That resolution happens once, in one place, and everything downstream uses the result — so the badge, the Episodes column, the RSS feed, and the structured data on the episode page can never disagree with each other.

Explicit — for developers. The episode override is stored as a three-value string, not a boolean: 'inherit' (or absent), 'yes', or 'no'. Read the resolved value with EpisodeMeta::get_effective_explicit() rather than reading the meta yourself; write with EpisodeMeta::set_explicit(), which coerces anything unrecognised to 'inherit'. The badge itself is rendered by ExplicitBadgeRenderer and has three filters — benecaster_explicit_badge_mode, benecaster_explicit_badge_label, and benecaster_explicit_badge_html — so the wording and markup are changeable without a template override. Values stored before the enum landed still read correctly — a legacy '1' resolves to 'yes', and a legacy empty or '0' resolves to 'inherit'. See the recipe Resolve or override an episode’s Explicit flag.

Recorded on — for developers. The date is stored in the _benecaster_recorded_date post meta as a calendar date (YYYY-MM-DD), not a moment in time, and is read and written as recorded_date on the episode REST endpoints. To show it on the episode page, see the recipe Print an episode’s Recorded on date in a theme template; never format it with wp_date(), which prints the day before on sites behind UTC.

Categories A checklist of episode categories appears at the bottom of the Details tab. Check any categories that apply. To create a new category, click Add new category, type the name, and press Enter or Add. See Episode Categories.

Access Tab

Controls when each subscriber tier can access this episode.

Web Publish Date The date and time when this episode’s page appears on your website. Separate from the podcast feed availability dates — a future web publish date keeps the episode page hidden until the date passes.

Tier Availability Lists every tier the show has. On a show using built-in membership, that is its tiers in Memberships → Tiers order, with a retired tier marked (inactive) — retiring a tier only stops new sign-ups, and its members still get what is scheduled for it. On a show using a membership plugin, it is the tiers from its tier mapping.

A new episode follows the show’s Default availability (Show Settings → Details → Advanced). While it does, the tab says “Using this show’s default availability. The dates are worked out from the web publish date each time you save.” and lists each tier’s rule — Never, On release, or N days after release — with the date it works out to. Those dates are recalculated from the Web Publish Date every time you save, at the show’s Default Release Time when one is set.

If the show has no default availability, the tab says “This show has no default availability, so this episode has no tier dates and is not in any feed yet…” and offers Set dates for this episode.

Click Override dates for this episode to set the episode’s own dates. Each tier gets a 30-day-before to 90-day-after timeline and a date-and-time input; the × beside a tier’s name (Remove availability date) clears its date. A cleared tier leaves that tier’s feed as soon as you save — clear every tier and the episode leaves every tier feed. Buy-up Access below is not affected. Dates and times are in your site’s timezone (Settings → General → Timezone), not your computer’s. If the two differ, the tab says so at the top: “Dates and times on this tab are in your site’s timezone ({zone}), set under Settings → General.” Click Use show defaults to go back to the show’s schedule; it appears only when the show has default availability.

See Setting Tier Availability for the full explanation of how tier access dates work.

A signed-in subscriber whose dates are all still ahead sees “Available to you on {date}.” on the episode page, in your site’s time zone: the earliest date across the tiers their membership plugin (or built-in membership) reports they hold right now, and any episodes they own outright. One whose tiers have no date for the episode sees “This episode isn’t included in your plan.” A subscriber whose membership plugin reports no level for them sees “This episode is available to subscribers.” See Locked Episode States.

Buy-up Access Below the tier timeline, a multi-select lists the active buy-ups on this show. Ticking one means holders of that buy-up also get this episode — on top of whichever tiers the schedule above already gives it to. It does not take the episode away from anyone.

If the show has any Buy-up Defaults set, a new episode arrives with those buy-ups already ticked here, the same way it arrives with the show’s default availability dates. Untick or add to the pre-filled selection before saving if this episode should differ from the show’s default.

Subscribers whose tier already entitles them keep the episode whether or not they hold the buy-up. Multiple selections use OR logic: holding any one of them is enough.

To sell an episode exclusively, leave every tier unscheduled and tick the buy-up. With no tier carrying the episode, buy-up holders are the only people it reaches — in the feed and on your website alike. Ticking a buy-up on an episode that tiers already carry does not make it exclusive.

See Buy-up Content Gating for the full picture.

Media Tab

Field Description
Audio URL Direct URL to the audio file (.mp3, .m4a, etc.).
Primary media Choose whether Audio or Video is the primary media for this episode. With Video, the website plays the video even when the episode has an audio file too. It never starts by itself.
On your website, play Only when Primary media is Video: Use show setting, Video or The tier’s audio.
Video preview What a visitor who can’t watch the episode sees: None, Separate clip file or Part of the episode’s video. A time span is a teaser, not protection. See Video Preview.
Video URL Optional. Direct URL to a video file.
Embed code, or a YouTube or Vimeo link Optional. Embed HTML from a video host, or a plain YouTube or Vimeo link, as an alternative to a direct video URL. Shown on the episode page and its archive card to visitors who can hear the episode. The embedded player must load over https://. See Episode Editor — Media.

Auto-detecting media metadata: Click the Detect button to fetch duration, file size, and format from the hosted file. It sits beside the URL of the file your feed carries: the Audio URL, or the Video URL on an episode with no audio URL or with Primary media set to Video. The detected values appear inline, are kept when you save, and are used in the RSS feed. The Detect button is only enabled after the episode has been saved once. See Episode Editor — Media.

Artwork Tab

The Artwork tab controls the episode’s podcast artwork and the landscape image used on your website.

Artwork URL A square image URL for podcast apps. Benecaster shows a warning if the image is smaller than 1400×1400px — Apple Podcasts and Spotify may reject or display blurry artwork below that threshold. If left blank, the show’s artwork is used as a fallback.

Featured image A draggable crop box lets you select which portion of your square artwork becomes the 16:9 landscape image used on your episode page and in social sharing previews. Drag the crop box to position it, then save the episode. Benecaster downloads the artwork into the WordPress media library, generates a 1200×630 featured image (benecaster-featured image size), and stores it as the episode’s WordPress featured image.

On re-saves, the download is skipped if the Artwork URL hasn’t changed — only the crop is re-applied. If you change the Artwork URL, the image is downloaded fresh.

See Episode Artwork for more detail.

Guests Tab

Add people associated with the episode — guests, hosts, co-hosts, producers, or any contributor role. Credits added here are emitted as <podcast:person> tags per-item in the RSS feed, which podcast apps that support Podcasting 2.0 use to display guest and host information.

▾ Feed Credits

A collapsible Feed Credits section appears beneath the guest list. It is divided into three areas: the host row, auto-populated credits from add-ons, and manually-added credits.

Host row (read-only)

The top row mirrors the show’s Podcasting 2.0 → Host settings. When a host is configured, it shows the host’s name, a “host” role label, and URL with an Edit in settings → link. When no host is configured, a dimmed placeholder reads “No host configured. [Add in Settings →]” linking to the show’s Podcasting 2.0 settings. This row cannot be edited or deleted from the episode editor.

Auto-credits (read-only)

Below the host row, credits injected by add-ons (such as Guest Manager) appear as locked rows. Each locked row shows a padlock icon and a “via {source}” label — for example, “via Guest Manager”. When the add-on provides a source URL, an inline “view source” link opens the originating record. Locked rows have no drag handle and no delete button.

Auto-credits are never written to _benecaster_podcast2_feed_credits — they are a read-only mirror of what the feed compiler will emit. To remove an auto-populated credit, unlink the guest at the source add-on.

Manually-added credits

Below auto-credits, you can add credits specific to this episode. Rows support drag-to-reorder. Each row has four fields: Role (free text), Name, URL (optional), and Image URL (optional). Remove a row with its per-row remove button.

Click Add credit to open an inline form:

Field Notes
Role Dropdown: Host / Guest / Editor / Producer / Custom. Selecting Custom reveals a free-text role input.
Name Required. The Add button stays disabled until this field is non-empty.
URL Optional. Link to a profile, website, or social account.
Image URL Optional. URL to the person’s photo or avatar.

Click Add to append the credit, or Cancel to dismiss the form. The Add button is also disabled until the custom role field is filled when Custom is selected.

The Guest Manager add-on extends guest capabilities into full guest profiles with bios, photos, social links, and dedicated archive pages.

References Tab

Add links and resources mentioned in the episode. References appear in a References section on the public episode page, grouped by the headings you define.

Click Add reference to add a card. Each card has four fields:

Field Description
Label The link text shown to listeners. If you’ve used this reference before, the typeahead (see below) can fill this from your library. It always shows the library’s own label, even when this episode has a display label override.
URL The destination URL. It goes out exactly as you typed it, unless you track the reference with the Outlinks add-on, which sends listeners through a /go/ link to the same address.
Description Optional plain-text note about the reference — what it is or why it’s relevant. Shown on the episode page; not included in the RSS feed.
Display label override Optional. Overrides the Label for this episode only. Useful when the same library item appears in multiple episodes under slightly different names.
Group Assigns the reference to one of the show’s reference groups (headings on the episode page).

Some fields are shared and some belong to this episode. Label, URL and Description belong to the reference in your show’s library, so they are the same on every episode that cites it. Display label override and Group belong to this episode only.

Remove any card with the ✕ button. References save and display in the order shown. An add-on can add its own controls to each card; they appear inside the card, below the fields.

Reference groups Groups let you organize references under headings — for example “Books mentioned”, “Tools”, “Links from the interview”. Groups are defined per show in Benecaster → Shows → [Your Show] → Details → Reference Groups. Once groups exist, the Group dropdown appears on each reference card. Select a group or leave it as “— No group —” to place the reference in the ungrouped section.

To add a group without leaving the episode editor, choose + Add new group… from the Group dropdown, type a name, and press Enter. The group is created immediately and selected for the current card.

Your reference library Every reference you save becomes an entry in the reference library of the episode’s show, as soon as the save finishes. A reference is identified by its label and its address: two references with the same label and the same URL are one library entry, shared by every episode that cites it; the same label with a different URL is a separate entry.

Library typeahead As you type in the Label field, Benecaster searches the reference library of the episode’s own show for matching items, even if the show switcher names a different show. Suggestions appear after two or more characters, each with its address underneath — so two entries can share a label, and the address tells you which is which. Selecting a suggestion fills the Label, URL and Description from the library and links the reference to that entry.

Editing a library reference changes it everywhere. When a reference on this episode is linked to a library entry, the card says so: “This reference is in your show’s library. Changing its label, URL or description updates it on every episode that uses it — use the display label override below to change only this episode.” Correct a broken link once and every episode that cites it is fixed. This applies to a reference you added in this session too: once you’ve saved, editing its URL updates the same library entry rather than creating a second one. To change the wording on this episode alone, use Display label override instead.

Checking references that were merged by mistake. Before a recent update, two references with the same label but different addresses were saved as one — both episodes linked to whichever address was saved first. That has stopped, but references already merged can’t be separated automatically, because the second address was never kept. To find candidates, run wp benecaster references audit, which lists library entries cited by more than one episode (see WP-CLI Commands). Most of what it lists is the library working as intended, so treat it as a shortlist to check. To fix one: leave it as it is on the episode that has the right address, then on the other episode remove the reference and add it again with its own address — that creates a separate entry.

Transcript Tab

Shown on shows where the Transcription Service add-on is switched on.

Transcript, at the top of the tab, opens with Request transcription, above Import transcript (Replace transcript once there is one). Requesting asks Transcribe with {provider}? This is charged to your account. with Transcribe and Cancel before anything is sent, then shows Transcription: Queued, Processing, Complete or Failed (your provider’s reason as text, with Try again), updating every 15 seconds. No request is offered once the transcript is Complete. Without an accepted key the button is greyed out, and Transcription: Not configured links to Settings → Transcription. An unsaved episode reads Save the episode first, then request or import its transcript. To bring in one you already have, see Importing a Transcript.

Reading it. Once complete, the text shows read-only below Replace transcript: Transcribed by {provider}. or Imported. with N lines. (No timestamps. for plain text), then each line with its time (M:SS, H:MM:SS past an hour) and Speaker N: where the speaker changes, in a box that scrolls on its own. A plain-text import shows as paragraphs. You see this under every visibility, Hidden included.

Correcting it. Edit transcript opens one box per line under its time and speaker; only the words change, and times and speakers stay. A plain-text import opens one box (A blank line starts a new paragraph.). Save corrections, with N lines changed. beside it, or Cancel. Saving with nothing changed says Saved. You made no corrections. An emptied line is refused (The line at M:SS is empty. Every line needs some text.), line breaks inside a line become spaces, and a save over a transcript changed since you opened it is refused (This transcript changed after you opened it…). Corrections reach the episode page, [benecaster_transcript], the public transcript files (podcast apps may cache for a few minutes) and site search at once. Correcting removes any formatted version.

Exporting and formatting. Export: offers SRT, VTT, Plain text and PDF under the line count (plain text and PDF for a plain-text import), and Format transcript sits under it. Both are hidden while Edit transcript is open. See Exporting and Formatting Transcripts.

Transcript visibility sets who can read this episode’s transcript: Use show default is ticked, with Show default: {setting} under it. Untick it to choose All visitors, All subscribers, Selected tiers, Buy-up holders or Hidden for this episode alone, then click Save visibility. The episode keeps its own choice when the show’s default changes. A new episode shows Save the episode first, then choose who can see its transcript. See Transcript Visibility.

You can also request a transcript from the Transcription: line under the episode’s title in the episode list; see Transcription Overview.

More Tab

Custom fields, errata (when enabled for the show), and Podcasting 2.0 metadata. See Episode Custom Fields.

▾ Credits

A collapsible Credits section appears above Errata on the More tab. It shows the current stamp status: “No template applied” or “Credits (applied from: [template name])”.

To apply a credit: select a template from the dropdown and click Apply. The template body resolves all shortcodes at stamp time. The TipTap editor below shows the resolved HTML, which you can freely edit after stamping. Re-applying a template replaces the current credit entirely — it does not append.

Note: Apply is disabled until the episode has been saved at least once (needs a WordPress post ID). Save as draft first, then open the Credits section to apply a template.

Credit templates are created and managed in Show Settings → Credits. See Episode Credits.

▾ Chapters

A collapsible Chapters section appears on the More tab between Credits and Errata. Use it to add podcast-app chapter markers to an episode — named, timestamped sections that let listeners jump directly to any part of the episode.

Each row has a Start time (HH:MM:SS format, e.g. 00:12:30), a Title, an optional URL, and an optional Image (from the WordPress media library). Use the ↑ ↓ arrows to reorder rows. Rows with an invalid timestamp show an inline error and are dropped silently when the episode is saved.

Changes take effect on the next episode save. See Chapter Markers for full details on RSS output, front-end display, and developer hooks.

▾ Errata

A collapsible Errata section appears on the More tab when the parent show has errata enabled (Shows → Settings → Feeds → Enable errata for this show). If errata is not enabled for the show, this section is not visible in the episode editor.

The Errata field uses the same rich text editor as the show notes — same toolbar, same triggers, same formatting options. Use it to publish corrections, clarifications, or updates after an episode has aired.

Errata content is not emitted in the RSS feed. It appears on the WordPress-rendered episode page only — below the episode body in a clearly labeled “Errata” section. Listeners will see it when they visit the episode page, but it won’t appear in podcast apps.

▾ Podcasting 2.0

A collapsible Podcasting 2.0 section appears on the More tab below any custom field groups.

Transcript

Field Description
URL Direct link to a transcript file for this episode. Type or paste an address, or use Choose file beside the box to pick one from your media library (see below).
MIME type Format of the transcript file. Options: text/plain, text/html, application/srt, text/vtt, application/json. Any stored value not in this list displays as text/plain.
Language The transcript’s language, from the same list as the show’s Language. Same as the show leaves it blank, and the feed then names no language for the transcript. A stored code not on the list appears as itself.

When the Transcription Service add-on is installed and switched on for the episode’s show (Settings → Add-ons → Active on), a note appears beneath the URL field: “Transcription Service add-on auto-populates this field — you can still override it here.”

When a transcription finishes, the URL is filled with the transcript’s WebVTT file and the MIME type set to text/vtt. A plain-text import has no timestamps, so its URL is the .txt file with text/plain. If the episode already had a URL you typed, picked or imported, yours is kept and the new transcript is not linked in its place. Who gets an add-on transcript in their feed is set on the episode’s Transcript tab.

A transcript the add-on made is left out of every feed, the episode page’s Read the transcript link and the REST API while the add-on is deactivated or deleted, and comes back when you activate it again. A lapsed license, or switching the add-on off for a show, does not do this: the add-on keeps serving its transcripts under its own rules. If you change the URL yourself in the episode editor, it becomes your own and is published from then on whatever the add-on’s state. A URL you set yourself is never affected.

Saving keeps a transcript written while the editor was open. The add-on, a REST call or WP-CLI can set the transcript URL or MIME type while you have the episode open. Saving sends each of the two fields only if you changed it yourself, so a value written in the meantime is not overwritten or blanked. After the save, the URL box shows the episode’s stored value, unless you have typed in it since you pressed Save.

Auto-fill from an attached transcript file. Even without the Transcription Service add-on, saving an episode with a .vtt, .srt or .txt transcript file attached fills in an empty Transcript URL field automatically, and sets the MIME type to match. It never overwrites a URL you’ve already entered. If two or more transcript-shaped files are attached, Benecaster can’t tell which one you mean — nothing is filled in, and a dismissible notice names the episode so you can set the URL yourself. If no transcript file is attached, nothing changes.

Choose file button. A Choose file button sits beside the Transcript URL box and opens the standard WordPress media library — upload a new file or pick an existing one, and both the URL and MIME type fill in. The file list here is deliberately unfiltered: WordPress doesn’t recognize .vtt or .srt files, so a text-only filter would hide the two most common transcript formats. The MIME type is set from the file’s name, not the MIME type WordPress recorded for it — a .vtt file is set to text/vtt rather than the text/plain WordPress would otherwise guess. The URL box itself is unchanged and still accepts a pasted, externally hosted address.

MIME type follows the URL. Typing or pasting an address into the URL field also moves the MIME type dropdown to match its extension (.vtt, .srt, .json, .txt, .html) — a query string on the URL doesn’t prevent this. An extension Benecaster doesn’t recognize leaves the current MIME type alone rather than resetting it, the dropdown only updates once the extension is complete (not while you’re still typing), and reopening an already-saved episode never re-infers the type — if it was saved with a MIME type that no longer matches its URL, it stays as saved. The dropdown remains editable by hand at any point.

Soundbites

A drag-to-reorder repeater of short clips worth highlighting. Each row has three fields:

Field Description
Start Start time in decimal seconds. Displayed as mm:ss in the editor; stored as decimal seconds.
Duration Length of the soundbite in decimal seconds. Displayed as mm:ss; stored as decimal seconds.
Title Optional label for the soundbite.

Remove a row with its per-row trash button. Click Add soundbite below the list to add a new row. Maximum 10 soundbites per episode.

Soundbites appear in the RSS feed as:

<podcast:soundbite startTime="{start}" duration="{dur}">{title}</podcast:soundbite>

Saving and Publishing

Save Draft — saves the episode without publishing. The episode is not visible to subscribers or in your RSS feed.

Publish — makes the episode live. The episode appears in your RSS feed and on your website. Tier availability dates in the Access tab control who can play it, in feeds and on your website, and when: everyone once the public tier’s date passes, otherwise signed-in listeners for whom the date of one of their tiers has passed (the tiers their membership plugin or built-in membership reports they hold right now, as their feed uses). An episode with no dates is locked for everyone. See Setting Tier Availability.

Once published, you can edit the episode at any time. Tier availability dates can be updated after publishing without unpublishing the episode.

Clearing a field saves the blank. Empty Author override, the video URL, Embed code, the artwork, the duration, Episode # or Season, then save, and the field stays empty.

Coming back to the tab. When you return to the editor tab, it quietly re-reads the episode. If that fails, for example because your login has expired, the editor and anything you’ve typed stay on screen. “Episode not found or could not be loaded.” appears only when the episode never loaded at all.

See Also

Need this built rather than just documented? See our services →