Menu Sidebar


I'm on twitter @dancameron and this is my site so you'll want to read my about page too.

Why our Refund Rates being so High isn’t Alarming (or Terrible)

James Laws asked me last week for my “lifetime refund percentage” (over at Sprout Apps) so he could get a general feel for our industry. He briefly mentioned his percentage was sub-5% which gave me pause, my immediate reaction was to think I’m doing something wrong; even though (at the time) I didn’t know my numbers. Knowing SA’s refunds were much higher I dug into the numbers, creating a report of sales 1 over the last 10 months 2.

percent of sales count

Wow, 13% of sales were refunds. I was expecting a high number (by comparison) but not by that much. Then I immediately noticed that it’s more like 16% (seen in the second chart) because I included Abandon/Failed. Oh my!

Digging a bit more I wanted to know what the refund % was based on sales value (not based on total sales). This way I could determine if  smaller purchases (which are less likely to be refunded) are skewing the percentages. Put another way, were refunds more of an issue with sales of Sprout Invoices or Help Scout Desk (which are $60+), or with add-ons.

Percent of sales count

The percentages above show that the refund rate is slightly worse with those more expensive purchases…which was no surprise. Still though., sigh.

What does this mean for revenue? Since there are percentages of percentages above, the numbers get a bit convoluted, so I wanted to see what percentage of revenue is refunded and found it’s slightly better than I thought…

sales perc

This shows that with every $100k is sales, that I’m refunding 11%.

Why are my refund rates so high?

I think it’s a combination of the money back guarantee, how I market it as a selling point, and the use of a timed offer. A recent customer that recently received a refund noted:

“I probably should have tried the demo first…I was just meaning to do some light research yesterday (not buy) but the 25% discount timer got me. If it wasn’t for the discount timer I would have waited and tried the demo today before buying. But the 25% off plus the 30 day guarantee made me think “why not? Lets go for it”.

Here’s that special timed offer that we’re referring to. It’s something I offer to hesitant customers 3 onsite (and via email).

sa discount

Knowing that this combination has exponentially increased sales for Sprout Apps last year I have no qualms with the refund rate being so high. I can convert customers better than visitors. Simply, a customer purchasing with the intent to trial the product will convert more than a visitor that demos before purchase.

I hope this doesn’t come off as deceptive marketing; To be completely honest, it’s slightly manipulative but not deceptive. Manipulative in the good way, since there are no downsides since I offer a 30-day MBG.

Obviously my goal is to convert visitors to customers, so that they can see the value of my products, and I can prove how awesome the support is. Things a website full of screenshots and text can’t do very well alone.

So that explains why refund rates are relatively high, now what I’m really worried about is the abandoned/failed purchases. This number is something that I’m going to work on decreasing over the next year, there’s no apparent reason for it to be that high. Although I first need to validate if this number is a concern since I’m already attempting to convert these to customers via Customer Segment, and abandoned/failed checkouts aren’t removed if they do end up purchasing later.

What’s your opinion?






  1. Sales excludes any purchases of free items.
  2. My data set is based on any sale after I added the money back guarantee and the limited time offer.
  3. There’s a lot of logic that goes into showing this promo. It’s not just available for everyone, there are certain actions that need to occur on the site first.

Speaking Tour

One of my new year goals is to do more talks, specifically speaking at meet-ups. Yesterday was my first; not the first of the year, my first talk that I’ve given to a complete set of strangers — ever.

My hope that it would be easy to do a simple overview of Sprout Invoices was wrong. Sounds easy right? I ended up stumbling over the first few slides, my mind filled with doubt and evaluating everything I say. It was stressful. 😳

Much like my podcast interview I did with Apply Filters (a long time ago) it didn’t end as badly as it started, somehow I got comfortable and was able to get some sensible words out, at least I hope that’s what happened.

I need to figure this out, it’s most definitely a fear that I need to get over, hopefully jumping in and speaking a couple times next month will help. Although, those talks are going to be much longer, and one is at a local meet-up and not to an audience I can’t see.

Lazy Daze

Today, after a major release of a Sprout App, I relax, only handling support. A tradition since the days of freelancing, when after a major project was launched I’d go play golf, or play with the kids. Today, it’s uncomfortable.

I just have so much to do; Sprout Invoices’ next release keeps growing with “must do” features and Sprout Clients is screaming for v2.0. With the year’s end looming, I’m not going to hit my goals. So I reset, again.

Many of my personal obstacles transitioning from services to products are no longer around, easily attributed to creating routines/scheduling, automating marketing, and approaching things differently. However, whenever I need to “reset” my goals I get almost depressed (🙁 bad, not ☹️ or 😩 bad ).

