When my Grandfather retired he used to spend
some of his time panning for gold in the mountain
streams of Utah. Being a retired machinist he
eventually decided to "automate" his operation
and built a sluice box. Now a sluice box is basically
a long box with the two ends removed. Across the
bottom of the box large number of small wooden
"speed bumps" are nailed. One end of the box is
elevated and placed under a source of running
water, usually a small waterfall or stream. Sand
from the streambed is put at the top of the box
and is washed down over the wooden speed bumps
nailed to the bottom of the box. The heavier gold
gets caught in the speed bumps and is then recovered.
Not all sand in Utah contains recoverable gold.
Sometimes my Grandfather could work for an entire
day and get nothing but a back ache for his trouble.
But other days, if he found a rich deposit, he
could recover about quarter ounce of gold with
a few hours work.
Selling shareware is a lot like mining gold.
We have a program that acts like our sluice box;
we throw a lot of potential customers, our sand,
at our program; and eventually the gold settles
out. Now most of us spend the first few years
as a shareware author trying to build the perfect
sluice box. We tweak our program in every way
we can to try to get every possible sale out of
our downloads. But eventually we realize that
to get more gold (sales), we are going to need
more sand (downloads).
Now there are a lot of different web sites that
generate downloads for our programs. There are
download sites, crack sites, search engines, and
newsletters that are all driving downloads of
our programs. While all of these sites may generate
a significant number of downloads, our job is
to find which sites generate a large number of
To do this we need a way to figure out which
of our downloads result in sales. We have good
stats from our file hosting provider which tell
us where are downloads are coming from and we
have good records from our e-commerce provider
about who bought our program but we don't have
any way of tying those two together. From a shareware
developers perspective the customer drops into
a black hole once they download the program and
then a few magically pop out the other side when
To tie the download back to the source of the
sale we don't need to transfer a large amount
of data. We could easily track over 600 different
sources of sales with just a two letter tracking
code (26^2). And a three letter tracking code
would allow us to track over 17 thousand different
sources (26^3)! We just need a place to tuck our
tracking code after the user downloads so we can
read it back when they return to buy.
There are a couple of different places we could
tuck a 2-3 letter tracking code. Each one has
its set of problems but the simplest solution
was recommended to my by one of our developers.
The tracking code is stored in the filename itself!
We call this system, dynamic naming.
With dynamic naming the web server is slightly
modified so that the filename can change without
breaking the download link. For example this download
FileKicker has a feature that makes this possible
with out having to upload a new file to the web
server or changing any settings.
When the customer clicks on the download link
in our example, the file is saved to the user's
machine as notepagerpro-cd.exe. If notepagerpro
were to implement this tracking system it would
grab the tracking code from the file name during
the install and store it in the registry. When
the user clicked the "register" button from inside
the program, the tracking code would be passed
to the e-commerce provider and is included in
the sales stats.
Now I am a just a web guy and really don't know
the details of how this is done in code. Developers
who have put this in place tell me that it is
fairly simple because most installers "know" the
name of the file from which they were launched.
How it is done most likely varies with installers
and programming languages but those who have put
this in place tell me that it only takes a few
hours to implement.
Each download site or marketing campaign is given
their own download links with embedded tracking
codes. Since the tracking code is in the filename
the tracking even works when the file is hosted
on the download site or is delivered on a magazine
Of course not all users download directly from
the websites that link to us. Some of our marketing
campaigns like Google Adwords may not even include
download links to our products. And to have a
fully functional tracking system we need to track
As a web guy this part has always seemed pretty
trivial to me. Hosting our own servers it has
always been easy to script this stuff into the
back end. But I have found out that the web stuff
is as mysterious to most shareware developers
as desktop programming is to me. And many shareware
developers don't have web hosting accounts that
even allow server side scripting.
Luckily all the functionality needed can be done
somebody else has done the work! We have put together
a snap. To modify your web page all that is needed
is to upload the tracking.js to the root directory
functions in your web pages with these lines:
parameter called "id" and set a cookie to make
it sticky. The links on your download page will
will add tracking codes to your files names. Since
these scripts were created for FileKicker customers
and the arguments to the function are the FileKicker
fileID, filename, and the files extension. For
On your e-commerce pages the e-commerce links
the tracking codes to your order pages. Passed
in to the function is your current link to your
e-commerce provider's order page and the name
of the parameter that the e-commerce provider
uses to pass tracking information. Most e-commerce
providers have this sort of functionality although
the query string parameter varies. For example
this would be the correct call for Emetrix and
And of course we should add <NOSCRIPT></NOSCRIPT>
tags with our download and e-commerce links in
disabled for some reason.
Once all the pieces are in place it is trivial
to create a new tracking code for a download site
or market campaign. A new 2 letter code is chosen
and written down somewhere so it won't be forgotten
and the links to the download and webpage are
modified to include the new tracking code. For
example if I were uploading to download.com I
may chose "dc" as my tracking code and provide
download these links to my site when I upload
Once those links are posted, I am tracking downloads
to sales across their site. Pretty simple and
easy to maintain! One caveat is that two tracking
codes are already reserved. The first is "gs"
which stands for "Google Search" and the other
is "yh" which stands for Yahoo. Since it isn't
possible to get search engines to modify their
looks for clicks from these sites and automatically
sets a tracking ID.
I have put a demonstration page here that shows
the scripts in action using the download and order
links of NotePager Pro as an example.
Even though the system is relatively simple,
developer who put it in place can normally track
the 60-80% of their sales back to the source with
in 3 to 6 months. It is an interesting exercise
in itself to try to figure out where most of the
sales are coming from and putting tracking codes
in place. The results are usually surprising.
Once a good source of sales has been identified
the problem then becomes how to increase sales
from those sites. Usually there are paid advertising
opportunities or you can work for better placement
on the site. And if you find you can spend $1
to increase sales by $2 the challenge then becomes
finding a place to spend a million dollars.