I shipped a plugin to the WordPress.org directory.
It got zero installs.
That is not a complaint, it is the normal outcome.
Roughly 19% of all plugins in the directory never pass zero installs, which is more than 10,500 of them.
But I wanted to know why, and whether the answer was "your plugin is bad" or something structural.
So instead of reading marketing advice, I queried the directory API and counted.
Everything below is reproducible.
The API is free, needs no key, and every query I used is in the article.
The short version Search is a two phase system, and phase one is a hard filter, not a ranking.
If a single word of the user's query is missing from your listing, you are excluded from that search entirely.
Phase two is where you lose, and it is ranked partly on active installs.
That is the cold start trap.
Of the plugins that broke out recently, 88% had distribution before they started.
The two behaviours that actually correlate with breaking out from nothing are release cadence and resolving support threads, which are two of the five phase-two ranking inputs and the only two a plugin with no installs can move.
WordPress.org gives plugin authors no analytics whatsoever.
No listing views, no impressions, no click-through.
Anyone who tells you confidently what makes people click install is guessing.
How search actually works The best-documented account traces to WP Tavern's 2017 coverage of the directory relaunch, quoting Greg Brown, the Automattic data engineer who built it.
It runs on Elasticsearch, and it has two phases.
Phase one builds the candidate pool.
It matches against title, excerpt, description, tags, slug, author name and contributor names.
Critically: all search keywords must appear somewhere, or the plugin is excluded from the result set.
Not ranked low.
Excluded.
Phase two sorts that pool by last update date, compatibility with the current core version, active installs, percent of support tickets resolved, and average rating.
That split matters more than anything else in this article, because phase one is entirely yours and phase two mostly is not.
Testing the hard filter on my own plugin I took my live plugin and measured its actual position for terms it should rank for, then checked which query words appear in its listing. rank term missing words 14 disposable email blocker none 46 block disposable email none 50 disposable email none 146 temporary email none >300 email validation none >300 spam registration "spam" Two failures, two completely different causes. "spam registration" fails because the word spam appears nowhere in the listing.
That is phase one.
It is a hard exclusion, and it is free to fix. "email validation" fails even though every word is present.
That is phase two: the term is owned by WP Mail SMTP and CleanTalk on install count, and no amount of rewriting changes it.
Being able to tell those two apart is the single most useful thing I learned.
One is a typo-level fix.
The other is not a copy problem at all.
Here is the query, if you want to check your own.
Note the flag, without it your shell will try to glob the square brackets: Who actually breaks out This is the part I expected to be discouraging, and it was worse than I expected.
I swept the entire directory for plugins with 1,000 or more active installs.
That is 7,032 plugins.
Then I filtered to those added in the last 18 months.
That leaves
167.
Those are the breakouts.
Then I looked at who published them. cause share Author already ran another plugin with real installs 67% Known commercial brand with an audience off WordPress 17% Cross-promoted from the author's own theme or membership site 3% Legacy plugin name revived by a directory insider 1% Company formed specifically to ride a trend 1% Unclear, possible genuine cold start 10% 88% had some form of pre-existing distribution.
The scale of the first group is worth spelling out.
One vendor launched eight breakouts off the back of a two million install plugin.
Another launched thre