I priced my plugin’s Pro tier at $34.99 a year. That felt right — it’s in line with what comparable WordPress plugins charge, it’s low enough not to require a purchase decision, and it’s a number I’d pay without thinking about it.
Then I sat down to plan customer acquisition and worked out what it would actually cost to buy a customer at that price. The answer wasn’t “expensive.” The answer was that it doesn’t work at all, and it isn’t close.
I want to write that math down, because most advice about launching a small software product assumes you’ll eventually run ads, and for a large swath of the WordPress plugin market that assumption is simply wrong. Not “wrong until you optimize.” Structurally wrong.
A note on the numbers: the figures below are a model, not my books. I’m using conservative industry-typical assumptions and stating each one, because the argument doesn’t depend on precision — it survives being wrong by a factor of five, which is the point. Swap in your own numbers and the shape will hold.
What a customer is worth
Start with lifetime value, because everything downstream depends on it.
Gross revenue: $34.99/year.
Minus platform and payment fees. Between the licensing platform’s cut and payment processing, call it 10%. That’s roughly $31.50 net per year.
Times expected lifetime. This is the number people get wrong, usually optimistically. Annual renewal rates for small WordPress plugins are not great — a lot of buyers purchase for a specific problem, solve it, and don’t renew. If 40% of customers churn each year, average customer lifetime is 1 / 0.40 = 2.5 years.
LTV ≈ $79.
Be generous and assume 30% churn instead: 3.3 years, LTV ≈ $104. Call it somewhere between $80 and $105. That’s the entire budget available to acquire one customer, and spending all of it means making nothing.
What a customer costs on cold ads
Now the other side. This is a funnel with two conversion steps, and the second one is brutal.
Cost per click. WordPress-adjacent keywords are not cheap. You are bidding against hosting companies, page builders, agencies, and managed-WordPress providers — businesses whose customers are worth hundreds or thousands of dollars. Their bids set the floor. Call it $3.00 per click, which is optimistic.
Click to free install. Someone clicks your ad, lands on your site, and installs the free plugin. A 7% conversion rate here would be a good landing page.
Free to paid. This is the number that kills it. Freemium conversion rates for WordPress plugins commonly sit between 1% and 3%. Use 2%.
So the cost to acquire one paying customer:
$3.00 / (0.07 × 0.02) = $3.00 / 0.0014 = $2,143
Two thousand one hundred dollars to acquire a customer worth eighty.
That’s not a gap you close with better ad copy. It’s a gap of roughly 25×. Every assumption above would have to break in your favor simultaneously — halve the CPC, double the landing page rate, triple the free-to-paid rate — and you’d still be at about $180 per customer against an $80 LTV. Still losing money on every single sale, just less spectacularly.
Why “optimize the funnel” doesn’t rescue it
The instinct is that these are all tunable numbers. They are. They’re just not tunable enough, and the reason is worth understanding.
You don’t control CPC. It’s set by the highest-LTV bidder in your keyword space, and that isn’t you. A managed hosting company can pay $8 a click and be delighted, because their customer is worth $1,500. You’re in an auction priced by someone else’s economics.
Free-to-paid is bounded by the product, not the marketing. You can move 2% to 3% with better onboarding and well-timed prompts. You cannot move it to 20%, because most people who install a free plugin are exactly the people for whom the free version is sufficient. That’s not a leak in the funnel. That’s what free tiers are.
Cold traffic converts worse than every benchmark you’ll read. Those 1–3% figures come largely from directory traffic — people actively searching for a solution. An ad interrupts someone who wasn’t looking. Cold traffic performs below the benchmark, not at it.
The math isn’t a signal that I’m bad at ads. It’s a signal that at this price point, paid acquisition is a channel available to competitors with different economics.
The channel I already have and wasn’t taking seriously
Here’s what reframed it for me: the WordPress.org plugin directory is a search engine with buying intent, and listing on it is free.
Someone typing “database health monitor” into their WordPress admin has a problem, is looking for a solution, and is one click from installing. That’s better-qualified traffic than anything I could buy, and the cost per click is zero.
I had been treating the directory listing as a compliance obstacle — a thing to get through. It’s the acquisition channel. Which changes what the work is:
- The readme’s short description and tags are the equivalent of ad copy, and they’re what directory search matches against
- Screenshots and the banner do the same job as a landing page, for people who will never see my landing page
- Reviews and active install count drive ranking and conversion, and both compound
- Every install is a free user who might convert later, at no marginal cost
None of that is glamorous. All of it is free, and it accrues rather than resetting to zero when you stop paying.
The three levers that actually move
Given LTV is the constraint and cold traffic is a dead end, there are three things worth doing.
1. Convert the traffic you already have, better
If you can’t cheaply buy more free users, get more value from the ones arriving through the directory. Moving free-to-paid from 2% to 3% is a 50% revenue increase with zero acquisition spend.
What I’m doing here:
Trigger upsells on real events, not timers. The free tier detects genuine problems — that’s the whole product. The moment it flags something real on a user’s site is the moment the paid features are obviously worth having. A prompt at that moment is relevant; a prompt on day three is an interruption. So the upsell fires when a module actually finds something.
Extend the trial from 4 days to 14. Four days was a serious mistake for this product specifically. It’s a monitoring tool. Its value is demonstrated by catching something, and sites don’t break on a convenient schedule. A four-day trial mostly demonstrates that nothing went wrong that week.
Widen the refund window to 30 days. Lowers purchase friction, and for a product whose entire pitch is trustworthiness, a stingy refund policy sends the wrong signal about what kind of operator you are.
Ask for reviews, but only after delivering value. Review requests gated on the plugin having been active at least two weeks and having raised at least one genuine flag. Asking someone who’s seen nothing happen to vouch for you is how you get mediocre reviews, and directory ranking is downstream of reviews.
2. Raise the ceiling
The deeper problem is that $79 LTV constrains everything. So add tiers for users with more sites and more pain:
- Freelancer — $99/yr, 5 sites
- Agency — $249/yr, 25 sites
An agency managing 25 client sites has a categorically different relationship with this problem than a hobbyist with one. Their downside isn’t inconvenience; it’s a client calling to ask why their site has been down since Tuesday. They have budget, and the value scales with site count in a way that’s easy to articulate.
At $249/yr with better retention — agencies churn less, because the tool is embedded in a workflow — LTV moves into the several-hundred-dollar range. That doesn’t make cold ads viable, but it makes other things viable: direct outreach, partnerships, sponsoring things agencies read.
3. Write things worth finding
Content SEO is slow and it compounds, which is the exact opposite profile from ads, and the exact right profile when your LTV is small and your time is worth more than your ad budget.
The posts I’ve written about this build — the security audit, the directory rejections, the SVN process — cost nothing but time and will still be findable in three years. Some of them rank for problems my plugin solves. That’s the same funnel as an ad, minus the auction.
This is also the honest reason I’m writing this particular post.
When ads would become worth revisiting
I’m not against paid acquisition. I’m against it now, at this price, from cold. The conditions that would change my mind:
Retargeting rather than cold. Someone who visited the site or installed the free plugin is a different audience with a different conversion rate. Small volumes, much better math.
After the Agency tier has real data. If a $249 tier retains well, the LTV supports a meaningfully higher CAC, and narrow keyword campaigns aimed at agencies might clear.
When conversion is measured, not assumed. I used 2% above because it’s a plausible benchmark. Spending money against a benchmark instead of my own instrumented numbers is how you find out six months later that you were at 0.8%.
Until then, every dollar goes into the directory listing, the free-to-paid path, and writing.
The general version
If you’re selling software under about $100 a year to a broad consumer or prosumer market:
Work out your LTV before you plan any acquisition. Price, minus fees, divided by churn. It’s a ten-minute calculation and it tells you which channels are even theoretically available.
Compare it to a realistic CAC — with both funnel steps, using pessimistic conversion rates. If CAC exceeds LTV by more than about 3×, no amount of optimization gets there.
Then find the channel where you’re not bidding against someone with ten times your LTV. For WordPress plugins that’s the directory, content, and word of mouth. It’s slower. It’s also the only thing that works.
The uncomfortable conclusion I came to is that a low price isn’t only a pricing decision. It’s a decision about which acquisition channels you’re permitted to use, and I made it before I understood that.
Canary Site Monitor is free on WordPress.org.