The Full Report: 6 Months of WordPress Plugin Pricing Pages

The good, the bad, and the shady.

Rob Howard
13 min readMar 27, 2023
A laptop showing analytics on the screen.

Back in September, I started a project to learn more about pricing practices by WordPress plugin companies. At the time of my initial article, When is a discount not really a discount?, plugin creators were accusing each other of using “fictitious” pricing — for example, advertising a sale that is not really a sale, or advertising a markdown, such as “Previously $999” crossed out with a strikethrough, when the product is never in fact sold at the higher price.

At the time, I could see that this “strikethrough of the higher price” tactic existed on many sites, and that it also existed older versions of the pages stored in the Internet Archive. But the Internet Archive is limited to a few snapshots per month, so it wasn’t really a clear enough record for me to rely upon. I set up an account with, and had it take screenshots every day for about six months.

The result: 203 screenshots of the pricing page, one per day, for a bunch of popular WordPress plugins. I’ve added all the screenshots for five popular plugin pricing pages to this public GitHub repo so you can review them all yourself.

Before we dive in, let’s look at some important weak points of the data:

  • The screenshots were taken daily. It is theoretically possible that, midday, these pages changed, and then were changed back before the next screenshot was taken.
  • The screenshots were taken from the same geographic location (Stillio’s servers). It is possible that different content is shown to users in different countries.
  • The screenshots show the main pricing page for each product. It is possible they sell the product for different prices through other pages or marketplaces.

The legal and ethical concerns

Let’s review some of the concerns around showing a high “previously / normally” price. From my September post:

When a product is displayed as being “marked down” from a regular price, the Federal Trade Commission (and several states with even stricter rules) require that the markdown claim be reasonable. For example, I can’t claim that the Instant Understrap course is marked down from $499 to $99, because I’ve never actually offered the product at that higher price.

In the brick-and-mortar world, retailers have had major legal failures on this front. For example, JCPenney paid a $50 million settlement (without admitting guilt) in 2015 over a claim that they’d falsely marked up the regular price on certain clothing to make a sale price look more attractive to customers. Here’s another example of a different lawsuit against JCPenney:

“The latest company to be hit with a deceptive pricing class action: JCPenney, charged with falsely inflating “original” prices to create a misleading impression of big discounts that don’t actually exist.

Kansas resident Ann Cavlovic claimed that she fell for the tactic when she saw a pair of gold earrings while shopping at a JCPenney store in September 2014. Marked with an “original price” of $524.98, Cavlovic paid $171.66 based on a purported 60 percent sale discount and additional 25 percent promotional discount.

But when she got home and opened the packaging, Cavlovic found a pricing insert listing the original price for the earrings at just $225. Had the store’s original price matched the list price, she would only have paid $73.58 after the applicable discounts, she alleged in her suit. Instead, she paid more than twice that amount because JCPenney falsely inflated the “original” price as part of a company-wide strategy.”

Similar suits have been aimed at Sears, Kohl’s and Macy’s, and many other stores have settled for millions of dollars.

Here’s an example of the “markdown” pricing strategy in action:

Rank Math pricing, showing “previously $999” and a current price of $499.
Rank Math Pricing

In the September post, I went on to explain that there were some mitigating factors for software companies — specifically the fact that it’s hard to prove you never changed the price since the price is displayed on an ever-dynamic web page, as I noted above in my list of weak points.

That said, some states do have pretty clear and specific rules. For example, let’s look at the Connecticut law, which is one of the most specific and quanitifiable:

Connecticut requires the on-sale good to have been ‘actually offered for sale by the seller for at least four weeks during the last ninety days immediately preceding the date on which the price comparison is stated in the advertisement.’”

That was the reason I chose to watch the pages every day for six months — while not a perfect measure, it’s double the length of time that the Connecticut statute requires.

The WordPress Plugin Guidelines

So, we have the FTC saying that your product must be “offered to the public on a regular basis for a reasonably substantial period of time” at the higher price point you include on your pricing page. We have Connecticut going a step further, saying it must be “actually offered for sale by the seller for at least four weeks during the last ninety days.”

What about the WordPress rules? Here is how the official plugin guidelines handle questionable behavior from plugin developers.

“Developers and their plugins must not do anything illegal, dishonest, or morally offensive.”

WordPress Detailed Plugin Guidelines

Now that we’ve set the stage, let’s dive into the screenshots.

Reviewing the Daily Screenshots

I took daily screenshots of the pricing pages for the following products for 203 days:

Advanced Custom Fields, Elementor, Gravity Forms, Jetpack, LearnDash, Ninja Forms, Rank Math, WeGlot, WS Form, WP Forms, WP All Import, WP Rocket, and Yoast SEO.

