Monday, February 2, 2015

AutoHotkey'ing Stamps.com

I love the Stamps.com app. While their XML import format was a little obscure, once I got it working, I was able to use it to print thousands of labels, save myself a nice chunk of change on shipping, and mail all my backers tracking links.

But now that the main pulse of Kickstarter shipping is over, I'm using it to send out individual packages on a daily basis, and getting the address information for a customer into the app meant cutting and pasting from a web-based shopping cart system (I am using the Ubercart Drupal module).

It's not a big deal, but it does get repetitive, and being an extremely lazy person, I will go to extreme lengths to avoid such activity. So over the last month I've created and tuned some automation to interface the web form with the Stamps.com app.

The solution involved using an interesting (and free) scripting application for Windows called AutoHotKey. This lets me write little programs that can be invoked by keypresses and which can interact with the UIs of other programs.

Using AHK, my workflow now looks like this:

  • Click on an invoice in my webapp (I'm using Chrome but any browser will work). Ctrl-A then Ctrl-C to copy all the text in the page.
  • Bring up either the domestic or international manual batch label entry dialog in the Stamps.com app.
  • Ctrl-Alt-V to invoke an AHK script that parses the text in the copy buffer, extracts the name, address, phone number and email address, does format corrections for some international addresses, and then pastes it all into the correct fields in the Stamps.com dialog.
  • Hit another AHK hotkey to define what I'm mailing (for example, Ctrl-Alt-P means "I'm mailing a Bubblegum Crisis Premium set"), and set the weight, mail class, and if international, default customs information.
  • Save the label.
  • When I've done all the labels, print them as a batch.

Before AHK, I was spending about 2 minutes per label. Now it's maybe 20-30 seconds. Given how long it took me to write the script, I'll break even in about 500 labels.

You can find my script here; after you've installed AHK, just drop it in your Documents folder and AHK will find it. You'll obviously have to tweak the parser and the definition hotkeys to fit your preferences, but that should be relatively straightforward.

Enjoy!

Assembly Lines vs. Piecework

When thinking about how to ship a medium-sized KickStarter project (say, 500-10k backers), most people turn to a fulfillment service.

While in specific cases there are good reasons to do so (such as helping international backers avoid duty and processing fees), when it comes to domestic backers (as well as backers in certain countries with enlightened customs regimes) you can often save a ton of money -- and even effort -- by doing it yourself.

The thing to keep in mind about most fulfillment companies -- think Amazon for example -- is that they are optimized to handle piecework. 99% of their business is "put A, B and C in a box and ship it out; then put D, E and F in a different-sized box and ship it out". This is a complicated and labor-intensive job and you pay for it -- plus you have to interface to their systems.

But most Kickstarter shipping isn't piecework -- it's an assembly line: "put A in a box, ship it out; put A in a box, ship it out; put A in a box, ship it out". And as Henry Ford so famously proved, you can save a ton of money by setting up a production line.

When I shipped my Bubblegum Crisis kickstarter, I mailed out 3000 packages in 6 days with the help of 2 people. Even though I had 3 main product variants and all sorts of sub-variants (like "double copies"), by breaking it down into batches that were all identical, the job became very simple and the number of backers who got the wrong thing could be counted on one hand.

What's more, I did it in my living room. By doing it myself instead of using fulfillment, I probably saved $2-$3 per package -- that's $5K-$10K overall. I also had complete control over how everything was packed, so my damaged-in-shipping rate was very low.

Automation was the key to all of this: I wrote an app to manage all of my backers and generate cost-efficient shipping batches, and I interfaced it all with Stamps.com so I could get commercial mailing rates and nice labels with barcodes.

A lot of work? Sure.

Worth it? Definitely.

Want to play with the app? Go here.

You can use it for free -- and then send me what you think it's worth.

PS: if you do decide that fulfillment is the best route for you (either completely, or for particular circumstances), then the Stonemaier games blog articles about the process are must reads (as are the rest of the articles!)