Hacker News new | past | comments | ask | show | jobs | submit login
Tell HN: I accidentally ran up a $1000 Heroku bill
105 points by erikpukinskis on Sept 14, 2010 | hide | past | favorite | 113 comments
This is pretty typical. Every few years something slips my mind and I end up stuck with a "Erik, you're a moron tax".

I was experiencing a spike of traffic when my site was on national news a few weeks ago, and I turned my dynos and workers way up on Heroku to handle the traffic. The spike went down, but I forgot to turn off the dynos.

Flash forward a few weeks, and I am stuck with $1300 bill on a site that I'm not making any money on. I asked Heroku if they could help me out a little... I'm a good customer, and even though I'm a cash-strapped in-the-red bootstrapper, I gladly pay them hundreds of dollars a month to run my sites, bills payed on time and in full. I was hoping they'd maybe give me a little discount... not pay for my servers, but maybe not take a profit off of my stupid mistake.

They shot me down. No refunds available, even though these were virtual servers, and didn't contribute any real load to any of their machines. Although obviously they provisioned machines for me, so they had real costs.

Part of me wants to be upset, but obviously I was the one who screwed up. Still, it leaves a bad taste in my mouth. I guess a smaller host might offer more personal care, but I wouldn't get Heroku's world-class engineering baked into their platform, which I really, really appreciate.

What do other folks think? Am I just a dumbass who lost a chunk of paycheck, or is this poor customer care?

Heroku runs on top of EC2, and they get charged the same amount of money by Amazon whether your instances are idle or on fire. That doesn't matter, though, because businesses do not do cost-based pricing.

There comes a time in a young man's life when "haha, whoopsie, I'm a kid who is not responsible for his own decisions" is no longer sufficient for a do-over. I am not sure when that is, but if you're running a business, well, welcome to being an adult.

How horribly condescending and wrong. Any company that lets their customers go from huge fan to hater in a week has a major bug. The important question is why did their product turn a fan into a hater, and how can they prevent it?

Heroku should almost certainly have user defined cut off points. They should require every new user to set a maximum monthly bill to something they can afford (or "unlimited").

I did exactly that for a similar type of service I worked on. One of the biggest anxieties customers had was that they'd get a massive unexpected bill, just like this guy did.

Heroku's best move would be to cut his bill in half and institute a cut-off feature. Every service like it should follow suit.

It reminds me of that Albert Brooks movie where he goes to Vegas with his wife and she gambles away all of their life savings. He tries to convince the casinos to give him a refund because of the good publicity it would create. The casino replies with something like "If we give you a refund, everyone will come in asking for a refund and then where would they be?"

It's an interesting line to walk. If they give the poster a refund and he posts goodwill posts about it on Hacker News, Twitter, etc. Then, next thing you know, every customer who isn't using all of their capacity is asking for refunds and if they don't give them, then the PR backlash will be even worse (think AT&T and the free micro cells they're giving to some of their best customers but not others).

I'm guessing the majority of their profits come from people who don't use their full metered capacity -- in the same way giftcard profits come from people who never redeem them. Of course a google-like model that provides traffic-based metering would be best.

> I'm guessing the majority of their profits come from people who don't use their full metered capacity

For Herokus sake I hope that that is not the case.

Typically a service like this is 'oversubscribed' to about 10 to 15%, it's like pre-paying for your parking meter, you want to pay a little bit too much because of the uncertainty in when you'll get back to the meter but not so much that you'd be cheaper off parking somewhere for a flat rate fee.

If they really do make the majority of their money on unused instances then they're setting themselves up for trouble in the longer term.

I highly doubt they did not think that one through.

>How horribly condescending and wrong. Any company that lets their customers go from huge fan to hater in a week has a major bug. The important question is why did their product turn a fan into a hater, and how can they prevent it?

Spoken like someone who has never had a real customer. There will always be people who expect instant response to support tickets. There will always be people who expect you to fix their webapp, or their apache config when you are selling them a 'no support' plan. People can be unreasonable. If you have a reasonable number of customers, some of them /will/ be unhappy, no matter how good your service actually is.

Now, for me, I avoid some of these problems by making people pre-pay. If you don't, I just don't turn up your server. If it's time for renewal, and you don't want to pre-pay for the next period, I shut you off. There's no way for you to get an unexpected bill, and if it turns out my service doesn't match your expectations, I offer you a refund if you are willing to leave. (You'd be surprised the number of people who don't take the refund and want to stay even after complaining very loudly and publicly.)