It’s really a no-win situation for me, the reason I need to reset is the untenable schedule I’ve set, and when I plan for a more reasonable schedule I feel guilty (and almost ashamed). Thats my struggle.

I know I need to rethink my approach, honestly I’m doing that now. I just don’t want to lose my drive of building awesomeness, otherwise I fear of falling into a lazy daze of hopefulness.

Adding String Attachments (AddStringAttachment) with wp_mail

I couldn’t figure out how to add a string attachment to the notifications sent through wp_mail so I hacked something together — without modifying core files (as you might have seen in some Google search results).

So I pass an attachment that’s a json encoded array that will intentionally fail.

Since the attachment failed I’m looking at the error, retrieving the data passed and then using AddStringAttachment directly with the newly created string.

Hopefully this can be easier with this ticket.


I really don’t know how to approach this post. I don’t want to jump out there and say SiteGround is a terrible host because I’ve heard otherwise, although what they just pulled on me is bullishit. Maybe a simple story will work…

I opened a hosting plan with SiteGround a while back because I needed to test Sprout Invoices after a customer complained about some issues. Everything went well, I was able to setup a site fairly easily, test SI on a default configuration, and report back to my customer. Since I had paid for a year of hosting 1 I just let the site sit.

Months later I found myself with a charge for “Premium Support”.

premium support?

I don’t know what this charge is, it’s surely not a renewal since this is my complete billing history.

I did end up live chatting with their support, after a half-hour of back and forth they couldn’t/didn’t reverse the charge. The best they could do was credit my account, seriously WTF. I was under the impression from my conversation with him that SG pulls this all the time and by working in support he’s used it people bringing it up.

I still don’t understand their reasoning for the charge. I never used their support services. My logical guess would be that they’re re-couping their cheap hosting cost with up-charging, unbeknownst to their customers. The crazy thing, I’ve experienced this 💩 before with other companies and they’ve always refunded the payment. Sigh.

In case you’re wondering this is my support history! Nothing.

my support history


Talked to another support person in billing and they were able to refund the charge and make things right. They said that the Premium Support service is an option on the order form…which I know I didn’t check but oh well, it’s figured out now.


  1. I figured I might need to test on it again at some point because their setup is no ordinary.
Screen Shot 2015-08-12 at 2.28.13 PM

Still in Business

Sprout Apps made it’s first dollar on this date last year! The best thing has to be that I’m still making dollars!

If you want to know more about all the things that happened over at Sprout Apps I’ve published (some-what of) a year in review. I tried my best to show how much Sprout Invoices has grown as a product, something that I found is rather hard to do without busting out stats on commits and code base changes. Anyway…Sprout Invoices had 10 major updates, Help Scout Desk had a few, and Sprout Clients was released.

On the business side I learned a lot — so much that I’m only able to cover a couple biggies.

A Monthly Subscription was a horrible idea.

I wrote about the pricing structure and the reasoning before launching…

[I] wanted to create a monthly recurring rate for Sprout Invoices for a few reasons…[I] think people can better relate to a monthly recurring charge…a similar pricing model will be easier to match up against the invoicing services.

…I also had two other business reasons:

  1. Low entry price would bring more customers.
  2. Monthly payments have a naturally higher renewal rate over a longer term.

I’ll let you in on a secret that I’ve only told a few others: both were 💩 ideas in practice. After about eight months I determined that the having this mixed monthly and yearly licenses caused some major issues:

First, it confused customers. While I had thought people would be appreciative of the monthly rate, especially since I wanted to pull the majority of customers from Freshbooks and Harvest, it constantly led to inquiries asking about the basics. It wasn’t a matter of messaging either, with an A/B test of the pricing page in April I found people either couldn’t find the value or felt overwhelmed with the mixed subscription option.

Now, I only offer a yearly license (which renews) and conversions are up, a lot.

Second, I found out with the customer value being so low to start that support was an issue and it would always be an issue. Regardless if the lifetime value was estimated to be $XXX, naturally having the majority of support front-loaded wouldn’t be cost efficient unless customers never cancelled. Never isn’t possible.

Third, the entry price being so high was mitigated by a “hassle free money back guarantee”. This allows prospective customers to give it a shot and hopefully find the value within 30 days.

Money Back Guarantees work!

My sense is that a MBG frees the customer to love the product, and find the value on their own. No one wants to be “stuck” with a product they bought regardless of great value, instead finding the value in something creates loyalty.

