Wednesday, July 29, 2009

Build a Business with Google

Hi, I'm Eric. A C++ coder turned Java zealot turned Ruby on Rails adopter turned Django turned... whatever. They're all fine. I'm not here to talk about superior architecture, or the best language, or design or whatever. I'm here to talk about getting your web app idea out the fucking door. This is exactly what we did with A year ago this was hard, but could be done for free. Two years ago it could be done cheaply. Five years ago you needed some funding and a lot more time. This is today - so I'll talk about the lowest barrier to entry technical stack on the market: Google.

Note - I don't work for Google, I don't get kickbacks, I don't even own any stock. But I have bootstrapped several companies, products, enterprises, forgettable services, and open source products. I also make iPhone apps.

Are you afraid of "putting all of your eggs in one Google basket"? Don't. When speaking of risk assessment, the largest risk of a startup is failing to launch. Google going away isn't your biggest concern. Scaling isn't either. Just push it out the door - then worry about those things. Once you have customers, you'd be amazed all of the problems you can pay to have solved. Like migrating to dedicated machines, if it makes you feel better.

So what do you need, from the technical side, to start a web application company? A domain name. You need a server that doesn't suck. Email/office software is nice. A blog is good. A phone number to call. What else? You also need customers. You get them through advertising and campaign optimization (which you achieve via tracking). They also need to be able to make purchases. But first thing's first:

Domain Registration/Host/Email/Office Apps

Let's start with the basics. Register a domain and get a host through Google Apps signup. Click "I want to buy a domain name" and search for one. It costs $10/year, which is more than Go Daddy. What they give is worth the extra price. You'll automatically be set up with a standard version of GA - which provides you with 50 domain-specific email accounts integrated with the Calendar, a sandboxed office suite with IM/Video Chat, Documents, Slideshows, Spreadsheets - also integrated Forms, which you can put on your Site or email, and collect results as a spreadsheet. Oh, also, they provide a website CMS.

Money down: $10

Phone Management

Sign up for Google Voice. It's not public yet - but it will be soon enough. I use it daily... it has damn near everything you need for a small company PBX. I live in Indianapolis, but my business number is San Francisco - which forwards to my cellphone. Twofold benefit. 1) you don't want to give out your private number, and 2) you don't want to give out your private number. It's free for now. You can even pay extra for a toll-free (800, 888, 866) number.

More on Email

This is a nice trick mentioned by Tim Ferriss in the 4-Hour Work Week. Since you're eventually going to grow and outsource all of your work (right?) it's not a bad idea to segment your communications in advance. Your company may just be you and a buddy for now, but you want the illusion of a larger team. Sales. Info. Webmaster. Whatever. You can do this on the Google Apps dashboard by clicking "Users and Groups" on the top, then choosing "Groups". Create as many groups as you need and just have them forward to the appropriate people. As you grow, it's easy to reroute the traffic - much easier than changing a well-known email address. Our list for is:,,,,

They all forward to me and Jim.


Get a blog via Blogger. Just sign-up with the Google Account you made above. Follow the steps to create a blog. That's easy enough, eh? What you probably want here though, is not a blog URL , but rather This is a two-step process.

First, create the blog subdomain. In the Google Apps dashboard, click "Domain Settings" above. Then click "Domain Names", then "Advanced DNS settings". Sign into enom. "Edit Host Records" and "Add New" CNAME named "blog" (or whatever). Set the address to "" (don't forget the period at the end). That's it for the DNS routing table.

Next log back into Blogger. Click "Settings" and then "Publishing". Fill out Your Domain with the new subdomain (eg. That's it! No more lame blogspot domain.

This should cover you on the business/IT end. Let's make the app!

The Application

For years Google skirted around the edges - instead focusing on toolkits, APIs, and company tools like email. With the launch of Google App Engine (GAE) last year, they've taken a huge leap toward Amazon. What is App Engine? Think EC2+SimpleDB+S3+deployment tools+data management. It's to Python (and Java) what Heroku is for Ruby on Rails. In other words - a dream.

Sign up for a Google App Engine account. Again, just use your new gmail account. There are a lot of posts about App Engine, so I won't cover it here. But what I will tell you is, if you choose to write in Python, use Django. There a great patch project here. Follow the instructions. Use it. I've written 3 GAE projects so far - two of them without it. One with. If your application will be non-trivial, just make the investment to learn Django and use it - you'll thank me later.

Note that your application lives at Again, we want to put the application under our single domain - which is painfully easy. This is where I diverge from the Google party-line. I don't use the Google Site stuff - but by default, your domain will forward to use Google Site. So I instead hijack the "www" subdomain to point to my app-engine app.

First, we need to tell Google about our application. Go back to the Dashboard, and click on "Add More Services". Under "Other services", you will see "Google App Engine" - "Enter App ID:". Do what it says (this is the unique name you gave your app - the * subdomain). It will then forward you to another settings page - but ignore this for now and return to the main Dashboard page. Click on the "Sites" link, then "Web address mapping". Delete the "www" mapping. Then return to your Dashboard.

Select the new "app engine" link - the one you just added. Choose "Add new URL", and enter in the subdomain "www". Viola! Now your application will be the main page. I recommend doing this because Google Sites is pretty limited, both in style and customizability. Your applications index page doesn't have to be anything more than a static template page - which you can 100% customize like any other website. Some people are taking advantage of this, and using App Engine as a pure content delivery network (CDN) to host static pages, images, etc for free. Actually, I host ZiggyPod this way. It' fast, scales, and the price is right :). It's "freemium", so you can pay for more later.


There are many services Google provides, which you can easily hook into via app-engine. Maps, Email, etc. But there's nothing special there. The real cool piece is hooking into Google Checkout. Sign up for an account. There are many ways you can hook into GC, but my favorite way is to set up your account to automatically update the application when a sale is made - such as making more services available. It's nearly immediate.

Head to "Settings", "Integration" in the GC page. Under "API callback URL" enter in the URL that will accept the callback. Note that this URL must be https, and that app engine only supports certificates from Meaning, here is one place where you will have to enter in your appspot URL. For example:

This assumes your app has a path "/googlepaynotify" which handles the callback. Google Checkout will send the URL XML or name=value pairs. I prefer XML - just parse it and handle it. There's plenty of documentation on the API.

This handles the callback, but how do you make the sale begin? The easiest way is to create a "Buy Now Button" - you'll see it if you click "Tools" on the top. It will generate the client-side code where you can put the button on your site. Congratulations! You can now accept sales. You can make it as complex as you want, of course, which requires more integration with the API. But that's beyond the scope here.

So far we have a homepage, full office stack, a blog, application hosting, and the ability to accept payments. What more do we need... oh yeah, customers! Let's integrate with AdWords.


AdWords is older than dirt. It's Google's first and most profitable business unit - and with good reason. I worked for over a year as a keyword marketer, and I have one piece of advise: Don't try and game the system. All of the obvious ideas have been tried, and the cleverer ones are dominated by a few players who do that, and only that, for a living.

However - there is something you should know: Turn off keywords. OK, perhaps not completely, but your focus should be on optimizing Content Network. Two reasons for this 1) since the keyword space is basically dominated, you'll pay out the nose for decent keywords. Sure, grab a few - your company name, for example, but for the most part, take a cue from Paul McCartney. Let it be. 2) You'll have far more impression on the content network than keywords. You only pay per click, so if someone sees your website name and don't click, you just got a free impression. I get 100,000 impressions a day. Sure - most don't click, or see it. But some do - and it didn't cost all that much.

