Hacking a Kickstarter Referral / Affiliate Program with Google Analytics + ShortSwitch + Zapier + Formstack + Leftronic
What it enables:
- Kickstarter Backers or Potential Customers can create own Custom Sharing Link (CSL), such as: roo.st/JohnnyFive (This part is automated)
- The new CSL link gets emailed to the User for their records (This part is automated)
- That CSL is shared on social media, email, friends, etc. by the CSL owner
- When someone backs campaign after clicking through a CSL, the owner of the CSL gets credit, and can be rewarded with a bonus item from your campaign (this part is not automated)
How it works:
- Kickstarter (KS) + Google Analytics (GA) = Tracks Conversions (this is GA talk for a "sale" or new KS backer)
- Shortswitch = Is a service like Bit.ly, it creates custom shortened links on any domain.
- For example, I own http://roo.st. You could replace roo.st that with any domain you own, such as mykickstarter.com.
- You could also replace Shortswitch with Bit.ly, I haven't done this, but it may be easier
- Formstack = Online form that allows users to create their own Custom Short Link (CSL)
- Zapier = Zapier pushes and pulls data between all the above services
- Leftronic = Creates a live Leaderboard from your Google Analytics data
Here it is in action from the users perspective:
- Introduction email/post/update describing the program: Introducing Roost Super Backers
- Signup form on Formstack:
- User gets Sign Up complete confirmation page with pre-populated "Share" links for Facebook and Twitter (these are important to include)
- User also gets email at same time with the same info, this sent by Zapier + Mandrill:
- User checks out the leaderboard to see their sharing stats, leaderboard provided by Leftronic:
- "Super Backers" get notified manually after campaign ends to confirm the special rewards, etc.
How much it costs:
Since we are using a bunch of 3rd Party services, some have monthly fees. I was not aware of a single referral service that could accomplish all of this, so I did this "hacked" version of one. If this was not for kickstarter, and just for your online store, there are many other referral programs, Refersion is a great one, and they will cost usually $100+ a month, plus take a commission. But here's the cost:
Google Analytics = Free; Shortswitch = $15 / month; Formstack = $40 / month; Zapier = $15-50 / month; Leftronic = $50 / month
Total = $120 - $155/ month. And lots of these services have a free trial period, so you could bring that down.
How to set it up
This is probably not for the faint of heart, but note that I am not a programmer, and was able to get all of this working with no custom development. You need to be detail oriented and make sure everything is working every step of the way. It's pretty amazing what you can get done with 3rd party services and apps, and if you didn't know about Zapier yet, it's best time you check it out, it's a game changer.
Step 0 - Learn how powerful Zapier is and start playing with it:
Great overview of APIs: https://zapier.com/learn/apis/
Zapier "Webhooks" will be gold for you
Step 1 - Set up Google Analytics for Kickstarter
Kickstarter added Google Analytics for tracking two months ago.
These guys at Spellforge Games did a great writeup on how to get it all set up and wired together.
Step 2 - Set up custom domain with ShortSwitch
Note 1: I don't think you can add shortswitch to a domain that is already hosting your main website (e.g. if your website is already running wordpress, shopify, bigcommerce, etc, don't use that domain for shortener service), I think it will screw it up. It's safest to use a brand new domain that will only be used for link shortening. ShortSwitch has a detailed FAQ on how to get it all setup: ShortSwitch FAQ
Note 2: There are many "link shortener" services available. You could use Bit.ly or many others. You will need to look up how their API works, but most likely you will be able to use the "WebHook: Get" function of Zapier to successfully make it work. More on this later.
Step 3 - Set up FormStack
I first tried using Google Forms (it's free...) instead of Formstack, but I was not able to trigger a Zapier "zap" instantly via a webhook with Google spreadsheets. Turns out this is important. (Side note, Zapier has a really cool "monitor google spreadsheet for updated rows" function, but it only updates every 5 - 15 minutes, and then takes a minute or two to execute, so it is really slow). Instead, I found Formstack is already set up to work with webhooks and can push "New Form Submitted" data to a webhook (that zapier listens to) instantly. This was the secret sauce.
In general, Formstack is a "dumb" collector of the user's input for the Custom Short Link (CSL). This is definitely less than ideal. Ideally you'd want your shortswitch link generator to validate the user's input. But this is a hack, and we use Formstack's "Unique" feature to allow only unique submissions to the link shortner service, it's worked great so far.
Also, I don't know of any way to link external data to kickstarter other than matching on backers' email addresses. That is why I make a big point of "Kickstarter" email on the form. I'll have to match up email address after the campaign, should be pretty quick.
Setting up Formstack's form is pretty straight forward, you do want to make sure you select "Unique" requirement for both the CSL field and the email field.
The really cool thing with Formstack is you can do a bunch of automated actions when the form is submitted. You manage these in the "settings" portion of managing your form. These 3 customs actions in the "After the Form is Submitted" section are:
- Display confirmation page. Here you can customize HTML and all sorts of fun stuff, using the actual form data
- Trigger Zapier to create a new custom short link on Shortswitch with submitted form data (Don't set this up in Formstack, create it from Zapier, and it will automatically show up in formstack)
- Trigger Zapier to send a confirmation email via Mandrill (Don't set this up in Formstack, create it from Zapier, and it will automatically show up in formstack)
Step 4 - Set up Zapier
We have 2 "Zaps" in place, I named them so they are easy to distinguish.
- "Formstack_SuperBacker->Shortswitch": This fires off a HTTP call that generates the new custom shortened link in Shortswitch via Shortswitch's "API"
- "Formstack_SuperBacker->Mandrill": This sends the user an automated email when they complete the formstack form
Formstack_SuperBacker->Shortswitch
Create a new Zap, and setup a Formstack "New Submission" to a Webhook "GET"
The Webhook "GET" will use ShortSwitches /shorten API call. If you are using Bit.ly or some other service, replace accordingly.
ShortSwitches API overview, specifically we are using the /shorten information aka, "method".
It looks complicated, but we are really just executing a simple web address (with custom parameters from Zapier/formstack) which automatically creates the new shortened link in ShortSwitch.
API Key: This is assuming you have already setup your ShortSwitch account. In your ShortSwitch account, you will need to find the API key that has been generated for your account. Each ShortSwitch user has an API key assigned to it. This key must be passed into all API call. You can view and regenerate your API key from the Users page. Don't ever make this API Key public, otherwise any one can create spammy new shortened links on your shortswitch account. You API key is not public when it is being passed from Zapier Webhook "GET" to shortswitch, so we are OK here.
You will take this API key and place it in the big web address / API call that will be executed by the Zapier Webhook "GET". I've blocked this out in RED below. You will also want to pass the custom data your user created when they "submitted" the data on Formstack.
Here is the time we add the Google Analytics "UTM Parameters" to the URL. UTMs are actually really simple and easy to use, Google just makes it really confusing. A UTM parameter is a special "flag" that get's appended to a website URL, and that UTM flag is what Google Analytics uses to keep track of where visitors came from. Check out UTMs URL Builder and explanation from the article earlier from SpellForge
We are setting up the following UTMs:
Source = <Custom Roost Kickstarter Link from the Formstack submission>
Medium = kickstarter
Campaign = SuperBacker
Later in Google Analytics we will sort/filter on either the "Medium = kickstarter" or "Campaign = SuperBacker" to get to the data we want.
Text version:
http://api.shortswitch.com/shorten?token={{4139427__Your Custom Roost Kickstarter Link}}&passThrough=true&apiKey=######DELETED#############&format=json&longUrl=https://www.kickstarter.com/projects/86285180/roost-laptop-stand-free-yourself-from-laptop-neck?utm_source={{4139427__Your Custom Roost Kickstarter Link}}%26utm_medium=kickstarter%26utm_campaign=SuperBacker
You are going to want to test this one many times, including making sure the data shows up in Google Analytics as you were
Formstack_SuperBacker->Mandrill
Mandrill is a transactional email service, it's the enterprise version of MailChimp, but instead of sending marketing emails, Mandrill sends important system-generated emails, such as someone's recently created "CSL". Except you have to have a way to "push" the emails to Mandrill first, and Zapier is one of many ways to do that.
You could also replace Mandrill with Sendgrid, Mailjet, or even Gmail (tho Gmail will limit you after a couple hundred emails).
There are lots of guides on how to set up Mandrill, Sendgrid, etc. Here is one provided by Zapier
This action is going to automatically send an email with the new CSL created to owner, so they have a copy of it, and also provides one more time for easily clickable, pre-populated "share" buttons in the email, they are basically the same ones on the formstack confirmation page.
I'm really bad at email HTML, but this one is just enough to get job done, here the email that is generated by this Zap and is a copy of that HTML below
<p style="text-align: center;"><strong><span style="font-family: arial, helvetica, sans-serif;"><em><span style="font-size: xx-large;"> <span style="font-size: medium;">Your brand new Roost Kickstarter Link:</span></span></em></span></strong><strong><span style="font-family: arial, helvetica, sans-serif;"><em><span style="font-size: xx-large;"><span style="font-size: medium;"> </span></span></em></span></strong><em><span style="font-size: xx-large;"><strong><span style="font-size: medium;"></span></strong></span></em></p>
<p style="text-align: center;"><span style="font-size: x-large;"> </span></p>
<p style="text-align: center;"><span style="font-size: xx-large; font-family: verdana, geneva;"><em><strong>roo.st/{{4143307__Your Custom Roost Kickstarter Link}}</strong></em></span></p>
<p style="text-align: center;"><span style="font-size: x-large;"><em> </em></span></p>
<p style="text-align: center;"><strong><em><span style="font-size: xx-large;">Step 2.</span></em></strong></p>
<p style="text-align: center;"><span style="font-size: medium;"><strong><em> </em></strong></span></p>
<p style="text-align: center;"><span style="font-size: medium;"><strong><em>Copy your link above and...</em></strong></span></p>
<p style="text-align: center;"><span style="font-size: medium;"> </span></p>
<p style="text-align: center;"><em><span style="font-size: xx-large;">Share it on Facebook</span></em></p>
<p style="text-align: center;"><em><span style="font-size: xx-large;"><a href="https://www.facebook.com/sharer/sharer.php?u=http://roo.st/{{4143307__Your Custom Roost Kickstarter Link}}" target="_blank"><img src="https://s3.amazonaws.com/files.formstack.com/public/629533/image_facebooksharebutton.png" alt="facebooksharebutton.png" /></a></span></em></p>
<p style="text-align: center;"><span style="font-size: xx-large;"><em> </em></span></p>
<p style="text-align: center;"><span style="font-size: xx-large;"><em>Share it on Twitter</em></span></p>
<p><span style="font-size: xx-large;"><em><a href="https://twitter.com/home?status=Can't%20wait%20to%20get%20my%20Roost%20Laptop%20Stand%20and%20beat%20the%20laptop%20hunch!%20http://roo.st/{{4143307__Your Custom Roost Kickstarter Link}}" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://s3.amazonaws.com/files.formstack.com/public/629533/image_6044878_orig.png" alt="6044878_orig.png" /></a></em></span></p>
<p style="text-align: center;"><span style="font-size: xx-large;"><em></em></span></p>
<p style="text-align: center;"><span style="font-size: xx-large;"><em>Text and Email your new link </em></span><span style="font-size: xx-large;"><em>to</em></span></p>
<p style="text-align: center;"><span style="font-size: xx-large;"><em>Friends, </em></span><span style="font-size: xx-large;"><em>Family, CoWorkers, Everyone</em></span><em style="font-size: xx-large;">!</em></p>
<p style="text-align: center;"><em style="font-size: xx-large;"> </em></p>
Step 5 - Setting Up Google Analytics and Leftronic Dashboard
I don't like being short on explanation / info, but I can not possibly explain how to setup google analytics in this post. There are tons of resources on it, especially the Spellforge link from above. What is important is that you create a Conversion Goal for your kickstarter campaign and that you keep track of the UTM parameters you used for the Custom Share Links. Here is a screenshot of Google Analytics showing the Kickstarter conversions for "Campaign = SuperBackers" which we setup in earlier:
Leftronic
These guys provide the backend / service for the awesome dashboards you see in command centers, airports, etc. Their visualization service will connect with just about anything, really fun to play with.
I just wanted a simple Leaderboard that allows people to check on their status as a Super Backer. Super Backers were those who shared their custom Roost link and brought someone new into the Kickstarter campaign.
Leftronic dashboard are drag and drop. I used the following to Create the Roost Super Backers table:
"Add Widget" -> "Google Analytics" -> "Custom" -> "Custom Table Metric" -> "Table"
Then configured the following:
Dimension= ga:source
Metric= ga:goal6Completions
Custom Time Range = 30_DAYS_AGO to TODAY
Filters = ga:medium==kickstarter;ga:goal6Completions>=1 (This showed only the UTMS of medium=kickstarter, and goal completions >= 1)
The unique sessions table is very similar, just modified to show "sessions" instead of goal completions.
The other two visualizations, the global map, and the line chart, those are stock from Leftronics, check out all the different ones available.
And finally, Leftronics makes the dashboard publicly available under the "Dashboard Settings" -> "Share Link for current dashboard".