Here is a case study: Last year I was working on an SMS app, QKSMS [1]. We offered a premium version for $2. We did a promotion on reddit where we gave away 10k free premium versions. So, take a second and ask yourself: how quickly do you think you could implement a promo code system + a website for distributing codes for one time use?
We did it in about 5 hours. It costed about $100. The website was (and still is) statically hosted on Github. [2] The website source code is ~22 lines of JavaScript. It pulled 12 promo codes from Firebase; and when a promo code was removed, it would (in realtime!) collapse it from the list and display a new promo code at the bottom.
The mobile app code was also very simple. First, check if the promo code is available (one API call); if so, enable premium and remove the code (another API call).
The reason why it costed about $100 is because we had too many concurrent users: the Firebase free plan allows only 50 concurrent users, and at our peak we were seeing ~500. Since the promo was only for a day, we bought an expensive plan that got pro-rated for just that day.
It was an extremely successful promotion. [3] The final result was very interactive. It was amazing to watch the codes disappear in real-time. It was like a game: you had to be fast to enter the code, because the codes were being used so quickly.
All in all, I believe we made more money in people buying it anyways (despite the promotion) than it costed to serve it. And keep in mind we built the entire system in about 5 hours. And I'm not even a web developer. An actual web developer could have implemented this in an hour or two.
For reference here is the entire JavaScript powering the promo code website:
var all_codes = new Firebase("https://qksms-promo.firebaseio.com/public_codes");
all_codes.on('value', function(data){
$('#remaining').text(data.numChildren());
if (data.numChildren() === 0) {
$('#status').text('No more codes!');
}
})
all_codes.orderByValue().limitToFirst(12).on('child_added', function(data){
$('#status').remove();
var str = '<div class="code" id="';
str = str.concat(data.key());
str = str.concat('">');
str = str.concat(data.key());
str = str.concat('</div>');
$('#wrapper').append(str);
$('#'.concat(data.key())).hide().fadeIn(300);
});
all_codes.orderByValue().limitToFirst(12).on('child_removed', function(data){
$('#'.concat(data.key())).slideUp(300, function(){
$(this).remove();
});
});
[1] https://github.com/moezbhatti/qksms[2] http://qklabs.com/qksms-promo/
[3] https://www.reddit.com/r/Android/comments/36eix7/dev_a_year_...