For my target market (companies with small revenues and hobbyists) this is absolutely the best way to do it.

On the other hand, there are cases where some businesses would prefer to just pay through the nose to survive the slashdotting or what have you, and that's where this pay as you go model comes in. The problem is that when you have expectations of a 'pre paid' customer but end up buying a 'pay as you go' service.

>Spoken like someone who has never had a real customer.

I've had real customers and you do what you can to keep the loyal ones and make them happy, even if that means cutting your profits temporarily. It's not just being nice, it's smart business. If he finds another hosting company and starts recommending them, that's way more money lost than the $200 they could have knocked off the $1300 bill.

Eh, for me, I am /very careful/ to treat the customers who are easy to deal with (e.g. those who try to solve problems themselves, and those who don't complain) better or at least as well as customers who complain.

My policy is that if I give one person a refund/credit (without them leaving... anyone can get the last month back for any reason if they want to leave, I mean at least once.) I give all customers who experienced the same problem the same refund or credit. A few months back when I was hit with a DoS and was down 8-10 hours? I gave everyone a free month, not just the complainers. Fourteen grand that DoS cost me.

The thing is, your complainers are expensive customers. On a low margin service, it does not take very many "fix my apache config" complaints before a customer becomes unprofitable. I mean, you want some complainers; they act as the canary in the coal mine. But keep in mind that the real money is in the silent masses who silently leave when they feel wronged.

I mean, focusing on higher maintenance customers is also a valid business model... but you need to charge more, because high maintenance customers are more expensive to deal with. I want to be clear that I am only talking about (and I only know about) lower-margin services where the actual cost of providing the service is the determining factor in price. There are markets where those rules don't apply, and in those markets, nothing I'm saying makes any sense at all (and your advice is probably pretty good... not that I'd know.)

> Heroku should almost certainly have user defined cut off points. They should require every new user to set a maximum monthly bill to something they can afford (or "unlimited").

And then what? They shut you off? That would go over just as well! Here's a thought: understand what you sign up for and take some responsibility for your actions.

Would you feel the same if the bill was three orders of magnitude larger?

If you don't, we're haggling over the price, not over the principle.

> If you don't, we're haggling over the price, not over the principle.

Sure, haggle away. I see no problem with this. I don't see the need for Heroku (or anyone for that matter) to support a user's desire to haggle. I do think, however, that a warning should be given if your usage surges suddenly so that you can react appropriately.

Why not?

If you set a loss limit with your broker, when you hit it they'll automatically sell all your shares and just leave the money in your account.

Any company that lets their customers go from huge fan to hater in a week has a major bug.

"I was the one who screwed up" doesn't like hating to me.

It's nice when you can cushion the user from the bad consequences of their own decisions, but you can't always do that. They may have been able to do that in this instance, but it's hard to know from the outside.

This is the Ruby versus Java debate: should we treat professional programmers like they know what they're doing, or should we straightjacket them?

To which I answer: Yes. It is reasonable to run a Enterprise-oriented cloud scaling company which second-guesses your customers' decisions at every point. It is also reasonable to run an Enterprise-oriented cloud scaling company where a professional engineer engaged in capacity planning clicking OK to an estimate presented in 60 pt Arial is assumed to know what they're doing.

I don't agree. It's not an issue of straight jacketing programmers. It's an issue of reminding a user they are incurring an enormous bill for no reason. A simple "Hi, we see you're using X widgets but your traffic would allow you to reduce this to Y widgets. If you'd like to do that, here's a link. If not just ignore this email." That would solve the problem with very little effort. It would keep people forgetting and having a heart attack, getting pissed and leaving. It really doesn't matter if it is the customer's fault if it causes them to leave with a bad taste in their mouth.

Except that Heroku is very much targeting their brand for the do-it-yourself amateur projects (i.e. the handholding crowd) with their "starts-at-free" pricing, cutesy naming for all their a la carte features, and full-service VPS setup. At best, it's inconsistent and/or careless. At worst, this was their plan all along.

I hardly think a single global setting (set one time) counts as something that "second-guesses your customers' decisions at every point".

Less like a straightjacket and more like an (optional) seatbelt.

Hopefully the folks at Heroku see this comment as the idea for a cutoff rate is really good. I'm not sure cutting the bill in half is necessary, but describing the real costs of their service and potentially allow paying only that cost or at the very least a payment plan seems reasonable.

They may have every right to hold the hard line, but a little compassion would probably pay off better in the long run. Some business' bottom line is profit alone, other's are in it to solve problems, and, keeping an eye on money, and can make enough profit to keep living the dream.

I think the best case is to ask for the discount. Start eating your hat if they don't. Why? Because it is your fault, and it would have been icing to get a break this time. But it's not their prerogative to give out free service, or to take the mass of requests for it if they started doing that.

The user sets up those limits, it cuts costs because they don't need techs to set it up. But the client shoulders the responsibility too. They last thing their company needs is to hire people to handle personal requests like funerals or "i forgots" which would only add more to their overhead. They above comment was perfectly honest with them and not at all condescending.

In terms of "wrong" ? You get what you paid for. Not every business model can include white glove service with freebies and "We understand".

There comes a time in a business owners life when he realizes that he may be able to take the money from this particular customer but that the PR damage done by that customer may be larger than being reasonable and understanding that mistakes happen. And if there is some egg on the face of the business owner for not alerting the user to their sudden suspicious consumption pattern then there are valuable lessons to be learned for all parties.

So, the adult business owner would likely split the bill with the customer to cover his costs, fore go his profits on this particular occasion, have a very happy customer (who might even write about that!) and would apply the lessons learned to their business.

As an empirical question, I think you are likely right that charging off some money owed might buy Heroku disproportionate amounts of goodwill. (I do it all the time.) That is, properly, their call.

As a normative question, though, for-profit businesses do not have a generalized right to make their mistakes into others' obligations.

More broadly, one of my periodic crusades is trying to get HN people to understand that norms in the business world are very unlike the norms of cash-strapped twenty-somethings regarding things like a) the appropriateness of charging money (charge more) b) how much money $1,000 really is (a lot to you, a lot to me, rat spit to businesses with an HR department) and c) expectations for professional behavior (you're doing taxes like a boss, reading contracts like a boss, capacity planning like a boss, paying your invoices like a boss, etc).

Businesses that work on 'metered' entities (phone companies, banks and so on) as a rule have velocity checks in place.

This limits the amount of damage a customer can do to himself and to the company between billing periods.

I think Heroku is the party here that stands to benefit the most from the encounter, and by simply charging the customer they've lost an opportunity for good PR and have made half of HN more wary of dealing with them.

I understand what you're getting at, but just like there is a maturity to being 'in business' there is a maturity in dealing with your customers, and in this case both parties carry part of the blame, so the reasonable thing to do is to find a solution that lies in the middle.

Even the pros mess up occasionally, and in this case it was pretty clear that it was a mistake.

The real lesson here is that Heroku should implement a notification system when a customer has excess unused capacity or a min/max setting for their dynos with automatic increase and decrease depending on the amount of traffic a customer is currently receiving.

As you say, you 'do this all the time', so that means that you know exactly what is in your interest as a business person, and if that means that you occasionally eat a charge that must mean that you know exactly what the value of goodwill is.

Heroku, apparently has not yet learned that lesson, and 'heroku' and 'unexpected large bill due to mistake' are now two concepts that have become strongly linked. It did not need to be that way.

for-profit businesses do not have a generalized right to make their mistakes into others' obligations.

The OP never argued that he has the right to force the cost of his mistake onto Heroku. He's polling a community of business owners to see how they feel it should've been handled.

If I were Heroku management, I would've written the OP something like this:

(Valued Customer)-

I'm so sorry your accident created a nasty end of the month surprise. We understand, but we cannot forgive the whole amount because while they were not servicing requests, we incurred real costs keeping the dynos ready, willing, and able for you.

Since it's your first mistake of this sort, and you've been such a great customer, we're willing to reduce your total amount owed to $x.

We hope this helps, Heroku


so yes, I think it's his own damned fault. But I also think it's a missed opportunity to create a happier customer.

How do you judge the PR damage of a customer? Unless they bring up who they are elsewhere on the net (assuming it is not obvious) you simply can't judge such things.

So what do you do; lose money each time this happens? Or take a hard line "we're nice guys and all but, sorry, it's costing us too".

And the happy customer might write about you; but the risk is it sets a precedent. So the next month when another customer screws up they think to try the same tactic - and if you refuse them it's even worse press ("oh, apparently I'm not good enough to be treated that way", "2 tier customer service" etc.).

It's a minefield all round.

How is heroku any different from your or my business? Because they are mildly successful suddenly they are the bad guys and everyone is is good until proven on hn? Double standards really piss me off. The OP needs to take responsibility.

Heroku runs on top of EC2, and they get charged the same amount of money by Amazon whether your instances are idle or on fire.

Is the latter part of that true? (I'm not playing Devil's Advocate, honest!)

I'd assumed the lion share of Heroku's profits were coming from clever arbitrage of EC2 instances rather than markup alone.

For example, if they have 1000 users paying $108 per month for 4 dynos, they don't keep 4000 "dynos worth" of EC2 instances running constantly. Instead they can see the overall load and maintain that lower level of EC2 instances plus some "slack." When traffic increases among apps, the slack can be rapidly configured to pick it up. Heroku would then make not only a markup on EC2 but also profit from the difference between the maximum load and actual load. (Isn't this how cloud scaling systems work anyway, right? Heroku could/might be doing that over thousands of apps for collective benefit.)