Of these, three use the markdown tactic on their pricing pages: Ninja Forms, Rank Math and WP Forms. To help with the comparison, I also included two comparable plugins, Gravity Forms and Yoast SEO Premium, in the GitHub repo of screenshots. Gravity Forms and Yoast did not use the markdown tactic, but I added them to the repository anyway to serve as counter-examples.

And now, for the highlights:

Rank Math Agency costs $499/year and claims it was “previously $999”. In the daily screenshots over the course of 203 days, no screenshot shows the actual price being higher than $499.

Ninja Forms Elite costs $299/year and claims it is “Normally $599”. In the daily screenshots over the course of 203 days, no screenshot shows the actual price of the first year being higher than $299. However, the page states in fine print that the product renews at what the company claims is the “normal” price of $599 for the second year.

WP Forms Elite costs $299.50/year and claims it is “normally 599.00”. In the daily screenshots over the course of 203 days, no screenshot shows the actual price of the first year being higher than $299.50. However, the page states in fine print that the product renews at what the company claims is the “normal” price of $599 for the second year.

Dig into the hundreds of screenshots in the repo to analyze the data for yourself.

What would the Federal Trade Commission do?

In the case of Rank Math, the plugin does not renew at the higher “previously $999” price. There is no indication on the page where that $999 number came from, and none of the daily screenshots showed the plugin being sold for the higher price. If the company doesn’t have any evidence that they have recently offered the product at the higher price, an organization like the FTC might take issue with that pricing strategy and consider it a fictitious former price comparison. Rank Math is based in India, so the FTC (which regulates American commerce) likely wouldn’t get involved, but other regulators in other countries might have similar rules.

The case of the WP Forms pricing page is more complex. If I were the lawyer for their parent company, I might try to argue that the “normal” price represents the “year two” price, and that the company is indeed “offering” the product at the “normal” price.

However, the WP Forms pricing page clearly advertises a “savings” to the customer, so the question is whether the FTC would agree that there is indeed a “savings” being offered here. The regulator could claim that there is no savings if the product always costs $299.50 in year one and $599 in subsequent years. The FTC might say there is no savings because the product is never offered at a higher price when you consider the subscription as a whole.

WP Forms pricing, showing “normally 599” with red striketrhough and “299.50 savings” highlighted in yellow.
WP Forms Pricing

Note the text and design decisions (the red strikethrough, the yellow highlight) that a customer might interpret as advertising a bargain or sale. If you follow the asterisk toward the bottom of the page, it says “* Special introductory pricing, all renewals are at full price.” Here we have the word “special,” which might convey to a customer that there is some sort of sale or bargain taking place — but the FTC might say that it’s not really a “special” introductory price if the company always offers the same deal. FTC regulations are intended to prevent customers from seeing prices advertised as bargains when they are in fact the regular price.

“[Retailers] should not offer an advance sale under circumstances where they do not in good faith expect to increase the price at a later date, or make a “limited” offer which, in fact, is not limited. In all of these situations, as well as in others too numerous to mention, advertisers should make certain that the bargain offer is genuine and truthful.

Federal Trade Commission Regulations, with emphasis added

Let’s compare this to Comcast, a company that’s more closely watched by the FTC and which has a nearly identical pricing structure. Notice how explicit Comcast is about the fact that their price goes up after a year. Notice how they do not call it a “savings” in the first year — they simply present the price and note, immediately under the price, that it goes up after a year and has other strings attached.

Comcast pricing, showing $69.99/mo for 12 months with 2-year agreement
Comcast Pricing

Over at Ninja Forms, they have a very similar pricing presentation to that of WP Forms — with the difference being that the asterisk saying “* Auto-renews at normal rate” is part of the pricing card, allowing the user to see the text without scrolling.

Ninja forms pricing, showing “normally $599” and current price of $299
Ninja Forms Pricing

Once you click Buy Now, you get to a checkout page that shows your $300 discount, but the page does not indicate in any way that this discount will only be applied to the first year. This is a contrast to WP Forms, which shows fine print saying that “Discounts and introductory prices only apply to the first term” on its checkout page.

Ninja forms checkout, showing a $599 amount with a $300 discount
Ninja Forms Checkout

No one can confidently predict how a federal regulator, judge or jury would decide a complex situation. However, if I were advising a company considering these markdown tactics, I’d tell them that they might be taking a significant risk in exchange for an improvement in conversion rates (especially considering the huge the downside risk of a settlement similar to what JCPenney paid). I would show them the Comcast approach — which has surely been vetted by people familiar with the regulations — and suggest they follow that model rather than risk a regulatory challenge in the future.

What can WordPress do?

Let’s revisit the WordPress plugin guidelines:

“Developers and their plugins must not do anything illegal, dishonest, or morally offensive.”

