CrazyEgg vs. Google Analytics

(All images in this post are cut off by WordPress.  Click to see the full versions.  I suggest opening them in a new window.)

I have been using CrazyEgg for the past week or so, trying to make some usability changes to increase the conversion of my website.  I was skeptical that it was going to provide better information than Google Analytics, because Google Analytics also has a site overlay feature, and because I had been using Analytics for months and presumably was getting all or nearly all I could out of it.  The test has showed me several places where my website was broken where I thought it was working perfectly, and as a result I’m going to dig out my credit card and sign up for CrazyEgg as soon as I get done writing this post.

Here’s a comparison of two views of my website over the same interval.  The first is Google Analytics, the second is CrazyEgg.  Focus your attention, like I do, on how well this page drives people to the free trial.

Front Page As Seen By Analytics

Here is what I see when I look at this image: the website appears to be functioning well.  The most popular link on the page is the blue Download Free Trial button, which is exactly what I want.  Screenshots also appear to be pretty popular.  One concern is that folks seem to be banging on the Information tab a lot, which will take them directly to this page, so its clear they don’t quite understand the highlighted tab metaphor (not suprising given my audience).  The three links in the first paragraph of text are performing moderately well and primarily directing people to the trial, which is exactly what I want (screenshots and free information are nice to the extent people download as a result of them).

It turns out that these conclusions are faulty.  Lets see this page again, in a CrazyEgg heatmap.

Purchasing Page in CrazyEgg

What do we learn here?  Well, first, no one is banging on Information — thats just a quirk of the Urchin (Analytics) script on some browsers when people double-click to open a link instead of single click.  The download a free trial link in the first paragraph went totally ignored (not one click out of two thousand visitors!) while the screenshots and free bingo cards got much more significant attention than you would have thought from looking at Analytics.  The bright blue Download a Free Trial button performs admirably.  The screenshot in the middle performs extraordinarily well — almost 33% of visitors to the page will at least click it to see what it looks like!  This was catastrophically bad news for me when I heard it, since I know that clicking a screenshot is the quickest way to bounce a prospect, since so many of my visitors have limited web-navigation-fu.

So, here’s what using CrazyEgg to enhance my borked understanding of the Analytics numbers let me do:

a)  I installed Lightbox, and watched my bounce rate drop considerably.  Not only does it look stylish, the “click anywhere to go back to what you were doing” mechanism works very well for technically unsophisticated customers.  (More evidence of this: take a look at how many people are banging on the New button in my screenshot.  Yeah.  Believe it or not, I’ve gotten emails about that before — “The New button doesn’t work.”.)

b)  I am going to redo the first paragraph of text to deemphasize “download” and emphasize that you can “create free bingo cards” using the trial download.  I may end up burying the free bingo card link in the free resources section, since its far too effective at siphoning people off where it is right now.

c)  You can’t see it from these two photos, but I also did tests of my purchasing page and download page.  Whoa doctor, are there some easy and obvious things to change.

Incidentally, if you’re wondering “Why does Crazyegg report different data than Analytics?”, the answer is that CrazyEgg tracks clicks on a per-coordinate basis and Analytics tracks them on a per-URL basis.  To override that, you have to go to considerable work when coding your webpage.  This means that Analytics treats that blue button and the first paragraph “download the free trial” link as the same place, so it munges their stats together when displaying them, which makes it not-obvious that the Big Blue Button is an awesome success and that the first paragraph text link is a crushing failure.  I had previously gone to a heck of a lot of work when I redid my purchasing page to make sure that every link was hooked up correctly, and I ended up having so much information flowing at me in the statistical summary I could not make heads or tails out of it.  The heatmap, on the other hand, tells the story in a really efficient manner: “Customers want to ‘Pay with their credit card’ and need to be guided on to what to click on to make that happen”.

CrazyEgg Heatmap of Purchasing Page