Perhaps I'm over-thinking how I'd be trying to squeeze profits out of a Heroku-type system though ;-)

I was under the same impression. If your app has been idle for a long time it takes a few seconds for the first request to complete, which leads me to believe they shut down dynos for idle apps. But it's possible that's only for the free apps.

If they're not doing it that way already then they should definitely hire you at 10% of what you would save them every year ;)

I know a few of the guys at Heroku and I'd be gobsmacked if they weren't doing stuff 100x smarter than I mentioned. With that said.. I hope I'm not wrong and making them feel bad in the process ;-)

I understand Heroku's decision, but I must say, when the opposite happened to me with SendGrid a couple of days ago (I didn't even asked for the refund, they did it on their own initiative), I was extremely positively surprised.

Right... But I've heard nothing about your experience. Likewise, there is a nonzero likelihood that Heroku could give this HNer a $1000 break and get no publicity...

For $1,000 and no publicity that would still be a valuable lesson learned.

What's more interesting is if this happened before and how they dealt with that. What's the cut-off point at which you want to stop your customers from doing serious monetary damage? $1000? Apparently not. $10,000 ? $100,000?

There comes a point where the continued existence of Heroku would be at stake, so it is in their own interest to guard against this, especially when you take in to account the number of users they've got.

They need some guardrails for this, and sooner probably better than later. Terms of service will not protect you if your customer can't pay your insanely large bill.

