John Jago

Day 36: How should I implement license keys for my WordPress plugin?

Previously, I created a WordPress plugin and implemented a system for licensing the paid version, a system which did not work well. Here’s what I learned from that, and how I will take those learning to develop a licensing system for a new plugin I’m developing.

The previous plugin worked like this: someone downloaded the free version of the plugin, and if they wanted to upgrade, they clicked an “upgrade” button in the plugin, which would take them to a Stripe Checkout page. After paying, they’d be redirected back to the plugin settings WordPress dashboard, with the premium features unlocked. The upgraded plugin, however, was tied to the particular site it was installed on. If someone wanted to move the premium version of the plugin over to another site, it would require manual intervention from our support team.

As it turns out, this happened A LOT. It one of the most common support queries.

The workflow we didn’t know about

This is because a common workflow for people installing WordPress plugins is to first install them on a local development or staging site, and then after everything looks good, install the plugin on their production site. People would upgrade the plugin while it was on a staging site and then be confused about how to transfer the license to the production site, which we had no mechanism for.

There was no explicit license key that the user would see throughout the process of upgrading the plugin, so they couldn’t copy the key over themselves.

What I plan to do for Dashify

I want to design something that’s simple yet flexible, something that should work for the workflow above and others that I’m not thinking of.

What I’m thinking is:

Clearly, there are many possibilities in the above, and the scope could explode quickly, so I need to detail out what exactly is the minimum required to implement this, and how the design can facilitate additional license management features later on.

👋 This is my work journal, a series where I write daily about trying to make a living building a bootstrapped software product.