Given that CrazyEgg is dirt cheap ($9 a month), I’d be … crazy… if I didn’t sign up for it.  All I would need to do is decrease my bounce rates anywhere in the funnel by about 1-5% and it would pay for itself.  I think I’ve already accomplished that several times over.  I’m obviously not going to stop using Analytics, because I do need the big heaping helping of stats (especially referrers and search queries) and the view on how people move through the pages as opposed to what they do at each individual page, but CrazyEgg provides an easily understandable visualization of the things I need to focus on — what my customers are focusing on, naturally.

(Edit: it took some work to make the pictures fit.)

Comments Off

Simple Enhancement To Lightbox

I posted recently about how to use Lightbox to make your web site prettier and more useable, and someone pointed out to me that it would be even better if Lightbox would let you dismiss the image by hitting the escape key.  Doing that required working around some compatibility quirks in Firefox versus IE, so to save anyone else the trouble of doing it you can just grab it from my site.

 For those interested in idiosyncracies of Javascript compatibility, here is what posed the issues:

a)  IE will let you test a keyCode against an integer, including a non-printing ASCII code such as 27 (the escape key).  Firefox requires you to test against a constant, something like event.DOM_VK_ESCAPE .

b)  IE captures non-printing keyboard keys (other than F1-F12, apparently) in the keypressed event, but Firefox only captures them in the keydown event.

Comments Off

Trust Your Customers

I found on BoS a blog post on product activation which should be read and understood by every uISV. I’ll summarize the narrative.

  1. Deliriously happy user buys software product (an RSS reader).
  2. Deliriously happy user recommends product to many of their friends
  3. Deliriously happy user moves around a bit.
  4. Deliriously happy user gets bounced by product activation code which thinks they have shared their license key.
  5. Deliriously happy user writes an email to the author asking what happened.
  6. Author writes deliriously happy user with an email which was less than totally trusting of them
  7. Deliriously happy user gets quite miffed.
  8. Miffed user writes a blog post about how miffed they are.
  9. Blog post gets picked up by Digg.
  10. Author blows last chance to do right by miffed user.
  11. I don’t know what happens next but its sure not “… Profit!”

Good golly Miss Molly this could have been avoided easily. Let us count the ways:

The author could have used product activation against a secret, not against a publicly available piece of information (email address), which is the root of the insecurity in the first place. Registration keys, although they are a nuisance, have worked for decades now. You can alleviate the nuisance with simple usability tricks with them.

The author could have accepted that some keys get abused as a cost of doing business.

The author, after having made the decision that the still deliriously happy user deserved another activation, could have had more grace than to say*:

While you may now activate your software again, the evidence suggests that you’ve activated your single-user license from a suspiciously wide variety of locations. An explanation would be appreciated. I don’t want to have to presume this is breach of license. (Emphases mine.)

After getting monumental bits of egg on his face, rather than offering a refund, the author could have offered a refund, a free license, and an apology. And then blogged the apology, since that would have virtually guaranteed a sympathetic follow-up post (or at least a follow-up link!) rather than the “I’m still steamed about this, let me recount stories around the Internet about how other people think (actual quote) ‘ I won’t be a customer of anything [the author is] involved in until he can prove that he’s become a decent human being.'” post that actually got written.

* How would I have written that email?

Thanks for your continued interest in [Product]. I have arranged it so that you can activate your software again. If you have any other issues, feel free to ask.

That is all you really need to say. But if you absolutely must continue, let trust be your watchword. Insinuating that if there is anyone to blame it is probably you costs you absolutely nothing (wounded pride? I find money salves ego pretty well. Its like a cold compress made of cash, and without good customer service you have less cash to compress!) but defuses a potentially volatile situation a lot more than words like suspiciously and breach of license.

I noticed that you seem to have activated your copy many times. Is there anything I should be aware of, for example an issue that requires you to reinstall the software to fix it?

Comments Off

Nailed A Job Interview

Nothing to do with uISVs, but I just nailed an interview in my continuing search to find a new day job.  It certainly helps when your current boss is best buddies with the prospective new boss and the person with direct hiring authority is an ex-coworker*.  I’d like to think that my resume and good attitude during the interview helped the matter, too.

* This isn’t that uncommon in Japan.  It isn’t that uncommon in America, either, although most people downplay its importance.  The freakishly high chances that two people in a related field will again do business with each other are as good a reason as anything to be faultlessly polite and fair in all of your business dealings.