I could go on. Forever. The point being, sign up for adwords - it's a decent driver of traffic and a way to bootstrap your advertising for cheap. Just be wary of the expensive words. I never pay more than 0.50 per click. This is a secret of the pros. If the keywords you've chosen are expensive, they have high traffic, sure, but you can rather visit, type in the good keyword, and take all of the lesser quality words instead. Let's do the math.

1 keyword @ $5.00/click * 1,000 click each = $5,000
500 (related) keywords @ $0.10/click * 2 clicks each = $10

For a savings of $4,990, you still got 1000 clicks. Of course, this takes more management. But there are several of these kinds of tricks available.


Google Analytics is great. Before this gem, most people either rolled their own traffic trackers, or payed huge sums of money for less-awesome analytics tools. I don't have much to say about it other than sign up, put it on your home page (landing page). If you use the same account for AdWords - Analytics will track your traffic which comes from clicking on ads. A handy feature to track conversions.


There are so many advanced tools available, it's hard to list them all here. But here are some

Conversion Tracking: From ad to successful "conversion" (visiting whatever page you consider to be a success), AdWords can self-optimize where/when/who to place your ads.

Conversion Optimizer: After a month of tracking conversions, you can start paying per action - this means rather than paying Google for keywords/content which may not succeed at sales - you can pay them only when a sale happens.

Checkout Badge: Increase AdWord conversions by letting Google notify and target people with Checkout accounts.

Many people use some aspect of Google services: gmail, applications, analytics. No need to complicate the matter - just wire these services together to create a full-stack for your new web-service company. Most anything you need (short of legal or tax advice) can be done for free or cheap.


Ashish said...

A very great post. It definitely helped me solve a lot of my doubts about what to you.

Thanks for the great article

JohnMc said...


A very informative post. Some of your readers might be interested in another GAE appropriate framework -- Web2Py. Have been using it for a little over a year and it works quite well. There are a few tricks to learn to have it run on GAE but they are easy.

Eric Redmond said...


Good call! I should not have implied that Django was the only choice - it's simply my suggestion on GAE for a few reasons:

1) If you ever want to move away from Google, you can port Django to any other server (I'm sure Web2py can do this as well)

2) Django has pretty good mindshare

3) GAE template engine was wholly ripped off of Django - so it's a light barrier to entry from one to the other.

Thanks for the recommendation! I'll have to check it out.

Dushan Hanuska said...

Thanks Eric! Your post is very informative and helpful. I started my website following similar steps to yours. And I learned from my own mistakes. It's a lot easier to go with Google from the start. This saves you from the pains later when you decide to switch to Google and you need to transfer a lot of stuff across.

Mr SoccerFit said...

Very useful piece - thank you

Richard Conroy said...

Google App Engine for Java also gates in all JVM languages. Workarounds, instructions and templates exist to get your Rails and Sinatra apps running on GAE via JRuby.

It should be the same for your Lift/Scala and Grails apps too, but I am not aware of any.

Itay Maman said...

Great post. My only correction: Should be Paul McCartney instead of John Lennon ... ;-)

james said...

hi! i like the designs. check out the source of the template.
Thank you! i love it.
More templates easy to download

james said...

hi! i like the designs. check out the source of the template.
Thank you! i love it.
More templates easy to download

Alex S said...

Nice post. You have given very valuable information to build the business. Application hosting is required for all online business and also we can use for non online businesses like legal, medical etc.