Social Currency: Giving back to your customers for promoting your app
written by Allan on December 05, 2011
A few months ago we added an opportunity for new users of LessAccounting to extend their free trial by sharing a link to LessAccounting on Facebook or Twitter.
Wait, wait!
What does that mean? Okay, so when a user logs into LessAccounting for the first time they're greeted with a modal window that looks like this:

Here are couple of technical insights if you're interested in building a similar feature into your app. This sample code is in HAML (since we love it).
Facebook button provides a nice callback invoked once user "likes" the page.
#facebook-button
%script{:src => "http://connect.facebook.net/en_US/all.js#xfbml=1"}
%fb:like{:layout => "button_count", :href => 'http://lessaccounting.com/'}
:javascript
FB.Event.subscribe('edge.create', function(href, widget) {
onShare(); // our function that sends ajax request to app to extend users free trial
});
You also need to define OG meta info on the page you're promoting so that Facebook will use it and present your site properly in the user timeline. Here's ours:
%meta{:property=>'og:type', :content=>'website'}
%meta{:property=>'og:site_name', :content=>'LessAccounting'}
%meta{:property=>'og:title', :content=>'LessAccounting'}
%meta{:property=>'og:description', :content=>'Bookkeeping sucks less with http://LessAccounting.com, perfect for freelancers and small businesses.'}
%meta{:property=>'og:url', :content=>'http://lessaccounting.com'}
%meta{:property=>'og:image', :content=>'http://lessaccounting.com/images/LAlogo-small.png'}
Use URL Linter to verify. Note that Facebook caches this metadata for pages and URL Linter enables you to flush them.
Twitter integration sucks a bit. Currently, there's no callbacks feature and since the tweet button uses iframe, you can't do anything useful with links in it. Since the number of tweets wasn't that important to us, a custom tweet(share) button was good enough. Another downside is that it will extend a user's trial regardless of whether or not the user proceeds with the tweet after tweet dialog opens.
#tweet-button
= link_to 'Tweet', "http://twitter.com/share?url=&text=So far I'm loving @lessaccounting! Check it out http://LessAccounting.com", :class => 'twitter-share-button', :target => '_blank', :style => "display: block; padding: 2px 5px 2px 20px; background: url('http://a4.twimg.com/images/favicon.ico') 1px center no-repeat; border: 1px solid #ccc;"
:javascript
$('#tweet-button a').click(function(event) {
var width = 575,
height = 400,
left = ($(window).width() - width) / 2,
top = ($(window).height() - height) / 2,
url = this.href,
opts = 'status=1' +
',width=' + width +
',height=' + height +
',top=' + top +
',left=' + left;
window.open(url, 'twitter', opts);
onShare(); // our function that sends ajax request to app to extend users free trial
return false;
});
Answers to Potential Questions:
- No, I haven't done any A/B testing on the design of the modal window.
- No, I haven't thought of a way to track the RIO on this feature.
- Yes, I know I look like a chubby George Clooney.
Have you seen anyone else doing anything with social currency? Let me know. This is something that interests me.
Leave a Comment

Allan loves his family more than breathing. He lives in Panama City, Florida & grew up washing cars at his family's car washes. Oh and Allan hasn't worn underwear since 2004.

4 Comments
Hey, for some reason images don’t work on RSS feed (I’m using Mail.app)
Great idea, I like this a lot. Curious, though, unless I misunderstood, why present users with this option at the beginning of the trial? Why not later, even just by a day or two, where they might have a greater incentive to put their endorsement out there?
This is a great idea!
I implemented something like this on a client project, where if you tweeted about the product, you’d get a discount of 10% of the number of followers the user has upto $3.
LOVE! (must steal this)