Define I Have Donated = True

Published on: June 6, 2012 |Tags: , | Categories: Articles

As a website developer working on large scale WordPress projects I often think… Wouldn’t it be lovely if I could just turn off the donation nag for plugin X?

As a plugin developer working on a heap of free plugins, I often think… Wouldn’t it be lovely if people actually donated to these plugins?

Tonight it dawned on me that it’s high time to start a standard for these problems. Here’s what I’m proposing:

In my plugins, I’m going to start adding a donation nag / marketing space, but I’m going to wrap it in a check for a constant that you can add in your wp-config.php file to hide my nag. It’s just enough effort that you really have to think about the fact that you’re hiding a donation link so maybe you’ll actually donate. But this offers an easy way for web professionals to remove marketing crap from the UI that they are presenting to their clients.

  • It’s easy to implement for plugin developers
  • It’s easy to implement for website developers
  • It offers an opportunity for website developers to present clean admin UI without hacking plugins
  • It can be applied across an entire MU network (I hate it when plugins spam my customer’s customers.
  • It forces website developers to consider the fact that they are benefitting from the plugin developer’s work and that the plugin dev would love a kickback

Here’s an example of what I’m thinking. I’m going to be adding something to the Image Widget that will add some sort of clean and simple reference to Modern Tribe and our other plugins along with a request for donations. I’ll wrap that in a constant called I_HAVE_SUPPORTED_THE_IMAGE_WIDGET.

 * To hide this blurb, simply support the image widget by
 * buying one or more of the Modern Tribe premium support licenses
 * or simply donate to Modern Tribe ( 
 * We think that $25 per single install or $200 for a MU install 
 * is completely reasonable, but it's really up to you.
 * Then all you have to do is add the following to your wp-config.php:
if ( !defined( 'I_HAVE_SUPPORTED_THE_IMAGE_WIDGET' ) ) {
	echo $support_image_widget_blurb;

What do you think?

P.S. The Image Widget, having nearly 400k downloads has probably yielded no more than $250 since it was created several years ago. The state of plugin donation is pretty abysmal. Though I have to admit that I suck at donating to plugins as much as the next guy.

Tags: , |

14 Responses to Define I Have Donated = True

  1. Peter Chester says

    One additional thought on this… it had crossed my mind that we could all agree on a single constant so that we don’t have to pollute our wp-config files. Something like I_HAVE_DONATED. Or HIDE_DONATION_NAG. But the problem with this is that it bypasses the audit of what exactly you have donated to. If we make it that easy, then website devs will simply add that one line to all their wp-config files and never think about it again.

  2. Reid Peifer says

    I’m really impressed with how Lost Type handles this at –
    You can download anything for free, but they make giving a couple bucks extremely easy. We, of course, have the challenge of working within the .org repo which makes implementing something like this more challenging.

    I’ve read some of the thinking/criticism of micropayments and am dubious about their effectiveness for new purchases – but I wonder if they don’t make a lot more sense in terms of microdonations. At 400k downloads, i wonder if receiving $0.25 from 100,000 folks is more or less likely than getting $25 from 1,000, assuming the mechanism to donate is extremely lightweight.

    • Mick says

      Hey Reid, donating $0.25 via PayPal might make no sense, as it charges $0.33 + 30% or something on similar transactions. There might be ways around, but by default donation would go 100% to PayPal…

      So what’s wrong with “selling” the nag-free license via author’s site? See what Akismet does about that.

  3. Peter Chester says

    I’ve seen plugins that have forms baked into the admin UI as well. For example, Hyper Cache has a donation button and a newsletter subscription form at the top of the settings page.

  4. Matt Wiebe says

    Interesting thinking. The only downside to a constant is when you consider a user who does donate to your plugin, but doesn’t feel comfortable with editing wp-config.php.

  5. Peter Chester says

    Excellent point Matt! Maybe a button in the UI and some code like this?

    * To hide this blurb, simply support the image widget by
    * buying one or more of the Modern Tribe premium support licenses
    * or simply donate to Modern Tribe (
    * We think that $25 per single install or $200 for a MU install
    * is completely reasonable, but it’s really up to you.
    * Then all you have to do is add the following to your wp-config.php:
    * define( ‘I_HAVE_SUPPORTED_THE_IMAGE_WIDGET’, true );
    if ( !defined( ‘I_HAVE_SUPPORTED_THE_IMAGE_WIDGET’ ) || get_site_option( ‘image_widget_has_been_supported’ ) ) {
    echo $support_image_widget_blurb;

    Though, I feel like a simple UI button is just a little too easy.

  6. Otto says

    I see where you’re going with the define as opposed to a button or checkbox or something like that, but I feel that you might be taking the wrong approach somehow. This is not to say that I have the first idea what the right approach is, mind you.

    Donation models are tricky because the way you present them drastically affects the outcome. I’ll give a simple example. I’ve had a donation box on my websites for years. Never got much out of them until I changed it slightly. What I did was a) eliminate the blank box and put in a suggested $5.00 donation and b) change the title to “Buy Otto a Beer”. I make about $1500 a year off that box. Not enough to live on by any means, but hey, it pays for some of my beer. :)

    Now, in the process of paying (it’s almost all paypal), people can leave a comment as to why. Usually they don’t, but occasionally I see “thanks for the great plugin” or similar. Maybe 1 out of 10 times. Sometimes it’s for the tutorials I write, with “thanks, this guide really helped me out” and so forth. Maybe 1 in 20 times. But what I’ve noticed is that the one that mention the plugin are virtually always more than the minimum $5. Usually $20 is the most common one for those.

    I’m not saying that it’s the right way to go, or that it’s a good plan, but I find it interesting that a simple change created such a different result. I’m not really doing anything differently than before, just changed the presentation slightly.

    Perhaps an idea would be to make a donation page on your site, and link to there in the Donate Link space in the plugin. That gives you the ability to do testing on different models of donation pages, or some such. Are people more likely to donate because I say “hey, wanna buy me a beer?” I don’t know. But I think focusing on that presentation is more likely to achieve better results than to make the code slightly more naggy to non-advanced users.

    • Peter Chester says

      Wow, your donation example is fascinating! I’ll definitely try that.

      I’m not sure what you mean about the comments refering plugins. Are you suggesting that when people donate for a plugin it’s typically $20? FYI, we actually create different donation buttons for each plugin so that they each refer what the donation is pertaining to.

      I like your idea of making the linked donation window. Though, I’m always nervous about adding code to our plugins that requires a hit to our site. We’re definitely doing that for our premium plugins, but for the public ones, i really want to keep them clean and lite.

      In any case, this is a 2 pronged topic.

      1. How do plugin devs get more support
      2. How do we support website devs in making clean installs so that WordPress doesn’t come across as a hodgepodge of nags, donation boxes, and alerts for misc plugin developers who want beers…. I like supporting beers but i don’t want my clients to have to think about it.

      • Otto says

        What I mean is that I don’t bother to track where people click my donation link, or why. I could, certainly, but I’m not making the plugins to get donations. Donations I consider to be a bonus, not part of my income in any real way. Pays for the hosting and some booze. :)

        Now, the majority of the donations I get come from a paypal box in my sidebar. It’s the most visible way to send me a donation. In the process of sending that donation, the user can leave a comment.

        What I’m saying is that the ones who mention the plugin are typically higher than the default $5 donation (the donation number is a text field, they can enter any amount, it just starts out being 5.00). This tells me that people are willing to pay more for plugins, if the plugin is useful to them and the process is dead simple. I mean, they could just leave the box at 5.00. Instead, a surprising number of them change it to 20.00 (or so, sometimes more) and then say “thanks for the plugin” during the comment/payment process.

        So, what did I change? Is it the wording? The suggested 5.00 text box? Dunno. Not sure. All I do know is that when I made that change, the donations skyrocketed. I get at least one $5 donation every couple days, a $20 one every month, and a $50+ one every three months. Now, to be fair, I’m not just a plugin guy, I work on too, theme reviewers team, support forums, plugins repo, and I write advanced topic tutorials about once a month. So clearly, some of these are just people thanking me for the info and help by buying me a beer. Which is fine for me, I will never turn down a free beer given in appreciation.

        But I still wonder what the difference is. I was thinking that if your donation button in the plugin was actually a link to a page your own site, then you could do some kind of A/B testing with different pages and different wording and see if there is some kind of different results as a consequence of that. Maybe figure out the best way to ask for money.

        For helping website devs, the define idea is a good one. It’s unlikely to be noticed by users, but something that would be useful for devs using the plugins for clients. Just one thing I would recommend, and that’s to use something more unique as the define name. The names in the define are globally spaced, so you ideally want to prefix the name with your company or something unique to you. It can be the same among all your own plugins, but you really don’t want it to conflict with somebody else’s plugin. “COMPANY_NAME_YES_I_DONATED” or something like that.

      • Otto says

        Oh, for reference, my most popular plugins have no nag at all. The admin screen on them has a sidebar box, colored yellowish, that says “About the Author” and has links to my facebook, twitter, blog, etc. There’s a donate link there too, and it says something like “if you want to *buy him a beer*, then he’d be happy to drink it” and the words are just an a href to the donation thingy. There’s no way to remove the box, and anyway it’s unobtrusive and nobody has complained about it.

        Is an “about the author” box more organic somehow? Given that it doesn’t have the word “donate” in it, does that help? I just think that the donation mechanism is flawed in a lot of plugins. For example, I activated a plugin recently and went to the admin screen, and the very first thing at the top was a yellow box asking for a donation (with a checkbox to turn it off, granted). I haven’t even used the plugin yet, of course I’m going to check that box without donating. I just think that the more “in-your-face” about it a plugin is, the less likely it is to get donations. A softer approach might work better. Maybe. Admittedly, I’m guessing here. :)

        • Mike Schinkel says

          @Otto: Would the core team consider adding in a donation tracking system to WordPress? Nothing obtrusive but something that would facilitate donation?

          A plugin or theme could turn on a “Donate” link in the plugin list or theme list and that would take the user to a donation page in the admin that lists all the plugins and themes currently installed in their site. From there they could read plugin and theme author’s “Why donate?” text and if they choose to donate it could route through where could (at the user’s option) track the users donations. That would then let them compare their donations to others and be able to display a donations badge on their site if they like thus creating a social reason to support plugins and themes.

 could even facilitate the transaction and take a tiny fee for facilitating the donation. It could be manages through multi-party PayPal transactions, and later through other payment services is successful and demand allowed it.


    • Todd Lahman says

      I dramatically increased donations to a plugin by posing a few questions as such:

      What am I worth? Is a reliable plugin worth a dollar?

      Not only did the rate of donations increase substantially after posing those questions, but the amount averaged between $5 to $20 per donation. There is no default donation amount set. The amount field is left empty when they arrive at the PayPal page, so it is up to that person to decide what they want to give.

      Handling support requests can make a difference. Answering support requests promptly, and treating each person like an important customer, leaves them with a good impression.

      Otto is right about the approach making a difference. Something more than using the plugin has to provide motivation to make a donation. The questions I asked might have made some people feel the need to reciprocate with a donation since the plugin solved a problem for them, and for others it could have been the prompt and respectful support they received.

      A nag must be handled with care or it could deliver the message:

      “Hey, what have you done for ME lately?”

      Plugins are a reflection of who we are as developers. It should always be a priority to provide a positive experience.

      If money is expected in return for using the plugin, then selling the plugin, rather than giving it away, would be an option that would reflect the developer’s expectation.

      Whether selling or giving the plugin away, a good user experience is the most important priority. That means a plugin that works as expected, delivers more than is expected, and only draws attention away from the experience in an appropriate, but not annoying way. A donation link is an ad. If you put an ad in the middle of a post, it’s annoying. Everyone expects to see an ad in the sidebar, but only if it is mixed in with other useful information so they can scan it and ignore if they want to. Like Otto, I have a yellow sidebar box in the plugin interface that has info, and a donation link. I tried a donation link at the top of the settings page, and as expected, donations dropped off to zero.

      If you use a constant that has to be placed in the wp-config.php file, you are just creating a difficulty most people using your plugin will not know how to resolve on their own. A good plugin makes everything easy for the end user, even if that end user is another developer, because good programming is all about doing all the hard work in the background, so the user never sees the wizard behind the curtain. The approach makes all the difference in how people see you the developer, and how they view the plugin. Never do anything to alienate your customers, even if they aren’t paying you a dime.

      • Peter Chester says

        Thanks Todd!

        What plugin are you referring to? I’d love to see what you’re talking about specifically.

        Regarding the wp-config.php variable, I’m not suggesting that that is the only way to address it, but I am suggesting that it would be nice if that was typically one of many ways to hide the yellow boxes / ads / etc.

        For example, when we have a project with many developers who each have their own local dev environment, we have multiple dev and production servers, and continually add new environments… It would be nice to simply set wp-config.php once for the whole project rather than having each environment have to configure things like this in options. This is ESPECIALLY the case on MU installs where some devs have written options to hide the nags / ads with a button that has to be clicked for every blog int he MU install.

        My point is as much about ensuring that plugin devs get compensated as it is to make sure that web developers can present a clean and integrated admin experience.

  7. Peter Chester says

    Otto! Thanks for the thoughtful feedback! Love it!

    Regarding the About The Author idea. I really like the idea of people making tasteful stuff like that over the occasional sponsorship bar that I come across where the admin looks like it’s some sort of race car chock full uf clashing logos and buttons.

    However, I would still want a way to remove it.

    Fundamentally, as a website developer, part of my task is to present my customer with a unified, confidence inspiring, admin experience. Seeing different colored boxes in different admin areas makes it feel more piecemeal and less unified. It also forces a person to question the reliability of code every time the meet a new author in the admin.

    This is as much about presenting WordPress as a coherent and competitive solution as it is about making it pretty.