Plugin Licenses and Staging Sites

There is no shortage of articles out there explaining why you should use a staging site: it is the safest way to make changes to your site.

However, many users encounter a big barrier to using a staging site: plugins that require licenses.  Many paid plugins require that you enter a license key to activate the plugin.  Some paid plugins will only let you use the license on one site, which means that you can’t use the license on both your live site and a staging site.  This means that you essentially cannot use a staging site.

Since we’re in the business of selling a plugin that requires a license, we totally understand this from a development perspective.  Creating plugins is a lot of work, and it’s important to be able to make a living off your work.  If you sell a single-site license, you want to make sure that too many crafty customers aren’t using your plugin without paying for it.  It’s really easy to develop a licensing system that allows a license to be used on one URL, and much more complicated to develop a licensing system that can allows the license to be activated on staging sites as well as live sites: after all, how do you know whether a site is a staging copy of a licensed site, or a totally separate site?

But ultimately, this practice of single-site licenses discourages people from using best practices, and is harmful to your customers.  As more and more WordPress hosts offer staging as a part of their hosting packages, this practice is becoming less sustainable.  We need a way of determining whether a site is a legitimate copy of a site with a valid license.

Here are some potential solutions to this problem:

  • Some plugins get around this by giving you an options page (usually in your account settings on the plugin seller’s site) where you can enter an additional URL where you want to use the license.
  • Brian Krogsgard has opened a Trac ticket proposing the creation of a standard to determine the site environment (live, development, staging, etc.).  This would allow plugin developers to bypass license authentication on sites in staging environments.
  • George Stephanis created a gist of a function that would let you check for a staging URL: if other people contribute to this, it could grow into a shared whitelist of common staging URLs where license authentication can be bypassed.
  •  We here at WP Stagecoach have discussed purchasing developer licenses to popular paid plugins, so that our users can use our license on their staging sites.  This has the added advantage of letting people try out paid plugins on their staging sites before they buy them.

Which of these solutions do you think is the most useful?  What other methods are there for allowing a licensed plugin to be used on a staging site without creating a lot of work for the plugin developer?