June 2, 2020

Sent 100+ Emails To Every Customer

Donald Wasserman @Djwasserman

If you want a sure-fire trick to get disengaged users back into your application, try this: send each user more than 100 emails on Sunday night.

Next Release is tightly coupled with GitHub and most of our application works in the background, we often don’t get a chance to engage regularly with users, since they rarely re-open the app.

We decided to ship a basic weekly summary email, just like every other SaaS company provides to let our users know about the work we did on their behalf in the past week.

Narrator: Things didn’t go as planned.

After wrapping up a simple template and background jobs to generate the emails, I promptly forgot all about this task.

I woke up Monday morning and found 150+ emails in my inbox, a pile of pending intercom messages, and braced myself for a massive amount of unsubscribe messages Slack. Not a great morning.

Looking at the code, I quickly realized what was wrong (more soon), wrote a blog post explaining the issue and recorded a quick apology video for users who logged in to see what was going wrong.

“Highly Technical” Retrospective

After an exhaustive search, I got to the bottom of this issue. Our backend is a Python app and I messed up the indentation of my call that sends the email after batching them.

I ended up sending an email N times to every user for N users in the block of user accounts. Fun times.

How did this happen?

It was warm and sunny last week and I’ve been sick of being stuck in my basement office, so I decided to just head outside to write the code for this relatively easy project. Then I decided to refactor some of the code I wrote so I could include some basic tests (which passed!), and I messed things up as I was copying/pasting the code around.

Some Reflection

A mistake like this would have likely put me in a coma from stress, embarrassment, and panic several years ago.

As we’ve seen protestors fill the streets to standup to yet another senseless killing of a black man at the hands of the police and have witnessed a novel infect millions and kill hundreds of thousands worldwide, the impact of issues like these becomes more clearly into focus.

This was an embarrassing, preventable screw-up, but it’s one that just hurt our email delivery, caused an annoyance for a few customers, but in the broader world, not a big deal.

And only 2 customers canceled.

Loading comments...
Today's Top Milestones
  • Browser(dev-tool) Extensions support!
    Responsively App v0.5.0 is now live and here are the updates: - Installation and use of dev-tools category browser extensions are now supported. Now d
  • Got my first paying customer!
    Today one of my first trial customers for SharePoint Server Recovery converted to paid. It felt amazing! Just 99 more of these and I'll be exactly whe
  • Frontpage of Hacker News
    Yesterday I launched my article on Hacker News and got to the front page! Overall it resulted in 12,725 pageviews and 30 new signups. Here are three l
  • Listed on File Hippo
    We got listed SQLite Database Recovery on File Hippo and got to the front page! Here are three lessons I learned: Refine your website before launching