Comments Off

Taxes Don't Have To Be Pain

This post isn’t aimed at anyone who already pays taxes on their uISV.  If you do, you already know that its not terribly difficult in the base case.  Its more aimed at allaying the fears of folks who are thinking of starting a uISV, but worried that the IRS will steal their lunch money after making them fill out 10,000 pages of forms.   

I haven’t actually filed these yet (overseas Americans get an automatic extension) but as they’ve resulted in tax liability I paid them (through the new and soon-to-be-indispensable EFTPS service).  My return was four forms this year:

  • Schedule C-EZ (Profits & Loss from a Small Business)
  • Schedule SE (Self-Employment Tax)
  • Form 1040 (Individual Tax Return)
  • Form 2555 (Overseas Earned Income Exemption)

I won’t show you my 1040 (private, sorry) or my 2555 (you’d find it boring), but I’m happy to show you how easy it is to dispose of all accounting and tax issues for a (very) small business. 

Many folks think you have to be superman to navigate the IRS’ maze, when they are actually decently taxpayer-focused and charged by regulations to make things easy for someone with a six grade reading level.

My tax process for Bingo Card Creator was quick and easy: First, run the e-junkie and eSellerate reports for sales in 2006.  Sum totals, copy into important boxes.  Then, look at all outgoing payments on Paypal and my credit card, figure out which ones to strike because they were not business expenses, sum totals, copy into important boxes. 

Then you have to do a wee bit of math — a subtraction on Schedule C-EZ.  Oh no!  You then go over to Schedule SE, copy in the information from Schedule C-EZ, do some multiplication as instructed by the form, and you get a self-employment tax number.  Copy to the place it tells you to on your 1040.  You’ll also get a credit against your income taxes for paying self-employment tax — copy to the place it tells you to on your 1040.  There, your uISV taxes are done, now you just finish your 1040 and associated forms and file them off to the IRS.

On my Schedule C-EZ:

 Line 1 (Gross Receipts): $2480.05

 Line 2 (Total Expenses): $1224.68

 Line 3 (Net Profit, copy to 1040 and Schedule SE): $1255.37

On my Schedule SE (Short Form, almost all uISVs should qualify):

 Line 1 (Farm Profits): $0

Line 2 (Copy Profits from Schedule C or Schedule C-EZ): $1255.37

Line 3 (Add Line 1 and Line 2): $1255.37

Line 4 (Multiply Line 3 by 92.35%): $1159.33

Line 5 (Self-Employment Tax: Simple math by instructions.  Most people just have to multiply Line 4 by 15.3%): $177.38

Line 6 (Self-Employment Tax Credit: Multiply Line 5 by .5, copy to 1040): $88.68

And there you have it.  On the outside, counting the two blog posts, data collection, downloading forms, and reading up on the Foreign Earned Income Exclusion that I have to do every year, my 2006 taxes took me three hours to prepare.  Reports of the impossibility of taxes have been greatly exaggerated.

Now, granted, if I had alternative minimum tax (AMT), a home office, or some other brain-intensive situation this would have been ugly.  However, I don’t.  When I do, I’ll pay an accountant to have the headache on my behalf.

Sidenote for folks who start a uISV: if you’re profitable, your SECOND year of business will probably get you to the point where you have to pay estimated tax.  Its also easy (requires you to be able to subtract and divide by four), but I’ll cover it another day.

Comments Off

Lightbox — Quick, Pretty Screenshot Previews

Every uISV has a screenshot page and, if you’re sane, a shot of your program above the fold on your front page.  These are generally teeny-tiny thumbnails which exist more to demonstrate the fact that there is a real purchasable product than anything else.  Of course, customers actually want to be able to read the text on your GUI, so you link that thumbnail to an image file… and bad stuff happens.

