Skip to main content

Importing Episodes from Your Host

If you have an existing podcast on another hosting provider, Benecaster can import your episodes as drafts so you don’t have to re-enter them manually. You review each draft, set tier availability, and publish — the media files stay hosted where they are.

This feature has two parts:

  • Initial bulk import — run once during setup to bring in all your existing episodes at once
  • Ongoing feed sync — optionally keep Benecaster in sync with your hosting provider as you continue publishing there

What to Expect

Import is a substantial head start, not a finished catalogue. It brings across everything the source feed actually carries — and a feed carries less than your episode pages do.

Where the source feed includes <content:encoded>, that is most of the work: title, written content, audio, artwork and all the numbering arrive together, and the draft needs little more than a read-through. Where it does not, you get accurate metadata and an empty episode body.

Two things are never in a feed and are always yours to set:

  • Tier availability — which tiers get the episode, and when. This is the decision Benecaster exists to serve, and there is nothing in RSS to infer it from — set it on each imported draft before publishing.
  • References, guest credits and custom fields — Benecaster structure with no RSS equivalent.

A 200-episode back catalogue imports in minutes and then wants a review pass. Budget for the pass: it is far less work than re-entering the catalogue, and it is not nothing.


Initial Bulk Import

During the Setup Wizard

The import step appears in the setup wizard for all new installations. If you don’t have an existing podcast to bring across, select No or use the Skip link to move on.

To import, select Yes, enter any public RSS feed URL, and click Import episodes →. A note beside the button reads “Large shows can take a while. You can leave this page; the import keeps going.”

Importing X of Y… counts every episode dealt with so far, including any skipped or failed, and lines under the progress bar say how many were already imported and how many could not be imported. When it finishes, the message gives the number imported, not the size of the feed: “16 episodes imported as drafts. Review them in Episodes after setup.”

If you press Continue before the import finishes, it keeps running in the background. You can check the result at Benecaster → Episodes once setup is complete.

Reloading the page rejoins a running import. Yes is chosen for you, the Feed URL field is hidden, and you see the progress and any Resume button. Continue does not start a second import. A finished or failed import from an earlier visit is not brought back: you get the usual form.

Switching from Seriously Simple Podcasting or PowerPress? Benecaster detects existing SSP and PowerPress episode data automatically, while the plugin is active, and presents a dedicated import step before the RSS import step. You won’t need to enter a feed URL — episode posts are read directly from your WordPress database. If both plugins are installed, one import brings across the episodes from both: SSP’s first, then PowerPress’s, counted together in one progress bar. See Switching from SSP or PowerPress for the full migration walkthrough, including shortcode replacement and redirect setup.

If an Import Stalls

An import works in short background runs of about 20 seconds, each handing on to the next, so a host that stops one does not end the import. The next run picks up where it stopped.

After five minutes with no activity, the screen says “This import has stalled: nothing has happened for a few minutes. Nothing is lost, and it carries on from where it stopped.” and offers Resume, which runs about 20 seconds of the import in that click. If the click itself fails, it says “That did not work. Try Resume again.”

After one click on Resume, the open page keeps the import moving, and says “This page is keeping the import moving, because WordPress’s scheduled tasks don’t seem to be running on this site. It pauses if you leave this page, and carries on when you come back.” It stops when the import finishes or you leave the page. If scheduled tasks start working, they take over and the page goes back to watching.

For a big import, set up a real cron job. Background runs depend on WordPress’s scheduled tasks, which run only when someone visits your site. On a quiet site the import slows once the page is closed. Each run does only about 20 seconds of work, so run the cron job every minute. See Cron Isn’t Firing on Time.

Re-running the Import

Benecaster → Settings → Tools → Import Episodes is a separate tool — it detects and imports from a locally installed Seriously Simple Podcasting or PowerPress installation, or both at once, reading episode posts directly from your WordPress database. It finds a plugin’s episodes only while that plugin is active, so if you have already deactivated SSP or PowerPress, activate it again before you import. From PowerPress it imports the episodes on the main podcast feed, not those only in a PowerPress channel, which is a separate podcast: bring a channel in as its own show, through an RSS import. It takes no feed URL and has no Default tier field, because it isn’t reading a feed. It offers the same optional Strip this prefix from episode titles field as the setup wizard’s SSP/PowerPress step (placeholder "e.g. My Show: ") — case-insensitive, ignores surrounding spacing, and only affects episodes brought in by the import you’re about to run. It starts with the show’s last prefix, which you can change or clear. See Switching from SSP or PowerPress for the full walkthrough.

