Launch

Launching on WordPress.org: Free-to-Paid Funnel Strategy

⏱ 15 min

A free plugin on WordPress.org is a real distribution advantage: the directory puts your product in front of people actively searching for exactly what it does, with no ad spend. Turning that traffic into paying customers without triggering a guideline violation, or just an annoyed one-star review, takes a specific, disciplined approach. This lesson covers the patterns that actually comply with the directory’s current rules, built directly on the guideline numbers Lesson 4 and Course 8 already established.

What you'll learn in this lesson
The free tier has to be genuinely complete, not crippled
The line between freemium and trialware, applied to funnel design specifically.
How to upsell without violating the nagging rules
What "limited in scope" and "dismissible" actually require in practice.
Where disclosure has to happen in the funnel
Before a paid upgrade even asks for a license key, not after.
What a compliant upgrade path looks like end to end
From first activation to a completed upgrade.
Prerequisites

This lesson assumes you’ve read Course 8’s freemium-versus-trialware coverage and Lesson 4’s GPL guidance. It builds a funnel on top of both rather than repeating them.

Step 1: The free tier’s abilities have to keep working, indefinitely

This is the same line Course 8 drew and it’s worth restating precisely because a funnel is exactly where developers are tempted to blur it: the directory’s guidelines prohibit functionality that’s “restricted or locked, only to be made available by payment or upgrade,” and specifically state that functionality may not be disabled after a trial period or a usage quota is met. For an AI plugin, that means: whatever abilities your free listing registers have to keep executing fully, forever, for every installer, not for the first 30 days or the first 100 calls. Paid functionality has to come from something genuinely additional, more abilities, more MCP servers, a hosted service, sold separately, not from the free listing’s own features switching off.

Step 2: Upsell notices have to be limited, sparing, and dismissible

The guidelines directly address in-plugin promotion: upgrade prompts, notices, and alerts “must be limited in scope and used sparingly,” and any site-wide notice must be dismissible or self-dismiss once resolved. Advertising within the WordPress dashboard should generally be avoided. Practically, that rules out a persistent banner on every admin screen, a notice that reappears after being dismissed, or copy implying the free version is broken or crippled to push an upgrade.

Compliant versus non-compliant upsell patterns
PatternCompliant?
A single settings-page section listing what the paid tier adds, visible only on your own plugin’s settings screenYes
A dismissible admin notice shown once, after a few days of real usage, pointing to a genuinely relevant paid featureYes, if it stays dismissed and doesn’t recur
A persistent top-of-every-admin-screen banner that reappears after dismissalNo
Copy suggesting the free version is unsafe, unsupported, or intentionally limited to pressure an upgradeNo, and it also risks crossing into the trialware pattern in spirit even if the code doesn’t literally lock
A useful free tier sells better than a nagging one

The guidelines caution that making a plugin harder to use doesn’t generally earn a good review, and that’s borne out in practice: a free plugin whose abilities genuinely work well tends to convert on its own merit, through documentation and a clear features comparison, rather than through pressure. Treat the free tier as your best marketing asset, not a deliberately unsatisfying preview.

Step 3: Disclosure belongs at the top of the funnel, not the bottom

Guideline 7 requires explicit, opted-in consent before a plugin contacts an external server, typically through a checkbox or a registration step in settings, not a silent default. For an AI plugin this applies twice over: once for the free tier’s own calls to an AI provider (Course 8 covered this for the base plugin), and again for anything your upgrade or licensing flow itself calls out to, a license-check endpoint, a paid add-on’s own AI backend, or a hosted service from Lesson 3. Both need the same treatment: plain language in the readme and the UI about exactly what gets sent where, and an active opt-in step rather than a call that fires the moment a license key is entered.

A compliant funnel, start to finish
Free listing works fully, indefinitely
No trial period, no quota-based lockout, on anything shipped in the free plugin.
Setup discloses every external call before it happens
Both the AI provider call and, later, any license-check call.
Upsell is a page section, not a persistent banner
Visible where a user is already looking at settings, not injected across wp-admin.
Any admin notice is dismissible and doesn't recur
Shown at most a small number of times, tied to genuine, relevant usage.
The paid tier is a real, separate plugin or service
Not the same code with functionality flipped off by a license check.

Test it

Check your own plugin for the two most common funnel violations: notices that don’t respect dismissal, and functionality gated by license status rather than genuinely separate.

# Find admin notice hooks and confirm each has a corresponding dismiss check
grep -rn "admin_notices" --include="*.php" .

# Find anywhere a license or license-status check gates core (not add-on) functionality
grep -rn "is_licensed\|license_status\|is_valid()" --include="*.php" . | grep -v "class-license-check"

For every admin notice match, confirm there’s a get_user_meta() or option check gating whether it shows again after dismissal. For every license-status match outside the license-check class itself, confirm it’s gating a genuinely separate paid add-on’s functionality, not disabling something the free listing already shipped.

Recap

A compliant free-to-paid funnel on WordPress.org depends on three things holding at once: the free tier’s abilities work fully and indefinitely, upsell notices stay limited, sparing, and properly dismissible, and every external call, including your own license-check traffic, is disclosed and opted into rather than silent. Get all three right and a free listing becomes a genuine, sustainable acquisition channel rather than a compliance risk.

Resources & further reading

← GPL Compliance for Commercial WordPress Plugins Launching Outside WordPress.org →