Be extremely attentive to your first users

This post is mostly a reflection of the great points from this post: It’s the CEO’s job to email the first 1000 signups.

I'm going to try to tell you the points that I got most from that post from memory, and try to avoid looking back on it. The reason being that I would assume the points that resonated the most with me, I would remember.

So the post highlights two major rules when sending your emails out to your 1000 signups:

  1. Actually do it manually.
  2. Don't be pushy.

The point of doing it manually is that you get the opportunity to personalize each email and you completely avoid the probability of messing up the first/last name in some mass mailing thing. The first 1000 or so sign ups are going to be some of the most important customers (reasons I'll get to later), and so it's crucial that you treat them as such and devote personal time to each one.

The point of not being pushy really has to do with, respect the person's time because they're doing you a favor for signing up. Don't make the email long and boring to read, and don't push any surveys on to the person. Say "Hi" and let them know you're available for help/suggestions. That's that. 

And the biggest reason, which I gleaned from the post, for sticking to these rules in your email is that your biggest evangalists/fans will probably come from your first 1000 or so sign ups. So use the email as an opportunity to both identify those fan boy/girls and to not piss any of them off. The ones who respond with suggestions, questions, and excitement, are the ones you should keep track of, pay special attention to, and follow up with.

I imagine there are several startups which were able to really gain a lot of value and traction from the amount of passion the first couple evangalizing customers had. One that immediately comes to mind is Mint.com's success with a small marketing budget. They were able to really get their first customers involved, keep them happy/excited, and really use that to their advantage in growing so quickly. Many startups have probably been able to get some virality from this and it's something I look to do on my next startup.

Treat customer's well and they will love you forever - I will forever love Stripe

Tonight's coding escapade was a bag of mixed nuts - bad thing was one of our customers had to deal with errors on our live site and we honestly couldn't figuret out why, great thing was Stripe was right there for us holding our hand along the way until they helped us figure out the problem and then solve it.

 

Stripe literally helped me go line-by-line through my code to figure out what was going on, even after we had discovered it actually wasn't at all Stripe's fault but my own misunderstanding of how certain Javascript calls only work in certain browsers.

It started when one of our customers told us he was consistently getting an error trying to process his transaction on Internet Explorer. We tested it on Chrome and it was fine. Then on Firefox and it wasn't fine. So we couldn't blame ol' Microsoft for this one. We put some flags in our code to be thrown if certain things acted up and we discovered that our Stripe Token just wasn't being generated.

Thus, naturally, I assumed it was something Stripe had done. I went to them and they walked me through debugging the Stripe portion of my code. After almost an hour we figured out that Stripe was working just fine... my code just wasn't even reaching the Stripe portion in I.E. or Firefox due to some crappy JS things I did. Then we spent the next hour or so debugging the rest of my code. Stripe helped me figure out the best place to but JS alert's etc and eventually we discovered the error was fairly simple.

Chrome let's you call elements in DOM by simply using the id of the element. So with an input with the id 'first_name' in chrome I can do:

var f_name = first_name.value;

But in almost every other browser you just have to do something like this (if you use JQuery):

var f_name = $("#first_name").val();

So we figured that out, and I had to make several changes and got to deploy the new code in production so tomorrow noone has to run into any of these issues.

 

But the big thing was how much help Stripe provided me. They could have easily figured out it wasn't their fault, and gone away. But instead they patiently booted up their VM just to test my site in I.E. and helped me walk through debugging and find the problem. I am super impressed and will forever be a cheerleader for Stripe (even though they DO charge quite a rate for transactions...).

They took customer service and brought it up to a whole other level for others to aspire to. I've always known that I want to make my customers as happy as possible, but now I know just what it takes to do that. Good job Stripe.

 

Oh and here's a rage/happy comic:

 

WhereMyFriends.Be up and running! Finally, I can sleep

Let's make this post quick, since I would like to get some real sleep... WhereMyFriends.Be is finally up and running for good (at least so it seems...)!!!! Thanks VERY VERY VERY much to a Paul from Rackspace who helped me figure it out after several support staff members over the past 72 hours have just thrown me in several directions. Paul, you're a boss. Fortunate for me, he had just finished creating data structures for a very similar purpose dealing with the Facebook API and had a lot to offer. Basically he told me:
  • Facebook/MySQL likes short bursty queries over long ones
  • Ints are greater than strings
The latter really saved the day. The biggest change he helped me make was changing the oauth ids to bigints rather than the current text in SQL and also indexing this. This made everything load at SUCH a faster speed. 100X better than originally, and at least 1000X better than the slow crappy times! K maybe exaggerating a bit. But yeah. I believe this is our solution to keeping up a stable site for thousands of concurrent users. I will wake up in about 14 hours (longer if I'm lucky) and hope to see things going just as smoothly as I left them.