To re-run the RSS-based bulk import after setup — for example if you added episodes to your old host after the initial import, or skipped the import step in the wizard — use Feed Sync: go to Benecaster → Settings → Show → Feed Sync, and click Sync Now. If you ran the import through the setup wizard, the Source feed URL field is already filled in — a completed wizard import saves its feed URL there automatically, as long as the show didn’t already have one set. This imports every episode in the feed whose GUID isn’t already in Benecaster; existing episodes are never duplicated. See Ongoing Feed Sync below.

Source Feed URL

Benecaster can import from any publicly accessible RSS feed. In most cases this is your original feed URL from your hosting provider — not the feed URL you submitted to Apple Podcasts or Spotify. If you’ve already moved your submitted feed to Benecaster’s URL, pointing the import at that URL would cause Benecaster to try to import its own output. Your hosting provider’s admin panel will have the original unlisted or backup feed URL.

What Gets Imported

Each episode in the feed is created as a WordPress draft. The following fields are populated automatically:

Field Source in RSS
Title <title>
Description <description> or <itunes:summary>
Episode content (show notes) <content:encoded>
Audio URL, or Video URL for a video file <enclosure url>
File size <enclosure length>
MIME type <enclosure type>
Duration <itunes:duration>
Publish date <pubDate>, shown in your site’s timezone
Episode number <itunes:episode>
Season <itunes:season>
Episode type <itunes:episodeType>
Explicit flag <itunes:explicit>
Author <itunes:author>
Artwork <itunes:image href>
Source page link <link>

A video file goes in the Video URL. When an item’s <enclosure type> is a video type (video/mp4, for example), the file is stored in the episode editor’s Video URL with Primary media set to Video, rather than in Audio, so it plays as a video on your website and goes out as the video in your feed. When the feed gives no type, or one that is neither audio nor video, the file name decides: .mp4, .m4v and .mov files are video, and anything else is audio. Every importer works this way: the setup wizard, Feed Sync, and the Seriously Simple Podcasting and PowerPress import.

Source page link is the episode’s page on your old host. It’s captured by both the setup-wizard import and Feed Sync, but only when it’s a full http:// or https:// address — anything else is left blank. It isn’t shown on any admin screen yet; it’s stored for reference and included in the site data export next to the source GUID.

Not imported — requires manual entry after import:

  • Tier availability dates
  • References, guest credits, and custom fields

Show notes depend on the source feed, and Benecaster never fetches your old episode page to fill them in. If the feed carries <content:encoded>, the full written episode content imports into the episode body. Buzzsprout, Libsyn, Podbean, Captivate, Transistor, Megaphone, Omny and RedCircle all include it. If the feed doesn’t carry it — Anchor/Spotify for Podcasters, Acast, RSS.com, hosted Blubrry, Spreaker and SoundCloud don’t, and Simplecast mostly does — the episode body is left empty; the written content has to be added in the editor. On those hosts, <description> is the full show notes, not just a podcatcher blurb — it’s still imported as the RSS description, goes out in your Benecaster feed, and shows on the episode page. Only the editor body is empty.

Open one imported draft before planning your review pass. Whether that body is full or empty tells you which of the two situations you are in for the whole catalogue.

Deduplication

Episodes are deduplicated by RSS GUID. If you run the import more than once — or import from a feed you’ve imported before — existing episodes are not duplicated. Only episodes whose GUID hasn’t been seen before are created as new drafts.

After Import

A blue banner appears at the top of Benecaster → Episodes whenever imported drafts are waiting for your review. The banner shows the count of unreviewed drafts and includes two links: Show imported, which filters the episode list to imported drafts only, and Review import, which expands a review table inline, right below the banner. Once the table is open, that same link reads Hide review — click it again to collapse the table back.