In that case you'll end up eating the charges anyway, so guardrails are to mutual benefit.

In my opinion, your point is totally orthogonal to the point I was responding to. I agree with your reasoning about Heroku's self-preservation completely.

He already wrote about his positive experience, right here in this thread.

At least Sendgrid didn't gain a negative review on HN and the consumer is still there, paying. That is good for both parties.

You didn't but I can assure you that many of my friends did. Also it was a much smaller break.

Refunding a portion of their profits on the 1K could be seen as money spent on advertising. It sounds like the guy realizes he made a mistake, so he'd probably be happy if he got something back, and think it perfectly fair not to seek to get everything back, so in the end it wouldn't be a great deal of cash, that, long term, they'll probably recoup in the course of a year anyway.

Since he's a good customer, they could even give it to him in the form of credit for their service, which gives him an incentive not to leave.

I'm pretty sure that's not true, but I don't know exactly how Heroku works.

The way I understand it is if no one is making requests to your app they will shut down the dynos, and when you start getting requests they'll spin them back up, up to the number of dynos you're paying for. That's why if your app has been idle for a long time it takes a few seconds for the first request to complete.

This lowers their costs, and presumably the prices for their customers.

I could be wrong though, and perhaps they only turn off dynos for non-paying customers.

I'm going to go against the grain here and say it's partly Heroku's fault. If a customer is paying hundreds of dollars a week for a feature they're not using, that's the time to send a friendly automated email saying "Is everything okay?".

This is especially important with a service such as Heroku, where users will be changing these settings all the time and so there's a high probability of human error.

If it's not Heroku's fault in some partial way, then look at it from another perspective. It's an opportunity for Heroku's competitors in a market that is quickly becoming commoditized. At the very least it's a feature that I always look for when using pay on demand services, and will rank very highly on my list of important to have features.

Akamai comes to mind as an example of a company that has always had similar issues. If I ever were to use them in the future, I would have to factor into their monthly costs the partial FTE required to manage their usage and costs. More importantly, if there are other CDNs that offer better cost management features, I would almost certainly use them before ever using Akamai again, unless there was no other technical option.

I can think of loads of reasons why you might be legitimately in that situation...

Perhaps you intentionally provisioned a large amount of headroom for a forthcoming expected/possible traffic spike.

In that example it would be annoying to get "are you sure you want to have this extra resource running?" emails.

(sure, you should be building the system to auto-provision but that would have required a better programmer and you just got the interns to build it, etc)