For the non-technical B2C market, “bad stuff” generally means “Prospective customer cannot find their way out of the image”.  Yes, I know, I know, they have a back button.  They may not KNOW they have a back button, though.  My screenshots, for the longest time, had 80%+ bounce rates until I figured this out.  So I’ve been using the _blank thing to pop the screenshot up in a new window, which is a decent compromise but it distracts unduly from the sales pitch.  They have to close that window to get back to reading, and I’d rather they have a visual reminder of what exactly they were doing so they don’t get distracted, switch to their email, and go away.

Luckily, there is this nice little Javascript widget called Lightbox (introduced to me by the indispensable Nick Hebb, king of flowchart software).  Add two lines of code to your web page, tag screen shots with rel=”lightbox”, and you get a shiny Javascript preview effect which is quite similar to e-junkie’s Fat Free Cart.  It grays out the rest of the page but keeps it visible, and directs your attention directly on the screenshot — a single click anywhere dismisses it, taking you back to the page.  (There is a Lightbox2 which has more sophisticated behavior which is, for my customers, a usability nightmare.  I passed.)  You can take a quick gander at the home page for Bingo Card Creator — try playing with the main screen shot to see Lightbox and the purchasing page to use the Fat Free Cart.

Comments Off

I'm Glad *I* Don't Compete With Google…

… but the CrazyEgg guys do, and I wish them the best of luck.  They have a very, very Web 2.0-y analytics and split testing program.  Well, its not a full-featured analytics program — it basically tells you whats being clicked on, and thats it, with an extraordinarily cool (er, is that hot?) heatmap visualization of it.  It is amazingly easy to get started on their free trial, so amazing that they could teach Google a thing or three about it.  Put in email address, put in password, fill out two line form about page to test, copy one line of provided HTML into page, upload.  30 seconds or less to the shiny.  If I get nothing else out of my free trial, I’ll have gotten a good usability example for Kalzumeus.

Here’s my concern: while they are much easier to use than Analytics (they will, for example, track clicks on my links offsite or to setup files without any special work on my part), I have already climbed Mt. Analytics Learning Curve and can now bask in the awesome view — such as dicing visitors down by where they came from, watching search terms trends, and tracking click paths around my site.  For free.  Their free trial (5,000 visits tracked a month) will work for a few more weeks for me, but then I’ll go over the traffic limit and it comes down to the “Do I really want to pay more than my web hosting budget for an analytics program?” question.  Which would be “Oh, heck yes!”… if I didn’t already have Analytics. 

Then they have this split-testing option, where you can have them run, say, the stats on 2,000 consecutive visitors.  Then you twiddle the page a bit and rerun the test, getting 2,000 new consecutive visitors, and compare.  That is both great and, again, inferior to the free Google Website Optimizer*.  Now, if they could just bring their considerable usability chops to solving the biggest problem with Website Optimizer, which is that it is a freaking pain in the keister to use, I’d give them $9 a month and a gold star.  I have been meaning to start using Website Optimizer for months but every time I do I get to the start of the process, figure its going to take me two hours to get anywhere, and then get distracted by other demands on my time.

 * Note that the key problem here is that Website Optimizer does actual splitting — for example, if I get 4,000 visitors they get parceled out to the two alternative pages randomly instead of first 2,000 to one and next 2,000 to the other.  That is fairly key for me, since my business has very definite cycles in it, and I’m doing all sorts of things in the background.  If, for example, 2,000 visits happen Monday through Friday, and then the next 2,000 visits happen Saturday through Wednesday, then I naturally expect the “Download a Free Trial” link to get less activity anyhow in the second half because my best customers (teachers) aren’t typically on the Internet on Saturday or Sunday.  That throws off the results of the test.

Comments Off

Kalzumeus Has Logins!

I felt absolutely miserable this morning (word to the wise: sukiyaki curry is NOT for the faint of stomach) and took half the day off.  After I got home I was feeling rather useless, so I decided to bang out some Ruby code.  And bang I did — apparently I covered something like 600 lines in 3 hours.  Granted, much of that gets autogenerated for free.