This episode-list table is the durable place to review imports. The same table also renders inside the setup wizard’s import steps and at Benecaster → Settings → Tools → Import Episodes, but those two copies only render while the show’s most recent import job is still on record — those records are pruned once superseded, so for a show you imported weeks ago, those two surfaces show nothing. The episode-list copy reads the episodes themselves and is always accurate, whatever imported them.

The table lists every draft any importer created for the show — title (linked to the episode editor), Media (the audio URL, or the video URL when there is no audio), artwork, a description excerpt, and a Source column naming which importer produced the row. A missing value in any column shows as an em dash rather than a blank cell. The media URL is shown as plain text, not a link — it points at your old host, and clicking a link there would download the media file rather than open a page.

Each row also carries a Flags column: a green tick when nothing is missing, or an issue-count badge that expands to one line per gap with a Fix → link (this opens the episode editor, not the specific field — there’s nothing to deep-link to, so the flag’s own text names which tab to look under). A summary line above the table reads, for example, “47 episodes imported. 12 have something worth checking before you publish.” Seven checks run: no audio URL, platform-hosted media, no artwork, no description, no duration, no episode type, and explicit not specified.

No audio URL is raised only for an episode with no media at all: no audio URL, no video URL and no video embed code. A video-only episode, or one with only a video embed, is complete without audio and is not flagged. An embedded audio player on its own still counts as no audio.

Platform-hosted media is the one flag that points at something outside your control. A media file still hosted on a platform you’re leaving — Patreon (including Patreon video on stream.mux.com), Anchor, Supercast, Substack and similar — belongs to that platform, so the flag reads “This episode’s media file is hosted by the platform you’re leaving, which decides how long it keeps working. Move it to your podcast host and update its URL under Media.” Both the audio URL and the video URL are checked. The same note shows under that URL on the episode’s Media tab until the new address is on an ordinary host, so you can see the fix took. The file can stop serving as soon as your subscribers start leaving the platform, so this is the only flag pointing at a failure waiting to happen. The other six are gaps, not faults — a flagged episode imported fine, it’s just missing something worth a look. Explicit not specified means the old feed said nothing at all for that item, so the episode follows the show’s own Explicit setting, which is normally correct; an episode where you deliberately chose Inherit is never flagged as if it were an error.

Setting Tier Access and Availability in Bulk

Tick the rows you want to change — use Select all with issues or the header checkbox to select everything, and Clear selection to start over — then use the toolbar above the table:

  • Set tier access — All Tiers, or one of the show’s tiers. Every tier is listed, Public and inactive tiers included, and All Tiers sets the date for every one of them
  • Set availability — Immediately, or On a date with a date-and-time picker
  • Apply to selected

Times you enter are your site’s local time, not UTC — a wrong hour here is invisible until the episode unlocks, so double-check the picker if your host or server is in a different time zone than you are. Apply stays disabled until at least one row is ticked, and also while On a date is chosen with an empty picker, so an incomplete selection can never fall through to unlocking the whole batch immediately by accident. Selection applies only to ticked rows, never the whole table, and the toolbar is available on all three surfaces the table renders in.

For each draft:

  1. Review the imported metadata and correct anything that didn’t map cleanly
  2. Add full show notes in the Content field if needed
  3. Set tier availability — individually in the episode editor, or in bulk from the review table above
  4. Publish when ready

See Setting Tier Availability for how to configure per-episode access.


Ongoing Feed Sync

If you continue publishing episodes at your hosting provider while transitioning to Benecaster, the feed sync feature can watch your hosting feed and automatically create drafts for any new episodes it finds.

Configuring Feed Sync

Configure the sync at Benecaster → Settings → Show → Feed Sync:

Source feed URL — the RSS feed URL for your hosting provider. Same URL as the initial import — if you ran that import through the setup wizard, this field is pre-filled with the feed URL you entered there once the import completes (only when the show didn’t already have a Source feed URL set). Required for sync to run.

Trigger — controls when Benecaster checks the source feed. This stays on Manual until you change it, even after a wizard import pre-fills the Source feed URL above — Benecaster never turns on background syncing for you.

