Skip to main content

Promote to Bridge — Moving Subscribers to an External Membership Plugin

Promote to Bridge is a one-time migration tool that lets you move subscribers from Benecaster’s built-in membership system into an external subscription plugin — MemberPress, WooCommerce Subscriptions, Paid Memberships Pro or Restrict Content Pro — while keeping their feed access uninterrupted during the handoff.

You would use this when you have outgrown the built-in membership system and want to adopt a full-featured membership plugin, or when you are consolidating an existing membership plugin with a second audience that started on built-in membership.


Before You Start

Payment must be handled outside Benecaster. The Promote to Bridge wizard creates subscriber accounts in the target membership plugin. It cannot move payment details or Stripe subscriptions across, and this is a deliberate security boundary rather than a missing feature.

Benecaster never holds your subscribers’ card numbers. Card details are entered directly into Stripe’s own hosted fields and stored by Stripe — they do not pass through your WordPress site, and there is nothing on your server to hand to another plugin. A Stripe subscription is likewise tied to the integration that created it and cannot be reassigned to a different plugin’s Stripe connection.

The practical consequence: you are responsible for collecting payment in the destination plugin (or billing subscribers separately), and for cancelling their Stripe subscriptions in the built-in membership system once the migration is done. Subscribers will need to enter their payment details again in the new system — there is no way around that, on any platform.

The wizard is a one-way operation. There is no built-in rollback.


Running the Wizard

The wizard is at Benecaster → Shows → [your show] → Settings → Subscription → Promote to a membership plugin (the Start promote wizard button). It runs in five steps:

  1. Target — choose the membership plugin you are moving to. Only plugins installed and ready to receive subscribers are listed, and a plugin older than Benecaster supports isn’t offered (see Subscription Plugin Compatibility).
  2. Map tiers — for each of your built-in tiers, listed by name (for example Silver Patrons), choose the corresponding level in the destination plugin. Every active tier must be mapped. A level closed to new signups is listed greyed out, as “… — closed to new signups”, and can’t be chosen: promoted subscribers re-enter their payment details on the level’s signup page, which refuses new signups. That covers a Paid Memberships Pro level with Allow Signups off, a Restrict Content Pro level set to Inactive, and a MemberPress membership or WooCommerce Subscriptions product set to Draft or Private.
  3. Preview — one line per tier, Tier name → level · N subscribers, then the Grace period (days) field and a box to tick confirming that subscribers must re-enter their payment details and that the show’s active membership plugin will switch. The grace period is how many days subscribers keep their existing feed while they complete setup in the new system. It is the default for the run; a developer can vary it per tier or per subscriber with the benecaster_promote_grace_length_days filter, so individual subscribers may end up with more or fewer days than you typed here. Press Run migration.
  4. Run — the migration runs.
  5. Done — Migration complete, with how many were promoted, skipped and errored, and the date the grace period runs to. Any failures are listed under Failed rows as User #N (tier name): what went wrong.

Two tiers mapped to the same level

You can choose the same level for more than one tier on Map tiers. Benecaster allows it, but a level in the destination plugin belongs to one tier, so the tier listed first on Map tiers keeps the level. Subscribers promoted from a later tier are created on that level, get the first tier’s access to episodes and website content, and are asked to pay for that level.

When this happens, the Preview step shows a box headed Some subscribers will change access, with one paragraph for each tier that loses the level, naming it, its subscriber count and the tier whose access it gets. It ends “To keep each tier’s access, go back and map each tier to its own level.” The run is not blocked: if that is what you want, carry on.


What Happens During Promotion

For each active subscriber:

  1. Benecaster calls the destination bridge to create a member account for that subscriber.
  2. A grace-period expiry date is written to the subscriber’s record.
  3. The subscriber’s existing feed token continues to work through the grace period.
  4. When the grace period ends, the feed token is revoked. On default settings their feed URL keeps working and starts serving the public feed — it does not go dead. See below.

Subscribers who already exist in the destination plugin (matched by email) are skipped.

The run also saves your tier mapping. Each built-in tier’s chosen level is saved as that tier’s mapping for the destination plugin, with a free tier’s mapping saved as free. Mappings you already had for that plugin, on levels the wizard didn’t use, are kept.

On Restrict Content Pro, a promoted subscriber gets an active, manual membership that doesn’t renew and has no expiry date, so it lasts until you or they change it in RCP.


Grace Period

The grace period gives subscribers time to connect their new membership account to their podcast app. During this window:

  • Their existing Benecaster feed token works as normal
  • They receive one reminder email about a week before the grace period ends (when 6 to 9 days are left). If you extend their grace period and the new end date is still at least 6 days away, they get one new reminder giving the new date
  • They receive an expiry email when the token is revoked

Revocation does not usually break the subscriber’s feed. A revoked token is a subscriber-level failure, and the per-show Serve the public feed on an invalid token setting governs those. It is on by default, so the subscriber’s existing feed URL keeps responding and starts delivering your public feed instead of their private one. Their podcast app keeps refreshing; they simply stop receiving subscriber-only episodes. Turn that setting off for the show and the same URL returns an error instead.

After revocation, subscribers who have been successfully onboarded in the destination plugin will have a new feed URL provided by the bridge. Subscribers who have not completed setup will need to contact you for assistance.

For more detail on how the grace period is managed and monitored, see Promote to Bridge — Grace Period.


Re-authorization

Benecaster now checks for you automatically, by default, with no setting to turn on. Every day, before a grace period would expire, Benecaster checks whether the subscriber is confirmed active in the destination plugin. If they are, their token is kept — no admin click required.

This is a daily re-check, not a one-time decision. It runs fresh on every tick: a subscriber kept today because they were active in the destination plugin reverts to the normal revoke on the very next check if they later cancel there.

“Kept” is not the same as “resolved.” The subscriber’s row is not marked re-authorized, and its grace-deadline badge in Promotion History still shows as past-due even while their token is being kept — automatic detection decides the token, nothing else. If you want the row itself to stop showing as past-due, go to Settings → Subscription → Promotion History, find their row, and click Mark re-authorized. This clears the expiry date and is the only thing that changes what the panel shows.

Automatic detection can’t answer every case — the destination plugin might be deactivated, or the promotion’s target might be unrecognised or missing. In those cases the token is revoked as before, and Mark re-authorized still works exactly as it always has.

There is also a developer-side override. The benecaster_promote_grace_expiry_should_revoke filter runs just before each daily check and can veto a revoke — this is how automatic detection itself is implemented, and the same filter is available to your own code if you need different logic than the built-in destination-plugin check. A veto means not today rather than never: the subscriber’s row stays past-due and is offered up again on the next daily run until you mark it re-authorized or extend it. See Promote to Bridge — Grace Period.


Promotion History

The Promotion History panel (below the wizard entry point) lists every subscriber who has been through a promotion. Each row reads Subscriber name — Tier name, with their email beneath, then a grace badge (Grace until , Grace expired or Re-authorized) and the plugin they moved to, by name (→ MemberPress). A subscriber whose account has since been deleted shows as User #N — Tier name. Rows still in their grace period have Extend and Mark re-authorized buttons.


For Developers

See Also

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