Today’s big accomplishment was getting user verification, account creation, logins, and all that jazz down to a science.  I now have the framework to create an account, validate it via one of those lovely “Click here to validate your account” emails, login, restrict page access to those logged in, yadda yadda.  One would think that since essentially every webapp needs this functionality there would be an easy, non-repetitive way to do it in Ruby but since the precise specifics differ for every application I think its probably easiest to roll your own rather than doing a search of all the plugins that do it and figuring out which one meets your needs, then adapting it so that it actually meets your needs.  This breaks my “Do not write code someone else will write for you” rule, unfortunately.

I am decently sure that the login scheme is secure, at the moment.  You can’t do any funny stuff like, e.g., intercepting a validation email to get a free login into the app.  Web application developers who allow that or its close cousin an email with your user name and password written in it need to have “SMTP is not secure” carved onto their eyeballs so that they will not forget.  As for cross-site scripting and SQL injection attacks, well, put it this way: I’m afraid, very afraid, and will be creating a test script whose only purpose is to try both on every form and see what pops out.  My code probably needs a liberal sprinkling of h at the moment (its a Rails convenience method which html_escapes its parameters, saving you from XSS).

One thing I have found which I really like about Rails is the scaffolding.  As my program gradually gets more complicated the free scaffolding is getting replaced in functionality by the workflows my users will actually be using, but the free scaffolding with very minor modifications makes for a great development-time admin interface.  Some folks apparently like having a Ruby console open and typing things like User.find(:first, :conditions => [‘last_name = ?’, ‘Steve’]) to see if Steve got added like he should have been.  I rather prefer going to http://localhost:3030/users and visually scanning the resulting webpage to see if Steve is there.  Of course, it would be even easier if I could figure out how to test and assert the existence of Steve, and then actually do that when developing, but one baby step at a time.

I am having some difficulty getting my head around the whole test-driven-development thing.  Testing for me has always been “Run, see what breaks, fix, repeat”.  This is one of the bad habits I hope to fix by doing this project (no reason you can’t SkillUp* for your day job while working for your uISV). 

 * Did that look funny?  Its probably because its Japanese.  I’m fairly sure it entered the language from console RPGs: when you get a level, your skills (e.g. Swords, or whatever) sometimes get points added to them.  That is written as SkillUp in Japanese, basically just by transliterating “skill up”, and anybody under the age of fifty or so both understands what it means and, whats more impressive, uses it in daily conversation.  For example, my coworker a few weeks ago said “Patrick, help me out here.  I need to SkillUp in Powerpoint so I can get a job as a Project Manager at $COMPANY”. 

Comments Off

Getting Somewhere On Kalzumeus

I finally got some time today to sit down and have a coding session.  The program can’t be more than, oh, 5% of the way ready yet, but I’m feeling that I’m starting to get my head around most of the core Rails concepts.  Much more code is actually sticking to the screen and its been a matter of hours since I did a rm -rf * on the project directory.

In terms of complexity, my preliminary estimate is that Kalzumeus will require about 15 classes.  This is actually roughly how many there are in Bingo Card Creator.  I have noticed so far that I’m spending much, much less time on nuts&bolts programming than I typically do in Java, and much, much more time on chasing down misnamed variables, typos, and the like.  Partially thats because Eclipse does autocompletion for me in Java so I remember that I called that string nickname instead of nick.  Luckily, the development cycle on Rails is fast enough that I only lose about 15 seconds when that happens — annoying as heck to see the “Ugh, you fail!” error screen, though.

By the way, after spending many hours fighting with a series of IDEs, I eventually went with Netbeans.  My first real work in Java was done in Netbeans, before I switched over to Eclipse a few years ago.  It is a much, much more capable IDE for Rails, so I’m happy to be back.  I’ve supplemented it with a few Direct Access macros to save myself some of Rail’s verbosity, and I hope to publish those later (e.g. typing in ctcs gets t.column “”, :string with the cursor positioned right between the quotation marks, ready for you to input a column name).  I do generally like the idea of prioritizing maintenance programmer brainsweat (which Java and Ruby optimize for — java.util.JokeFactory.createNewJoke(camelCasedVerboseIdentifierNamesHelpComprehension) ) over creation programmer finger time (which Perl optimizes for:  $_.=$&). 

