Startup Fuck-ups: How we lost 25% of our monthly revenue overnight
medium.com
medium.com
Either way, my hat's off to them. It's a giant pain in the ass that can be resolved for less than $20 per month.
I would also suggest if you do go that route, have accurate metrics on everything. How much time are you spending maintaining what essentially is a separate product? How much is it taking from your MVP or is it part of it? If you can translate that to cost then you can judge how much offloading that service would be to someone that specializes in it.
Having worked on the IT and Biz side of tech companies (happily SaaS closing that gap daily) I can tell you the logic patterns are diametrically opposed.
IT = born problem solvers, nothing is too big, small or complicated BIZ = friction solvers, nothing can be too efficient
The struggle isn't that 'you' could do it (better, faster or even cheaper) in your mind... but that if isn't a core competency moving your business forward, write a check and let someone else handle the core. Break free from the burden of 'undifferentiated heavy lifting' and improve your core product.
We sell a SaaS solution and in turn I write ~20 checks to other SaaS providers a month to keep me focused on improving our customer's experience.
The major advantage to outsourcing it is that the people you're handing the job over to actually know what they're doing and are experts at it. Plus they can spend 24 hours a day checking this stuff instead of you.
The arguments for being in-house on absolutely anything but your core competency when you're an early-stage startup are really hard to justify.
Cost benefit analysis (even a brief one) will always help, even if you get the answer wrong. It's just a part of planning; your plans don't always work, but if you don't plan then you'll never know if you succeeded or not (or why) until it's too late.
Figure out if you're sending the right mail at the right time. Cut out unnecessary emails and unnecessary junk in the emails. Make sure they get delivered and read.
Any service from a dating site to an app for accountants a wholesaler of underpants needs emails and how well you use them is important. You can be minimalist. Analytical. Formal, casual.. There are as many approaches to this as there are to anything else. Just don't take it lightly. Get good at email. Just because it's simple doesn't mean it's not important.
Which is the real problem here. Team members knew mail wasn't being delivered in the forums and they chose to ignore it. They must have never done any follow-up (personal email, phone call, survey) on new customers even when they were doing their big marketing "ramp-up." They must not have even checked with a test walk-through of the new user process. Leadership was just too far removed from the customer experience, whether they used a 3rd party email service or not.
Mandrill, Mailgun, Sendgrid all make this easy.
I don't use my own mailer currently. I DO, however, use postfix to queue and relay email to rackspace, who actually sends my email.
I don't think the API method is appropriate because then you need to run some other queue system so your app has an instant response time for the user. Their action would create a queue entry (with whatever data) that will eventually be fired off as an API call to whoever you're using to send email via an API.
Or, you just set up an SMTP relay and use sendmail/postfix/whatever locally to handle that part of it.
I often see these startups using the API calls as part of the customer facing flow (website or otherwise) and the increased latency waiting on that API call to return really, really sucks.
You'll want to queue those API calls so your queue mechanism returns to the user very quickly, and then the emails can fire out .5-5 second later.
Mailgun offers 10,000 emails per month free and is dead simple to use.
To fix the issue, we put together a script to delete the failed items, since any retries to send them didn’t appear to work.
At this point my head was screaming "NOOOOooooo!" and made me feel bad for author for the whatever disaster would soon follow.
Not only was the problem not fixed, it wasn't even understood. Hiding the problem by fixing its symptoms will rarely get you far. I don’t think I'm even Captain Hindsighting here, as I've learned over and over that not understanding the root cause of any issue means you will be screwed by the issue sooner or later, and it likely will not be pretty.
Sure, sometimes you don't have the time to get to bottom of an issue, but even then you cannot pretend that it's fixed. It'll be back with a vengeance.
For example, if I was going to design an emailer today:
-Grab the email from a database save it to a file (likely one or several XML files) and place it in an "Outgoing" directory (ye olde file system).
- Then have a process which grabs an atomic lock (only one running at a time!), gets the directory listings, and launches the actual "sender" for every file individually (concurrently).
- When the launcher launches the sender it records the PIDs of the process against the actual emails/XML files internally.
- After a set wait period if any processes are still running, the launcher kills them, and moves the email/XML into a "Failed" directory which we monitor independantly.
- Every email which is sent gets moved to an "Archive" directory by the sender process, and we monitor that to see if no emails have been archived for a long time (e.g. 30 minutes).
You can accomplish the same thing using a database (Outgoing, Achive, and Failed tables), but frankly with so many awesome file system tools already around it doesn't make sense to reinvent that wheel. Plus people intuitively understand that if a file is sitting in the "Outgoing" or "Failed" directories then it hasn't been sent yet (just like your client would!).
But to sound less like a dick - communicating with a low probability of errors is hard !
Someone1234's solution is the antithesis of BizTalk, the complete refutation of the ultimate futility of using workflow engines.
File system based queues. Point-to-point data interchange, so no concurrency; your notion of imprinted work tasks with PIDs is a good idea.
I used a "pull" model. A thread would take work from one directory and drop into another. Poor man's workflow. Worked great. Super easy to monitor and troubleshoot.
Using Java, implementing the cross platform file locking (so a downstream process wouldn't pull a task before it was ready) took some finesse, a small caveat.
Why, in 2014, are people still not monitoring everything as job #1?
Why isn't this being taught in schools? How do people with tech jobs not know this?
Hope they're monitoring their backups.
That's not "transactional email". That's spam.
You're a spammer. Die.
I don't know when pregnancy became a part of a person's identity. I guess this adds to the coolness factor these days because you have to try harder? Sigh.
And why does it matter to you whether or not the author considers being pregnant to be part of her identity?
IMO it would be more healthy to comment on the content of article than than the author's identity.
ie. not at all
When is the last time someone introduced themeselves to you as: "hi, i am xx and i am pregnant"? It makes no sense whatsoever.
Being single while dealing with that is an enormous burden mentally and physically.
I didn't notice it referenced in the story, but it is definitely a factor that would influence a person's behavior that would be relevant, especially in a startup context when everyone is wearing 10 hats.