Paid Memberships Pro Setup
Paid Memberships Pro (PMPro) is a WordPress membership plugin with a free core that 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 core plugin is free and the built-in payment gateway options cover most use cases.
Before You Start
- Paid Memberships Pro version 2.0 or higher 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
- 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 → 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 Subscription Plugin Not Connecting.
Step 2: Map Your Tiers
Go to Benecaster → 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.
See Mapping Your Membership Tiers for guidance.
Step 3: 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) | Update token’s tier; feed reflects new level on next poll |
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
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.
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. 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 → 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.