Kalzumeus is similar to Bingo Card Creator in terms of code complexity, i.e. “not very”.  There will probably be exactly one class which will require anything close to cleverness while coding.  I don’t even think I’ll have to worry about thread safety issues, which is both a relief and a letdown at the same time.  I actually have a perverse affection for concurrency issues.  They’re one of the only places where I’m a halfway decent programmer.

I also have found a way to save myself a few hundred dollars for launch: cut out the UI designer!  oswd.org came through again with a beautiful, configurable design called Multiflex3 which has an associated WordPress theme.  I anticipate that after I actually have the application written I can make it look quite presentable in Multiflex in about a day or two, and then add a visually coherent Wordpress blog with another day.  If Kalzumeus takes off then I can always hire myself a designer later to make it look prettier and more unique.

I had a flight of fancy the other day: I will have sufficient savings in August, when my current contract ends, to pay for 6 months of living expenses while subsidized by Bingo Card Creator’s current monthly sales.  If I return to the US at that point, I will get a distribution from the Japanese pension fund, which would extend that to about a year’s worth of expenses.  That would allow me to work full time on the uISV… the downside is that if I failed I would be poor, unemployed, and on the wrong side of the ocean for finding convenient work opportunities.  It was a quite attractive flight of fancy for a few minutes, and it will make a good Plan C or so.  I’m still looking for a more conventional job, though.  For the moment.

Comments Off

March Stats and a note of thanks

Same disclaimers as always.

Capsule summary: Best month ever.  Would have done better had I not disabled CD orders inadvertently for most of it.  I’m giving myself about a 50-50 chance of hitting my $1,000 target for April.

Sales: 30, including 2 CDs (instead of 15 — d’oh), 1 purchase in Euros, 1 in pounds, and 0 refunds.

Gross sales:  ~$760

Expenses:

Paypal: $10.50

SwiftCD: $10.76 

e-junkie: $5

AdWords: $54.02  

GoDaddy: $7

Total: ~$87

Net Profit: $673

Commentary:

AdWords has been working really well as of late ($.34 per demo download sustained over the entire month.  Close to my best ever.)  With $90 budgeted I could pay for more traffic but I haven’t found the keywords yet to bring it in without costing an arm and a leg — there is not too much play in $24.95 to go crazy with keywords costing, e.g., 15 to 25 cents apiece. 

SEO continues beatifully, and I’m slowly but surely climbing the ladder on some key terms.  A big thanks to everyone who linked by Free Bingo Cards post, without me even asking.  Its great when the community helps each other out like that.  I have been using the features in the Google webmaster console and have been noticing more links this month from school districts, including several direct to AdWords landing pages.  Thats just beautiful — they put my software in front of hundreds of prospective customers AND they give me an authority link.  Content, its the gift that keeps on giving.

Speaking of gifts which keep on giving, this blog will hit its hundred thousandth page view before I get up tomorrow.  I nearly went googley-eyed when I saw the counter.  The majority of my readers continue to be uISVs or folks thinking about taking the plunge, but I’m getting increasing mentions from folks as diverse as librarians and customer advocates, and the blog is fighting hard with MSN and Yahoo to be my third largest source of downloads (after Google and download sites).  I’d like to take a moment to say “thank you” to everybody who reads, RSSes, links to, comments on, etc, this blog.  I’m overjoyed and humbled by your support, and couldn’t do it without you. 

Happy Palm Sunday.   A funny story from Mass this morning: first, to hit the highlights of Palm Sunday for those who aren’t Catholic, Jesus comes back after fourty days in the wilderness (Lent) to Jerusalem, where he is welcomed as a king.  He rides in on a donkey, and people throw their clothes and palm fronds in the front of his donkey to honor him.  As we are heading out of church, one of the little kids says to his Mom “Its not fair, you know”.  “Oh whats that, honey?”  “Palm Sunday.”  “Why do you say that?”  “All the palms did was get stepped on.  It should really be Jesus Sunday.  Except every Sunday is Jesus Sunday.  So we should make it Donkey Sunday.  Poor donkey, he does all the work.”    I love kids.

Comments Off