Tutorials & Guides By ChargePanda Support 4 min read

How to Sell WordPress Plugins on Your Own Website (Complete Guide 2026)

If you've been selling WordPress plugins on Envato or distributing them for free on WordPress.org while charging for a "pro" version, you've probably hit the same wall: you don't control the customer relationship, the pricing, or the renewal experience.

Envato takes a 37–55% cut. WordPress.org gives you nothing. EDD is a solid option but adds ongoing SaaS costs on top of hosting. There's a better path: host your own platform, own your data, and keep every dollar.

This guide walks through the full setup using ChargePanda — a self-hosted PHP/Laravel platform purpose-built for selling software licenses, plugins, and digital products.

Why developers are moving off Envato

Envato's marketplace was the default for a decade. In 2024–2026, the calculus has shifted:

  • Fee structure: Envato takes 37% on your first $75 in sales, dropping to 12.5% only after $75,000. Most independent plugin developers never get there.
  • No direct customer relationship: You can't email your own buyers, run campaigns, or build an audience.
  • Rigid licensing: Envato's Regular vs Extended distinction doesn't map cleanly to per-site or per-install plugin licensing.
  • No renewals by default: Envato doesn't have built-in subscription/renewal billing. You lose the customer after purchase.

Self-hosting solves all four. The tradeoff is setup time — which this guide minimises.

What you need before you start

  • A domain and a VPS or shared hosting (PHP 8.1+, MySQL 8.0+, Redis optional but recommended)
  • A Stripe account (or PayPal, Razorpay — ChargePanda supports all three out of the box)
  • Your plugin ZIP file ready to upload
  • About 30–60 minutes for initial setup

Step 1: Install ChargePanda

ChargePanda is a one-time purchase ($25 Regular / $925 Extended license for SaaS use). Download it from CodeCanyon, then deploy to your server:

  1. Upload the files to your server via FTP or SSH
  2. Create a MySQL database and run php artisan migrate --seed
  3. Set your .env with database credentials, Stripe keys, and app URL
  4. Run php artisan storage:link and configure your web server to point at /public

The admin panel is at /admin. Log in with the default credentials created during seeding, then change your password immediately.

Step 2: Create your plugin as a product

In the admin panel, navigate to Products → Add Product. Fill in:

  • Name: Your plugin's name (e.g., "Gravity PDF Pro")
  • Type: Digital Download
  • Upload files: Your plugin ZIP
  • Plans: Create one or more pricing tiers (e.g., Personal - 1 site / Agency - unlimited sites)

Each plan maps to a license tier. That's where activation limits live.

Step 3: Configure license key rules

Under Settings → Licensing, configure how keys are generated and validated:

  • Activation limit per plan: Personal = 1 site, Agency = unlimited
  • Domain binding: Tie a key to the WordPress site URL it was first activated on
  • License format: ChargePanda generates cryptographically secure keys (UUID or custom prefix format)
  • Expiry: Set to 1 year for annual renewal plans, or lifetime for one-time purchases

Step 4: Add license validation to your plugin

ChargePanda exposes a REST endpoint your plugin calls to validate the key. Here's a minimal example of the PHP call from inside your WordPress plugin:

$response = wp_remote_post( 'https://yourstore.com/api/license/validate', [
    'body' => [
        'license_key' => get_option( 'my_plugin_license_key' ),
        'domain'      => home_url(),
        'product'     => 'my-plugin-slug',
    ],
]);

$body = json_decode( wp_remote_retrieve_body( $response ), true );

if ( isset( $body['valid'] ) && $body['valid'] === true ) {
    // License is active — enable premium features
}

The API returns valid, expires_at, activations_remaining, and the plan name — everything you need to gate features or enforce limits.

Step 5: Set up renewal billing

This is where self-hosting pays off. ChargePanda handles the full renewal lifecycle:

  • Sends renewal reminder emails at configurable intervals (30 days, 7 days, 1 day before expiry)
  • Customers renew with one click from their account portal
  • Stripe Billing handles automatic renewal for subscription-type plans
  • Expired licenses are flagged in the validation API — your plugin can degrade gracefully

Step 6: Migrate existing customers (if needed)

Moving from Envato? You can bulk-import license keys via CSV in the admin panel. Assign existing customers an order, generate keys, and email them their portal login. The import tool handles the heavy lifting.

The revenue difference

To make this concrete: if you sell a plugin at $49/year and have 500 active licenses:

  • On Envato: At a blended 25% fee — you keep ~$18,375/year
  • On ChargePanda: $0 fees — you keep $24,500/year. The $25 platform cost pays back in the first sale.

Over three years that's a $18,375 difference — from a $25 setup. The math is stark.

What's next

Once your plugin store is live, consider adding:

  • A knowledge base — ChargePanda includes a built-in KB that customers can search before opening tickets
  • The SEO Agents module — generates meta descriptions and schema markup for your product pages automatically
  • Webhook integrations — connect new purchases to your email list via Zapier or Make

Start selling your plugins — keep 100% of revenue

ChargePanda is a one-time $25 purchase. License management, renewal billing, and a REST validation API — all included.

C

ChargePanda Support

ChargePanda Support is the editorial team at ChargePanda — a self-hosted platform helping developers and digital product sellers manage licensing, file delivery, subscriptions and support from one place.

Comments

Login to leave a comment.