Paid Memberships Pro Setup
Paid Memberships Pro (PMPro) is a WordPress membership plugin whose free version handles the fundamentals: membership levels, recurring billing, and subscriber management. It’s a solid choice for straightforward podcast subscription setups, particularly if budget is a factor — the plugin is free and its built-in payment gateway options cover most use cases.
Before You Start
- Paid Memberships Pro 3.0 or later must be installed and active. The free version from WordPress.org is sufficient for Benecaster integration — no paid PMPro license is required for the bridge to function. An older version is listed greyed out in the subscription plugin picker, with “Requires Paid Memberships Pro 3.0 or later (you have …)”, and Promote to Bridge doesn’t offer it. A show already connected to an older version keeps working, but shows a Membership plugin needs attention notice until you update (see below).
- At least one PMPro membership level should exist before mapping tiers
- You should have a Benecaster paid license activated
Step 1: Connect the Bridge
Go to Benecaster → Shows → [your show] → Settings → Subscription.
If PMPro is active, it appears in the subscription plugin list. Select Paid Memberships Pro and click Connect.
Benecaster reads your PMPro membership levels and confirms the connection.
If PMPro doesn’t appear, confirm it’s active (not just installed) at Plugins → Installed Plugins. See Membership Plugin Not Connecting.
Step 2: Map Your Tiers
Go to Benecaster → Shows → [your show] → Settings → Subscription → Tier Mapping.
Benecaster lists all PMPro membership levels. Assign each level to the corresponding Benecaster tier. Leave any levels unmapped that don’t relate to podcast access.
PMPro often has levels named with both the access tier and the billing frequency (e.g., “Gold — Monthly,” “Gold — Annual”). Both can map to the same Benecaster tier — Benecaster cares about access level, not billing frequency.
A level with Allow Signups unticked is still listed, with a grey Signups closed label. Its members keep their access, so map it. Benecaster counts its price in the Dashboard’s revenue estimate, and [benecaster_pricing_table] and [benecaster_subscribe] leave it off, because PMPro refuses checkout on it.
See Mapping Your Membership Tiers for guidance.
Mapping From PMPro’s Level Screen
You can also set the tier on PMPro’s own level screen: Memberships → Settings → Levels, then edit a level, Add New Level or Copy. Near the bottom there is one Benecaster Tier (show) dropdown per show. The dropdown lists the same tiers as Tier Mapping: Free, Paid, then each of the show’s tiers once, by name, including a tier no level is mapped to yet.
- Add New Level and Copy start every show on — None (unmapped) —, so a new level is never mapped by accident. Pick a tier for each show that should give the level podcast access.
- Every show’s dropdown is saved when you save the level. A show left on — None (unmapped) — is unmapped for that level, even if it was mapped before, so check each row before you save an existing level.
Your Subscribe Buttons
Once your levels are mapped, [benecaster_subscribe] shows each tier with the price Paid Memberships Pro charges for it and a Subscribe button (Join free on a free tier). The button goes to your PMPro Checkout page with the level added (?level={id}).
A one-time level is priced by its Initial Payment. A level with no recurring billing shows, and counts as, what it charges at checkout, and its members count toward your plan’s paying-subscriber limit. A level counts as free only when PMPro treats it as free: initial payment, billing amount and trial amount all 0.
Check those pages under Show Settings → Subscription → Signup pages, and replace any that are wrong — see Signup Pages. Only pages on this site can be used.
Step 3: Sync Your Existing Members
If PMPro already had members before you connected it, they don’t have feed links yet: Benecaster only hears about a member when PMPro reports a level change for them. After mapping your levels, go to Benecaster → Shows → [your show] → Settings → Subscription → Sync existing members and click Sync existing members to give every active member on a mapped level their link. See Sync Existing Members for what it does and the email choice.
Step 4: Test the Connection
Add a test member manually — go to Memberships → Members → Add Member, assign them a level, and save.
A Benecaster token should be generated within a few seconds. Verify at Benecaster → Subscribers.
Alternatively, enable PMPro’s test mode, complete a checkout flow with a test payment, and confirm the resulting subscriber appears in Benecaster.
How PMPro Events Map to Benecaster
| PMPro event | Benecaster action |
|---|---|
| Membership level set (new or changed) | Generate token (new member) or update tier (level change) |
| Membership cancelled | Mark token inactive |
| Membership expired | Mark token inactive |
| Level changed (upgrade or downgrade) between two levels mapped on the same show | A plan change, not a cancellation: the subscriber keeps the same feed URL, their history records an upgrade or downgrade, and the feed reflects the new tier on its next poll |
| Level changed to another show’s level, or to an unmapped level | The old show’s access ends at once |
PMPro fires these events via its action hook system. Benecaster listens for pmpro_after_change_membership_level and related hooks to keep subscriber status in sync.
PMPro-Specific Notes
“Membership plugin needs attention”: Benecaster checks the plugin each show uses at most once an hour in wp-admin, and on the first admin page after a Benecaster update. If PMPro is deactivated, older than 3.0, or missing a function Benecaster calls, a Membership plugin needs attention notice appears under Notifications (the bell), naming the show and what is wrong, with a Go to Updates button. The show keeps working; the notice clears itself once the problem is fixed. See Membership Plugin Not Connecting.
Multiple levels per user: PMPro can assign multiple membership levels to a single user simultaneously (a feature of PMPro’s multi-level support). Benecaster maps each active level independently. If a user holds two active levels, they receive access at the highest applicable Benecaster tier.
Free trial levels: PMPro supports free trial periods on membership levels. Benecaster generates a token and sends the welcome email when the trial membership is activated. If the subscriber doesn’t convert after the trial, the cancellation event fires and the feed is revoked.
Drip content (PMPro Drip add-on): PMPro has a Drip add-on that releases content over time based on how long someone has been a member. This applies to PMPro’s own content restrictions, not Benecaster’s feed. Benecaster uses membership level and active status only — Drip timing doesn’t affect feed access.
Billing and payment gateways: Benecaster has no dependency on which payment gateway PMPro uses (Stripe, PayPal, Braintree, etc.). The bridge only reads membership status from PMPro’s database — payment handling is entirely PMPro’s concern.
Payment failure detection: The benecaster_subscription_payment_failed hook fires when PMPro reports a payment failure via pmpro_subscription_payment_failed. This is confirmed to fire for PMPro’s Stripe and PayPal Express gateways. Other gateways may not call this hook consistently — if your gateway doesn’t trigger payment failure events, failed payment handling will not suspend feed access until PMPro expires or cancels the membership through its own logic.
Renewal detection: Benecaster’s benecaster_subscription_renewed hook fires when PMPro calls pmpro_changeMembershipLevel as part of a renewal. Some PMPro gateway integrations renew by extending the membership expiry date directly in the database rather than calling this hook — in those cases benecaster_subscription_renewed does not fire. Feed access remains unaffected (the membership level stays active), but any renewal-triggered logic in your code (such as sending a receipt or logging the event) will not run for those gateways.
Deleting a member’s WordPress account: when you delete the account (Users → Delete, or wp user delete), Benecaster switches off that person’s feed link on every show and removes their Benecaster data. It does not cancel their PMPro billing; that is PMPro’s decision. On the Delete Users screen, PMPro shows a box for a member with an active level, reading Cancel any related membership levels first. This may trigger cancellations at the gateway or other third party services. Tick it. Left unticked, PMPro keeps charging someone whose feed has already stopped. wp user delete has no such box: there, PMPro cancels only if its pmpro_user_deletion_cancel_active_subscriptions filter returns true, so cancel the membership in PMPro first.
Recurring orders vs one-time: PMPro handles both recurring memberships (subscriptions) and one-time memberships (lifetime access). Benecaster doesn’t distinguish between them — if the membership level is active, the feed is active. A lifetime member keeps their token until their membership is manually cancelled or expires.
Multiple billing periods and price points: PMPro membership levels each have a single billing amount and billing period (a one-time level is priced by its initial payment instead). To offer subscribers a choice of billing frequency for the same access level, create a separate PMPro level for each option — then map both levels to the same Benecaster tier.
- Monthly and annual billing for the same tier — create two PMPro levels (for example, “Premium — Monthly” and “Premium — Annual”). In Benecaster → Shows → [your show] → Settings → Subscription → Tier Mapping, map both levels to the same Benecaster tier. A subscriber who purchases either option gets the same feed access — Benecaster checks all of a user’s active levels against the tier map.
- Regional or currency pricing — if you use a multi-currency add-on that creates separate PMPro levels per currency or region, map all variants to the same Benecaster tier using the same approach.
- Different access levels at different price points — create separate PMPro levels for each access level and map each to a distinct Benecaster tier. There is no limit on how many PMPro levels can map to the same Benecaster tier.
See Also
Need this built rather than just documented? See our services →