I get tons of emails saying "Would you like to buy viagra?". Getting an occasional email saying "You might be paying us too much money" is low on my list of annoyances.

Not only that, but I will almost never be annoyed by someone who says "wait, are you sure you really want to pay us that much?"

My bank emails me when I withdraw over a certain amount, they send me a text message and sometimes will give me a call. Those are not annoyances, those are safety guards I want in place.

I think it'd be a useful feature for a good number of their users. It should be able to extrapolate based on previous usage, and notify me if I'm extremely outside my average historical utilization rate. They ought to allow you to set a sensitivity or threshold, and they also ought to let you opt out altogether.

They could give you the option to turn off the notification if enough people complained about it, though I doubt they would. I don't usually find it annoying when a company goes out of their way to look out for my best interests, especially if it could cost them money short-term.

This reminds me of something my friend did. We had an assignment to try out EC2 with Hadoop and we needed 8 machines, and we were warned in class to turn them off or they'd keep charging.

Guess who didn't turn them off.

So he casually mentions it to me and tells me that he racked up a 500 pound bill, but his CC didn't have any money in it so it was fine. I asked "so did you turn them off?" He said "no, not really, but it's okay because they can't charge me".

So he racks up another 500 pounds, and only turns the instances off when he finds out that he didn't use the inactive CC but another, active one. Long story short, he's 500 pounds out (Amazon were kind enough to refund the first 500, which disappeared as soon as it hit his account, since he owed another 500).

reminds me of a friend who was studying for his MSc Physics at Warwick... the students had to do a lab experiment with a radioactive isotope and were warned to only have the box containing the isotope open for a few minutes in order to reduce exposure to safe limits.

Guess who forgot to close this box and after 2 hrs of exposure now has to worry about cancer and/or infertility in later life. True story.

Look at it this way: at least your friend took CS and not Physics and thus is only £500 in the hole.

Borderline negligent, though, on the part of the instructor. Lab assistant or supervisor should have been double-checking safe handling of something that dangerous.

he can't be expected to keep track of something for 2 minutes without someone watching over him, but we can let the fellow operate a car, have mains power in his home, purchase cleaning chemicals, etc?

loads of graduate students in the physical sciences are regularly given access to stuff that dangerous or worse. if we've got to have somebody watching over each and every one of them, graduate education will grind to a complete halt.

You are supposed to get training when dealing with anything different and dangerous. Say you rock climb for the first time... and the instructor talks to you for 10 minutes about various stuff and somewhere in the middle he says: "and make sure to check that you can't see 'danger' written on the clasp of the harness, you may fall if it's not secured properly". You have lots of stuff to think about... your posture, the grip, the path you want to take... in a group of 10 people, is it really that unlikely that one will simply forget?

That's why the first couple of times somebody more experienced will check everything about your harness.

and what will the training for remembering to close a box consist of? your posture, the grip, the path the lid will take?

checking that they closed the box.

Really? We have to hand-hold adults that much now? We worked with chemicals that could cause serious injury in freshmen chemistry. The instructor did an extra "yes this stuff is really dangerous" warning those weeks, but it was a bunch of 18 year olds.

This was a Masters level student, so I don't feel like the instructor has any blame here

Jesus, that's horrible. Yeah, I bet he wishes he could pay 500 quid to make that go away :/

I'm going to go with dumbass. Nothing personal there, but you turned up the level of service and continued to use it even though you didn't want/need it anymore. The fault is entirely on you. Think of it this way, they provisioned load to you which in turn even if you didn't use, couldnt be provisioned to others w/o potentially over provisioning.

Making money on people's mistakes seems like a bad business model. Give him at least discount and you'll have an evangelist.

You wrote as if Heroku were taking advantage of their customers. They don't, you pay for what you use. The poster should not even post such a self-centered post on HN to tell people to sympathize with him. He screwed up and he is a whiner. I don't want someone like that becomes an "evangelist" because all he'd try to do is to get everything his way.

I don't think this is Heroku's business model and not all the evangelists are born from gifts.

That's not how clouds work.

well heroku runs on ec2 and amazon charges them for it because amazon does actually have a finite number of resources ( large but finite ) which means eventually, when you provision to someone, it means you cant to someone else without over provisioning.

just because it is the cloud doesn't make it the IT version of big rock candy mountain.

You're making the assumption that they don't overprovision at all.

What you are doing is distasteful because you made a mistake and now you are using bad publicity against Heroku to force them to lower your bill (or just out of spite).