If the folks in charge of the plugin directory — including WordPress co-founder Matt Mullenweg and WordPress Executive Director Josepha Haden Chomphosy — think the behavior of these companies breaks this rule, they would have grounds to respond by removing their plugins from the directory, just like they’ve done in other cases of violations. I think it would be very reasonable for them to say, for example, that all plugin developers need to meet certain standards for clear pricing of their premium products within 30 days, and if they don’t, the free versions of their plugins will be removed from the directory.

If Mullenweg and Haden Chomphosy don’t think the rule is being violated, they at least owe the community a clear explanation of where they’d draw the line.

The free versions of the three plugins mentioned above have more than 6 million active installations on WordPress sites — which means millions of people might see an “upgrade” prompt in the WordPress dashboard and click through to a questionable sales page. This type of sales behavior could dilute the WordPress brand, which could hurt the bottom line of all WordPress-related companies, including Automattic, Mullenweg’s for-profit company that licenses the WordPress trademark to operate and WordPress VIP.

And if some plugin creators are allowed to use questionable tactics and take sales away from other companies who publish clear pricing, that could create a vicious cycle where companies might believe they have no choice but to adopt the same questionable pricing strategies just to survive in an unfair ecosystem.

Matt Mullenweg has the power to stop this tomorrow: tell plugin creators that clear pricing is an absolute requirement to be included in the free plugin directory. Mullenweg might claim that there’s no budget to hold plugins to higher standards — but ultimately that is a corporate policy choice not to prioritize better treatment of customers.

How can community members push for a better future?

For my part, I believe we owe it to all customers to treat them with dignity and respect. Without that basic tenet guiding our actions, what’s the point of an open-source project in the first place?

Respecting customers means clear pricing. It means no fake urgency, as we’ve seen with countdown timers that count down to nothing. And it means easy cancellation, not roach motels that allow the user to check in but make it extremely difficult to leave.

One of my friends in the WordPress community recently wrote about user complaints about the business practices of Awesome Motive, the parent company of WP Forms:

“If flash sales and cross-sells are annoying, won’t the consumer catch on to AM’s grey-hat pricing practices? Fool them once, sure. Renew a license for full-price in year two? Maybe not so much.” …

“If customers keep buying, founders keep selling, and our peers keep working there — it’s time we move on from the debate.”

Acknowledge a problem, then just move on? I couldn’t disagree more.

In my time selling WordPress-related software and courses, I’ve met many customers who truly can’t afford to “lose” $99 on a product that’s marketed in an unfair way. They’re retirees learning to code to pursue a new hobby, they’re disabled students who labored over the decision to invest in a new theme framework, they’re bootcamp graduates working the night-shift as a security guard while they learn JavaScript. All real people that I’ve met in the past few years — and all people who deserve to be treated right. Many of our customers aren’t well-paid software engineers — they’re working hard to build their careers on tight budgets.

They deserve better than “fool them once.”

I believe that the WordPress community should have higher standards for how our friends and peers behave — we’re all supposed to be working toward an open future for the web. In the post I mentioned above, my WordPress community colleague questions the fairness of criticizing a company, lest employees be caught in the crossfire:

“Lots of our WordPress friends work at Awesome Motive [the parent company of WP Forms]. When we openly criticize business decisions or marketing tactics, we’re also criticizing their work, their livelihood and how they provide for their families. Is that fair to them?”

Yes — if you do something at work that your friends think is unethical, it is fair for them to talk about it. If we shielded everyone from criticism related to “how they provide for their families,” that would mean keeping quiet about all sorts of bad behavior that should obviously be challenged. That said, employees may truly feel stuck, and ultimately the leaders are the most responsible — I’m reminded of the Wells Fargo scandal where managers compelled their staff to open fake checking accounts to hit quotas. Employees at Wells Fargo “described frequent crying, levels of stress that led to vomiting, and severe panic attacks.”

Still, if we had applied the logic above to Wells Fargo, we never would have criticized the managers and leaders so as to spare the feelings of the employees — and that would have been worse for everyone.

As a friend, I think it’s my responsibility to alert my peers to problems and help them improve the situation, if they want to. They might feel they’d be risking their paycheck by speaking up — we should help them with that rather than telling everyone to “move on.”

I can understand why many of my colleagues in the WordPress community might feel helpless to change company behavior, or might worry that speaking up would be a career risk. There are a lot of people in our ecosystem who benefit from questionable pricing tactics, and there is an even larger group that is so averse to difficult conversations, and so obsessed with what they perceive as “civil discourse” (that is, not criticizing their friends’ behavior), that they sweep problems affecting millions of people under the rug in a selfish attempt to avoid momentary emotional discomfort.

But, as I’ve written before, we can all work together to care loudly about what happens in our industry. Know that there are lots of business owners out there doing the right thing by creating valuable products and selling them in fair, transparent ways. We have big goals — much bigger than any one company’s revenue or conversion rate — and we won’t let the shady behavior of a powerful few dissuade us from building a better future.