Mode How it works
Manual A Sync Now button in the Feed Sync settings panel. You initiate it explicitly — no background activity.
On login Checks once per admin session when you log in. Shows an admin notice if new drafts were created. Silent if nothing new.
Daily Runs automatically once per day via a background job.

On new episode found — what Benecaster does when sync finds an episode whose GUID isn’t in WordPress yet:

Action Result
Create draft episodes Creates a draft. Appears in the episode list with the imported-drafts banner for your review before publishing.
Notify me only (no drafts) No draft is created. The new episode still counts toward “episodes found” in Last sync status below, so you can see something new showed up in the source feed without Benecaster acting on it.

Sync Now — triggers an immediate sync run regardless of the configured trigger mode. Available next to the source URL field. Useful for pulling in a specific episode right after publishing it at your host, or for testing a new configuration.

Last sync status — shown below the Sync Now button. Displays the date and time of the most recent run, how many episodes were found in the source feed, and how many new drafts were created. If the last run encountered an error, the error message is shown along with a hint for what to check (unreachable URL, invalid RSS, etc.).

What Happens After a Sync

When sync finds new episodes and creates drafts, the same blue banner appears at the top of Benecaster → Episodes as after an initial bulk import — the count of pending drafts and a Show imported link to filter to them.

Sync only creates new episodes. It never modifies episodes you’ve already imported or published, and it never deletes anything.

The Explicit Flag on Imported Episodes

RSS items may or may not carry an <itunes:explicit> tag. Benecaster follows the feed exactly and does not fill in the gaps:

In the source item Imported episode
<itunes:explicit>true</itunes:explicit> Yes A statement in the feed, carried across
<itunes:explicit>false</itunes:explicit> No Also a statement, and also carried across
Tag absent Inherit from show No statement to carry

The third row is the one that matters. When the tag is missing, the episode is left inheriting rather than being defaulted to clean — because “the feed didn’t say” and “the feed said clean” are different facts, and collapsing them loses information you cannot get back.

If Benecaster guessed “clean” for silent items, importing a back catalogue into a show marked explicit would write a clean override onto every one of those episodes, quietly contradicting the show. Leaving them on Inherit means they follow the show, which is what a feed with no per-item tag was already doing in every podcast app.

Practical upshot: set the show-level Explicit value in Shows → Settings → Feeds before or shortly after importing. It is what every inherited episode reports. Then use the sortable Explicit column on the Episodes list to spot-check the result and fix individual episodes with Quick Edit.

Stopping Sync

Once you’ve fully moved your publishing workflow to Benecaster, set the trigger to Manual or remove the source feed URL from the Feed Sync panel. Sync won’t run again until you re-enter a source URL.


Migrating Paying Subscribers

Episode import and feed sync bring your content across — they do not move your paying subscribers. If you’re migrating subscribers from Patreon or Supercast, use the Migration Wizard add-on.

Once your subscribers are across, the Migration Wizard offers to bring your episodes too: Import your episodes? It is optional, and nothing about the migration depends on it. Paste the feed to read from and click Bring my episodes in, or Not now to leave it for later. It runs the same import described on this page, so everything above applies — episodes arrive as drafts, and ones already here are left alone, which makes it safe to run again.

While it runs, the wizard shows how many episodes have been brought in so far, and it keeps going if you leave the page. If nothing happens for a few minutes, the wizard says the import has stalled and offers Resume: nothing is lost, and it carries on from where it stopped. After a click on Resume, the open page can keep the import moving, and says so. It then pauses if you leave the step and carries on when you come back. If it keeps stalling, ask your host to set up a real cron job.

When it finishes it says how many are waiting as drafts, how many were already here, and how many could not be created. Nothing is published until you publish it from Episodes. If the feed cannot be read, nothing is imported or changed, and your subscribers are unaffected.

Use the feed your paying supporters have been listening to on the platform you are leaving — not a public or trailer feed, and not one from a podcast directory. If the address you enter is on your own site, the wizard warns you: it may be the feed Benecaster already publishes, and importing it would bring in copies of episodes you already have. While an import is already running, the wizard does not offer to start another.

See Also

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

Last updated