I’ve found that refund requests are down from before, reasoning:

  • People are waiting longer to ask for a refund, which allows for…
  • People asking for help. Providing support within those 30 days are unlikely to ask for a refund because…
  • Great support is a feature that customers don’t value until it’s seen.

I’ve had numerous incidents when a customer has asked for a refund only to change their mind after I simply asled “before I process your refund I’d like to know if there is anything I can do to help…”. Goes to show that customers are impatient with the help they need with a product they bought for a reason, and providing great support allows them to see the value in their purchase.

Discounts and E-Mail Marketing For the Win!

I wrote about this a while back, it simply works. Discounts work too, duh.

Discounts that don’t work: ones that discount the initial payment of a monthly subscription to about nothing. That was a terrible idea for just about every reason you can think of; now that you know relying on lifetime value to offset support costs is a dumpster fire of a strategy. Reviews

Asking for reviews to “help the growth of” your product is not only being honest with your customers but surprisingly effective. Not only do our happy customers write reviews but those reviews create paid customers. As you would have guessed the majority of sales come from Sprout Invoices users that downloaded from .org, with our rates so high it helps people decide between a plugin with terrible reviews and mine with great reviews. The strategy to focus on pushing happy customers to review helps combat the long term problem we will have with the competition — those damn “installs” count.


With those changes in late April I was able to turn the ship, as you can tell from the graph below. As you can tell earnings have drastically increased, which can obviously be attributed to removing the monthly subscription 1

Screen Shot 2015-08-12 at 2.28.13 PM

The most important point in this report is the yellow dot for July, only because that was the first month Sprout Apps hit a profit. Meaning, since Sprout Apps has been a full-time job for me for this last year, a “profit” simply means I didn’t have to dip into savings to pay myself for the time, instead I could write myself a full pay check.

Goals, am i right?

This has been a long time coming, it just so happens to be a year of a lot of work — taking twice as long as I would have hoped. Here’s to another year, hopefully with some help to grow faster.

Cheers! 🍻



  1. sales have also increased (it’s hard to tell with this graph since it includes sales from free products).

National Pastime ⚾️

Feeling a little guilt that I haven’t fulfilled my goals of writing weekly here and at here’s something…

Since early February most of my free time has been committed to Little League baseball. Managing my son’s team, volunteering as a board member, and now managing a 6-7 All-Star team 1. It’s been awesome managing/coaching, truly grateful, even with the 11 stitches in my face from being stupid at a practice. Dealing with the parents is another story…a long winded story that I won’t bother talking about here.

It would be very easy for me to draw a bunch of correlations between managing a team of eleven on 5 month project  and managing eleven 6-8 year olds playing baseball. So easy that I’m sure you can do it too; just let your imagination roam, knowing your assumptions of whatever went right and wrong for me this season are correct.

Here’s to three more fun weeks with this kid I love so much. Hopefully this time I can help him get a well deserved trophy.





  1. Which I’m very honored/lucky to manage

WordPress paginate_links Customization, with Bootstrap compatibility example

I’m not ashamed to say that I use Bootstrap, it’s one of the main reasons I was able to get Sprout Apps launched so quickly last year. It may be a bit bloated and there are some other great frameworks/tools for prototyping and this example should help.

What I am ashamed of is not getting around to adding pagination to SA until today 😁

Navigating the Mess that is PayPal APIs: Advantages of Express Checkout

I’ve been working with PayPal’s APIs for over six years and I still don’t completely understand what the fuck is going on over there. It seems every other year they have a new API and not once (to my knowledge) have they deprecated something useless. Just look at the “Classic APIs Product Page“. They even re-branded a while ago to make it simpler, Standard and Pro; only it caused more confusion because when we developers look at the docs the terminology is still out of date. I guess keeping a bazillion different docs for a single API up-to-date across hundreds of different sub domains of isn’t easy to do…sigh.

Before you get too far and start wondering [this isn’t a comprehensive post about how I can really figure out which API to use], it isn’t a comprehensive post that will help everyone. Instead the point of this article is to help developers specifically looking to use PayPal for basic payments and subscriptions with one basic rule…

Don’t ever use PayPal Payment Standard. 1

Why? There are a lot, seriously a lot but the main reason is the deficiency of PayPal IPN.

PayPal IPN can’t be trusted and if you’re relying on it to validate a purchase you’re going to have some unhappy customers. 2

If you’re handling subscriptions it’s even worse because there’s no way to validate the payment profile from a subscription payment made via Payment Standard. You need to rely on IPN 100% of the time to update the status of a subscription, which can easily cause a subscription to inadvertently expire 3, IPN issues can also cause a subscription to continue after it’s been cancelled 4.

Instead use PayPal Express Checkout.