Heroku might optimize for this usecase by detecting spikes somehow and notifying you that you still have machines running, but other than that, I don't see how any of this is their fault.

I wish Heroku officially supported autoscaling. I've been using Google App Engine lately and the autoscaling and pay for what you _really_ use is very compelling.

They do for their background workers, but not the dynos. http://github.com/pedro/delayed_job/tree/autoscaling

Hmm, you might be out of luck, but it does bring up the question of why Heroku doesn't have load-triggered scaling, or some sort of dead-man's switch option.

There are third-party solutions for that, like this one: http://github.com/ddollar/heroku-autoscale

Having been a Heroku user for a while, and having looked into autoscaling for dynos and workers a few times (but not having really needed it yet), I really think they could do a better job of publicizing that these solutions exist.

I imagine that tons of their user base (especially for small hobby sites that only occasionally, if ever, see high traffic or run background tasks) look for this, and yet there's nothing pointing to it other than old posts on the mailing list. At least put information and resources for autoscaling in the Docs section of the site.

Acquiring resources only as long as you need them, and then releasing them when you're done, should be the standard service - complete user control should be the advanced feature set. They already do this for websites on a single dyno: they spin them down when they're idle for a while. But they don't do it with workers (what effect does the latency of starting a backup job up really have? it's already running in the background).

It's because they need to keep a process running all the time to poll the queue for new jobs. So basically, they keep an instance of your app booted at all times for job processing (if I understand how DJ workers work). And that's pretty much like a dyno, except it doesn't serve traffic. And there are no web requests to trigger it to spin up like there are for dynos.

One of Heroku's employees has a fork of delayed_job that handles autoscaling workers in the background. I use it in conjunction with several hourly cron jobs and it works like a charm. http://github.com/pedro/delayed_job/tree/autoscaling

Yes, I was aware of this, though I haven't had the need to use it yet.

But my question stands: why isn't this stuff very visible - i.e., on Heroku's DJ doc page: http://docs.heroku.com/delayed-job , or at least linked from there? Or published as an official piece of code on the Heroku github page?

Because it would decimate their bottom line if everyone stopped running extra instances.

Really? I would certainly hope that's not the case. Relying on customers overspending due to technical deficiency seems like a pretty poor business model.

I'd certainly be happier paying more per pro-rated unit of time that I actually use than I am feeling as though I'm in an arms race to not be fleeced.

Is there really that much revenue to skim off the top? Either way, they're paying Amazon out of those charges.

But I'm not so cynical as to think that their success is reliant on this income.

Either way, they're paying Amazon out of those charges.

I'd be extremely surprised if Heroku actually spools up EC2 instances the moment you move the slider. It'd be a far more intelligent (and profitable) design to simply make sure there are sufficient resources to maintain the desired service levels with a buffer to deal with spikes in demand.

It should be relatively straightforward to provide service levels that are functionally identical to actually starting each "dyno" or "worker" with a greatly reduced cost structure.

Relying on customers overspending due to technical deficiency seems like a pretty poor business model.

I didn't mean to say they're relying on it, simply that it's adding to the bottom line and it would be greatly missed.

Have you been able to get that to work with Rails 3? I've tried and failed miserably.

Not really. If/when I do I'll see if I patch it up if the owner hasn't already.

I am not surprised that they didn't give a refund; most businesses wouldn't. However, I think businesses these days should start integrating a one-time "whoopsie" allowance as part of their customer service (within reason, of course. It may or may not be feasible depending on your business model). You're probably going to have people that try to take advantage of this, but there are some people who make honest mistakes, and I would give them the benefit of the doubt. Just treat people well.

I believe if you take care of your customers, they'll take care of you. In general, the one thing that people will remember for life is how you make them feel.

The benefits of providing awesome customer service outweighs the cost IMO (I haven't done the math, but that's my gut feeling). I remember reading a story on reddit yesterday where a gamer experienced the almost exact same situation with Steam:


that provides a good example of how news of awesome customer service can be spread, and possibly grow sales (Zappos).

For example, I have several sites hosted with WebFaction.com and I'm unbelievably happy with their customer service. They respond within 10-30 minutes on any support tickets. I'll continue to use them in the future. (see how that was a good example of what awesome customer service can do?)

I'm actually surprised they didn't. Think of the goodwill a post reading "I messed up on Heroku, but they were cool about it" would have created.

After all, Heroku could have auto-detected idle instances easily and could have disabled them or alerted the user.

The whole 'dyno' concept without an automated scaling option is a bit strange. Why set an exact number of instances when web traffic is just about the most variable thing you could possibly want to measure. Even apache auto-scales the number of processes depending on how many workers it currently needs to serve your requests.

