Description
Rova Media Dodo Payment Addon for Paid Member Subscriptions integrates Dodo Payments hosted checkout with Paid Member Subscriptions and PMS Pro.
Created by Uchechukwu Ajuzieogu for Rova Media Digital Inc.
The plugin lets site owners sell PMS subscription plans through Dodo Payments by mapping each PMS plan to a Dodo Product ID. It supports one-time payments, recurring subscriptions, payment and subscription webhooks, renewals, cancellations, and optional one-time sign-up fee products.
If a PMS subscription plan has a sign-up fee, the plugin can add a separate one-time Dodo product for that fee. Existing members can be backfilled so they are not charged the sign-up fee again during renewal, retry payment, or resubscribe checkout.
Key features:
- Adds Dodo Payments as a PMS payment gateway.
- Uses Dodo Payments hosted checkout.
- Supports recurring PMS subscription plans.
- Supports Dodo payment and subscription webhooks.
- Supports one-time PMS plans.
- Supports separate Dodo products for PMS sign-up fees.
- Stores Dodo subscription IDs on PMS member subscriptions for renewal and cancellation matching.
- Includes live/test API key and webhook secret settings.
- Includes an existing-member backfill tool for sign-up fee history.
Requirements
- WordPress.
- Paid Member Subscriptions / PMS Pro installed and active.
- A Dodo Payments account.
- Dodo Product IDs for each PMS subscription plan you want to sell.
- A separate one-time Dodo Product ID for any PMS sign-up fee.
External services
This plugin connects to Dodo Payments to create hosted checkout sessions, validate configured Dodo product IDs, and process Dodo webhook events for successful payments, failed payments, renewals, cancellations, and subscription status changes.
When a customer starts checkout, the plugin sends the selected Dodo Product ID, customer email address, customer name when available, PMS payment ID, WordPress user ID, subscription plan ID, checkout return URL, and related checkout metadata to Dodo Payments. This is required to create the hosted checkout session and associate the completed Dodo payment with the correct PMS subscription.
When an administrator saves a subscription plan with a Dodo Product ID, the plugin may request product details from Dodo Payments to validate whether the product is configured as one-time or recurring.
When Dodo Payments sends a webhook to the site, the plugin receives and processes the webhook payload sent by Dodo Payments so it can update the related PMS payment and subscription records.
This service is provided by Dodo Payments. Terms: https://dodopayments.com/legal/terms-of-use/ . Privacy policy: https://dodopayments.com/privacy-policy .
Configuration
Webhook URL
Use the webhook URL shown in the Dodo Payments settings block. It has this format:
https://example.com/?pay_gate_listener=rovadpa_dodo_payments
Recommended webhook events
Enable at least these events in Dodo Payments:
- payment.succeeded
- payment.completed
- payment.failed
- subscription.active
- subscription.created
- subscription.renewed
- subscription.cancelled
- subscription.expired
- subscription.failed
- subscription.on_hold
Subscription plan mapping
Edit a PMS subscription plan and fill in:
- Dodo Payments Product ID: the main Dodo product for the plan.
- Dodo Sign-up Fee Product ID: the separate one-time Dodo product for the sign-up fee, if the PMS plan has one.
For recurring PMS plans, the main Dodo product should be configured as a recurring/subscription product in Dodo.
For sign-up fees, the Dodo sign-up fee product should be configured as a one-time product.
Installation
- Upload the plugin zip through Plugins > Add New > Upload Plugin.
- Activate Rova Media Dodo Payment Addon for Paid Member Subscriptions.
- Go to Paid Member Subscriptions > Settings > Payments.
- Enable Dodo Payments as an active payment gateway.
- Add your Dodo API keys and webhook signing secrets.
- Copy the webhook endpoint shown in the settings block and add it in your Dodo Payments dashboard.
- Edit each PMS subscription plan and add its Dodo Product ID.
- If the plan has a sign-up fee, add the separate Dodo sign-up fee Product ID.
- For existing members who already paid the sign-up fee, run the included backfill tool once.
FAQ
-
Will existing customers be charged the sign-up fee again?
-
No, not if the plugin knows they already paid it. The plugin stores
_rovadpa_signup_fee_chargedon the PMS member subscription after a successful checkout that includes a sign-up fee.For customers who paid before this plugin or before the sign-up fee tracking was added, run the Existing Members – Sign-up Fee Backfill tool once from the Dodo Payments settings block. It checks existing completed payments for fee-based plans and marks those members as already having paid the fee.
-
What happens on renewal?
-
For renewals, the plugin creates a PMS payment history record when Dodo sends a subscription renewal webhook, then extends the PMS member subscription expiration date.
-
What happens if Dodo sends event_type instead of type?
-
The plugin supports both webhook event field names:
typeandevent_type. -
Does this plugin modify PMS Pro files?
-
No. It is an independent add-on and does not edit PMS or PMS Pro core files.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Rova Media Dodo Payment Addon for Paid Member Subscriptions” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Rova Media Dodo Payment Addon for Paid Member Subscriptions” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.8 – 2026-07-17
- Removed the legacy migration that directly updated the Paid Member Subscriptions settings option.
- Confirmed all add-on-owned functions, classes, constants, transients, metadata, hooks, and settings branches use the unique
rovadpaprefix.
1.0.7 – 2026-07-15
- Removed the generic Plugin URI because it duplicated the Author URI.
1.0.6 – 2026-07-15
- Rebuilt the release archive with standard forward-slash paths and WordPress-compatible file permissions.
- Fixed plugin folders that could fail to delete cleanly after deactivation in WordPress Playground and some hosting environments.
1.0.5 – 2026-07-15
- Added the required translator comment directly above the placeholder translation call.
- Replaced the interpolated database table name with WordPress’s prepared
%iidentifier placeholder. - Updated the minimum WordPress version to 6.2, where identifier placeholders were introduced.
1.0.4 – 2026-07-15
- Fixed the WordPress.org package slug and text-domain validation failure.
- Added nonce verification to the existing-member backfill result notice.
- Escaped the backfill result message before output.
- Documented the signature-authenticated webhook and prepared PMS subscription lookup for code standards checks.
- Fixed Rova gateway settings storage while retaining legacy saved credentials.
- Added automatic migration for the legacy active gateway and renewal records.
1.0.3 – 2026-07-15
- Updated ownership and attribution to Rova Media Digital Inc.
- Added creator credit for Uchechukwu Ajuzieogu.
- Updated plugin slug, text domain, and code prefixes for the Rova Media package.
1.0.2 – 2026-07-15
- Updated plugin name, slug, text domain, and global prefixes for WordPress.org review.
- Added Dodo Payments external service disclosure with legal links.
- Sanitized decoded webhook JSON before use.
- Tightened nonce and request input handling.
1.0.1 – 2026-07-14
- Fixed webhook compatibility for Dodo payloads using
event_type. - Added support for webhook payloads wrapped in
dataorpayload. - Improved nested payment/subscription ID extraction.
- Prevented generic payment IDs from being saved as subscription profile IDs.
- Improved checkout session metadata storage.
- Added version history.
1.0.0 – 2026-07-13
- Initial Dodo Payments gateway integration for Paid Member Subscriptions / PMS Pro.
- Added hosted checkout creation, webhook processing, subscription renewal handling, Dodo Product ID mapping, and sign-up fee product support.