With EC you can validate a purchase, check payment status, capture a pre-approved payment, and manage a recurring payment profile including checking the status. All you need to do is make a single API call with the transaction id, there’s nothing special, nor is it much more complicated to develop.

There’s are lot of misconceptions with Express checkout. One being that it requires that the PayPal merchant pay for PayPal Pro, this is wrong. The merchant will only need Pro for onsite CC processing.

Another is that Express Checkout requires the customer to confirm their payment on your site before processing. This is the feared “extra step”, the extra step that would cause people to reconsider their purchase, the extra step that someone might not notice because they thought they were done. Sorry but I don’t like these excuses one bit.

Extra Step: If the customer is going to reconsider their purchase and leave the checkout process without ever coming back because of the final confirmation page is absurd.  Yes, it’s likely to happen; do you want these customers anyway? Highly unlikely because they’re the ones that will ask for a refund a day later after causing hours of support. I want customers that truly want to purchase the product, you should to.

UX: You should be able to easily signify that the customer needs to finalize the payment by submitting the confirmation, if you can’t there are other areas of your site that need your attention. I “know of some” that have contemplated doing an auto submit after X seconds or just skipping the confirmation and eschewing the PP policy, “they” never did go that route because the numbers didn’t show a drop the purchase funnel.

Falsities: I’ve heard that EC limits payment methods, something to the effect that the customer couldn’t use a credit card, which is nonsense. The only difference that I’ve noticed is that the checkout pages at PayPal use their new design…which is great.

Anyone using PayPal Standard over Express Checkout? I’d like to know why.


  1. Not to be confused with the customer product of PayPal Standard.
  2. This is why I built EC into Sprout Invoices as the default payment processor. SI doesn’t even support PayPal Standard Payments. I can’t imagine the customer support that IPN incurs on other developers distributing a product that relies on IPN, e.g. EDD or Woocommerce.
  3. Expired account issues has been a real issue with Sprout Apps, since it uses EDD and for months ran the PayPal Standard because the EC extension didn’t support subscriptions. I’ll post about how I updated it another time.
  4. Over at Smart eCart we had around 100 active “subscribers” with cancelled accounts because of IPN
Screen Shot 2015-03-25 at 12.09.18 PM

Making the Plugin Installer Easier for Premium Products

This morning I helped a new customer of Sprout Invoices install his recently purchase pro version. The customer didn’t know that the plugin they just purchased needed to be installed, instead they expected to input their new license key and the Pro features of SI would be enabled with the free version of Sprout Invoices already installed; along with that misunderstanding came the confusion that they couldn’t search for “Sprout Invoices Pro” on the Add Plugin screen to install the Pro version that is available for download within their purchase email receipt or their account page at

Obviously this was a rather frustrating support thread because I don’t want anyone’s first time experience with our products to be confused, especially this early.


What I’ll be doing is working on the on-boarding experience via triggered emails after purchase, improving the email receipts, and documentation.

Not an Oddity

That said, I’m still a bit nervous that WordPress users without (most of) our personal history with the platform that the ease of use is harming premium product sales. Consider that the new customer I described above isn’t an oddity, he’s definitely not; as WordPress becomes more user friendly to broaden it’s reach people will expect that the only place to get a plugin 1 is via the admin. Improving the on-boarding of these customers can only go so far.


I don’t expect .org having a plugin marketplace anytime soon, or while I’m still in the WP product business. Which leads me to a couple ways that I could prevent this type of issue again and improve the overall experience of purchasing a premium product:

Drop the freemium model – Like so many others don’t offer an upgrade at all. Build a business around a free product with extensions/add-ons, i.e. easydigitaldownloads. Link to your own marketplace or build one into the admin that allows for purchasing and easy installs.

Build an upgrade routine into the free product – I want to dislike this idea because it means that the free plugin (from the repo) would need to either: download the pro version from an external source, activate it, and then delete itself; or download & install files from an external source into itself. I could see this as being an issue for any plugin review team member.

Have the free version modify the search results – Have the search results return the pro version, which links to a download (or purchase) link. I don’t ever see this passing the plugin review team.

What am I going to do?

I already have plans on building the add-on marketplace into the admin, which will permit purchasing and easy installations/activations. That solution (I believe) resolves familiarity issue, where installing plugins from the admin is easy. The issue of someone expecting for those add-ons or pro upgrades in the main plugins search results will likely always be an issue regardless of how much I improve my messaging.


  1. This includes themes.
Older Posts

Dan Cameron

I build stuff with WordPress

I'm currently building Sprout Apps to help small businesses and freelancers running WordPress.