Auto-scaling and a web app hosting service go together like bread & butter.

It's a tricky line to walk. If there was a post saying how Heroku waived 1000 bucks, there could be a string of scammish people trying to pull the same move. And when Heroku turns them down, they will refer to this post and claim "discrimination".

I think the issue here may be more of tone. It seems from the post that Heroku just gave a cold "no". The user should really post the original exchanges. As a user, I feel a lot better psychologically when I know the other company tried its best--even if they could not help me.

Did Heroku try? I can't tell clearly from the post.

I don't feel comfortable posting their messages without their permission, but it was a no-frills, direct answer to my request.

And how could this be a scam? They can easily see the traffic on the instances in question. The scam is that I only pay them $300 this month?

I don't feel comfortable posting their messages without their permission, but it was a no-frills, direct answer to my request.

They are a company. IMO posting their email is fair play. It's not an individual.

And how could this be a scam? They can easily see the traffic on the instances in question. The scam is that I only pay them $300 this month?

I never said you are a scammer. You're not. But this potentially sets a precedent for future users to be reckless and want the same favor granted to you.

A scammer would be fairly easily distinguishable from someone making an honest mistake, the difference being that you've already made x* the turnover of the 'mistake' on the honest customer, and the scammer would actually be using those instances for something.

Scammers, as a rule don't go for solutions with a high up-front investment in their time, they'd be much better of using a few thousand stolen credit cards instead. Why bother asking for refunds on a real life ID when you can get away with someone else holding the bag...

Heroku should sidestep this question anyway and implement auto-scaling and notifications on certain thresholds asap.

Why would you say most businesses wouldn't? I'd think most business would do something to help a loyal customer stay loyal. I agree with you that it's absolutely good business practice to help customers recover from their own mistakes.

On many many occasions, businesses have literally given me money even when it was my stupid mistake. Some examples just over the past few years:

- Sprint credited me $100 when I racked up a $250 bill by not watching my usage

- Bank of America credited me $100 when I left my card in the ATM and someone withdrew $100 from my account

- Hyatt Place gave me a free room when I made a reservation on the wrong date (and never showed, or called)

- Southwest Airlines gives you full credit if you cancel your flight any time

- ATT gave me all my rollover minutes when I changed plans (by rule, you lose them - i had over 2700)

Those are just some examples that I can remember...I'm not sure it's a healthy mentality to expect this, but it certainly leaves a very positive impression. Leaving your customers in a state of feeling ripped off when you can obviously help is not the right business decision.

And you prove them in the right simply by recounting those instances here.

You're right. Maybe I couldn't think of enough instances where I've made a mistake and asked for a refund.

Apple apparently has a one-time whoopsie allowance. According to many reports on the 'net, they will one-time refund an app purchase.

Expedia has this. I once booked a flight & hotel for the wrong month. I was told they could cancel the hotel free of charge, but for the flight they would be able to take care of it just this time and if it happened again it would be $100.

Canceling ahead of time is one thing. "Canceling" later because you didn't use your reservation is another.

The example in question is more like: you make a reservation for September instead of October. In October you realized your mistake. Then you ask for your money back, after all you didn't use either the tickets or the hotel. And because the airplane and hotel weren't fully booked, you claim they didn't have any additional costs because of you. Well, good luck getting your refund.

It's tough to say. You really sound like a reasonable person and if you are the model customer you appear to be then I would probably side with you.

I like a very simple rule: Customer retention is far more important than customer acquisition. It may be a flawed rule, I'm not sure since I'm not a successful business person. But it sounds good to me. It seems vitally important to retain your good customers.

Yes, the very fact the the OP is now considering (however causally) the idea of finding a smaller host with more personal care is something I'd be concerned about if I were his current host. Who knows, maybe he'll go out and find an awesome small host he never knew existed. Customer gone, and he'll probably start recommending the new host to all his friends and associates too.

If it were me, and a good customer made a mistake, I'd eat the cost to keep the goodwill.

Not sure why anyone but yourself is to blame, and I think it would have been nice for Heroku to give you a discount then, after this post they should go quiet and let you pay. I think this post is bad form.

I'd go with "Dumbass" and add "whiner" to the list. Why is it poor customer care when all Heroku did was saying no to an unjust request? You can move your site to another hosting service, or host it yourself.

"I am stuck with $1300 bill on a site that I'm not making any money on." So that means if you make money on the site, then you'd pay? What's the difference here? You're saying that because you're poor now, you don't have enough integrity to say "oops I did something wrong" and take the responsibility?

