Made in Pennsylvania, USA 🇺🇸 by Breakfast
Plugin Licensing for Paid Memberships Pro
Sell WordPress plugins, issue license keys, & deliver automatic updates with Paid Memberships Pro.
Screenshots



Informs all users a new version is available for paying customers.

What it does
Attach File Downloads to Levels
Attach plugin .zip files to Paid Memberships Pro membership levels and control activation limits per product.
One License Key Per Customer
Generate one reusable license key per customer that validates downloads and updates across every plugin they purchase from your store.
Automatic Updates
Integrates with WordPress’s plugin updater to show update notices and version details. Seamless updates from your own plugin store in customer dashboards.
Site Management for Customers
Manages license activation and enforces limits on the number of sites. Customers manage sites in Membership Account page.
Frequent Questions
Who makes this software?
Plugin Licensing for Paid Memberships Pro is a Breakfast Company product made in Pennsylvania, USA 🇺🇸 by Corey Salzano. This product is an add-on for Paid Memberships Pro.
How is it licensed?
This plugin is 100% open-source GPLv2 software. The code is not obfuscated.
How do I connect my plugins to the store?
Here is a sample plugin with an updater you can use in your own projects.
Setup
- Install and activate Paid Memberships Pro.
- Install and activate this plugin, Plugin Licensing for Paid Memberships Pro.
- Edit a membership level at Memberships → Settings → Levels.
- Find and expand the Other Settings section.
- Use Add File to upload or attach a plugin zip. Use the Replace button to provide users with an updated version.
- Copy the generated file hash into the client plugin that should receive updates. Use the sample plugin as a guide to integrate the updater into your plugin.
- Instruct customers to enter their license key in the client plugin’s settings screen. License keys are found on the PMPro Membership Account page.
Documentation
Downloads and access control
The plugin creates protected download URLs under:
membership-account/download/<hash>
Those links check whether the current logged-in user still has access to the file before serving the download.
The uploaded zip files themselves still live inside your WordPress uploads directory at wp-content/uploads/pmpro-plugin-licensing/, so you should treat upload delivery as part of your hosting/security setup too. In particular:
- protect
wp-content/uploads/pmpro-plugin-licensing/from direct access at the server level - make sure your uploads directory is not being exposed by a CDN or edge cache in a way that bypasses WordPress access checks
- use the protected WordPress download URLs instead of raw upload URLs when sending customers download links
Example Nginx rule:
location ^~ /wp-content/uploads/pmpro-plugin-licensing/ {
deny all;
return 403;
}
Multiple plugin purchases
If you want customers to buy multiple plugin products, place those membership levels in a Level Group that allows multiple selections. Otherwise a new purchase can replace access to an earlier level instead of adding to it.
Invalid or expired licenses
An invalid or expired license does not remotely disable a customer’s plugin code. This project is primarily enforcing:
- update eligibility
- license/site activation status
- access to protected downloads from the store
If you want a client plugin to gate features locally, that logic must live in the client plugin itself.
Consume the Code
This plugin is maintained on Github at https://github.com/breakfastco/pmpro-plugin-licensing.