I'm myself a boostrapper burning thru my savings and to tell you the truth, I do everything myself to cut on expenses. I'd love to use Heroku, but they are too expensive for me to run. So if you don't want to make another mistake, then start to accept responsibility and learn to take care of problems yourself.

Happened to me on EC2 once. They cut me a break and gave me 20-30% discount. They can though, because the idle machines were not costing them any money.

They weren't costing Amazon any money if they had excess capacity, but if those machines being in use prevented them from being sold to someone else then they did cost it.

This didn't happen to me, but that's only because I set up dozens of post-its and alarms reminding me to quit those tests I was running on EC2. That's perhaps the one web-service that has made me the most paranoid.

this happened to me on ec2 this summer- dozen idle instances running for two months because of a bug in a script.

I didn't get any sort of break though. :( June was a lot of hotdogs and Budweiser till I could dig out of that hole.

If you could get away with turning up your dynos and workers in anticipation of a traffic spike and then not have to pay; it wouldn't be fun any more.

Why? It could be fun for everybody, just set a baseline and a peak level and use as much as required with a nice little graph of how close you came to your maximum allowance so you can plan your future hosting expenses.

I happened something similar to me. I forgot I was running a recurring billing adwords campaign. I realized I had that campaign when the bill came with a lovely 3.700$ total. The worst part is I didnt got to sell anything.

I don't find this poor customer care, really: I consider this normal.

You're talking about "a few weeks": did you check your expenses in the meantime ?

I would put some reminders (google calendar etc) or habits in place to regularly check your expenses.

It's human error. Simple as that. Happens to absolutly everyone even the brightest individuals. I've seen in "the livesite" that this kind of spike problems are more common than you think, and the ideal solution is to automate an alarm that tells you both, when a spike is happening, and when X throughput passes over a threshold. This kind of automation is easy and spares lots of trouble.Could be as simple as scheduled task parsing some logs. Some more fancy option is always good though :)

At this point, I'd probably just be thanking my lucky stars it was only $1.3k. You'll make it back.

Something like this wont happen to Google App Engine, thankfully.

I can see the problem from both sides but really Heroku had some more more to gain by just crediting it or most of it in what you would say about them. Clearly by the rules, you should have to pay, but that does not mean that a business should not do the right thing and work with a customer.

Imagine how big a raving fan you would have been if they had credited the entire thing. That is a tiny cost compared to acquiring a new customer and turning them into a raving fan.

I got burned by this on Heroku recently as well but to a much lesser extent $$$-wise. My app typically runs on 1 dyno because it's basically not supported anymore. At some point I must have been messing around in the interface and accidently bumped my dynos. Oops.

I personally think they should have a "WTF your load is like zero, you normally have X dynos, but you're using Y dynos for no real reason... dumbass" alert email... I certainly would have appreciated it!

Reading this makes me laugh because today I got a $1400 bill from National Grid for gas and heating. The normal bill is around $40 usually. An interesting phone call awaits tomorrow. In all seriousness though Heroku should strike a deal since this is your first offense, just like banks will waive fees for you when you overdraft the first time.

I got stuck with a large, unexpected bill at my auto dealer. They comped the next large bill. They're awesome and I'll be a customer for life. They're also the highest (Yelp) rated shop in the area so I bet I'm not the only one.

I suppose it depends on what sort of shop Heroku wants to run. It just seems like customer service is not a big deal to them.

I'm kind of disappointed that Heroku didn't at least chime in to comment on the situation in this thread. It's one thing to play hardball and stick to their guns, but when there's an obvious, popular thread about it, they should at least own up to the decision and chime in.

In my experience a smaller host would have likely been sunk by your lack of attention requiring them to allocate more services (used or not), not be able to provide more personal care. You're lucky you're on a big host.

This happened to me, but not an such a large scale with an EC2 instance. I emailed amazon and they severely discounted the bill, with a warning to be more careful because they might not be able to do it in the future.

Well the lesson that I've learnt here is that when adjusting something like this up temporarily it is a wise idea to add an event to your calendar to switch the thing back down to normal levels.

does Heroku have an api? if so, think of it as investment towards writing a traffic spike script/cron job =)

First: If I were Heroku I won't give you any discount, not after this.

Secondly: Heroku is high class hosting, they charge you for being able to host yours "spikes of traffic".

Third: I'm pretty sure you enjoyed their free hosting plan for a long time, you should be thankful.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact