Skip to main content

Design & Learning from Viral Applications FB App lifecycle

Step 1

(Initial Growth):

Initial Growth (based on advertising principles) – all about conversion rates (#times people see profiles, canvas page, invites, activity stream, feeds). Goal MAX conversion rates for each channel. Consider long-term user experience. Effective (aggressive) methods at the beginning will not work later in app life cycle

Design/implement based on simple concepts. Viral channels are more important than features!


Step 2

(validation):

Goal: concept validation.

  • Iterate/execute rapidly. Viral loop. A/B testing. Do not complicate – it will make execution/testing/measuring. Goal: figure out features, do not be emotional, and be guided by data/metrics.
  • Use web matrix (Google analytics for conversion rates)

[Social Application classes]

  • Channel (superwall)
  • Content
  • Dating
  • Games (related to dating, affinity groups)
  • Gifts
  • Self-Expression


Understand audience, look at market size, potential penetration (set expectation right :). Ning has impressive numbers but segmented. iGoogle (10-15 Mil, virality is not clear yet, how to build initial friend list?)

  • Understand activity stream.
  • Focus on simple
  • Focus on activity stream that all users can engage into

Typical 30 releases/day during the post-launch phase.

Take extra care of 1-st impression (app about page is important!)


Step 3

(grows, tuning along the way)

Start with the call to action

Figure out conversion rate (make sure x*y>1)

Preview Page messages turning

App turning


Step 4

(Promote!)

Buy additional throughput, engage ad network

Make sure that viral loop works – otherwise money will go into drain.

Use different add network.

Cross-promote apps!


Step 5

(Engagement)

Congratulations!

How to make users to come back? How to make users to come back?

Saturated social circles. Critical mass.

Good functionality bring users back – tune for user experience! 1-to-1 becomes more important than invites. Use e-mails and messaging. Do not spam – interact by telling only when something happened.


Step 6

(disengagement)

Understand that every channel will degrade over time. Set your expectations right!

Comments

Popular posts from this blog

Freebase Hack Day

Facebook Friends Connect

Is a way to extend external sites to provide: FB identity FB friends (relationship) Feed to FB   Demo app at http://www.somethingtoputhere.com/therunaround User experience: login: js login method requiresession(): detects state of usr-FB relationship, log-in into FB if needed. If user has not authorised app - present app auth dialog. If already has session - just go init JS, require session   access FB data: - FBML on external site - use JS FBML parser and replace in browser DOM with FB data - JS based API to get FB data, REST API on the server site. Sessions work accross any API - only small subset of FBML us supported at the moment   adding social content: - use access API   Connections: app developers can suggest connections (using e-mail hash) user get connect request on FB Move content from external sites to FB app can register feed template (3 types of stories) call JS "showfeeddialog" to request user to confirm data sharing on FB. privacy protection: app ca...

Respect Coin

Respect I think it's time to talk about currency. Let's create a Respect Coin. Step 1. Install OpenZeppelin library  npm install zeppelin-solidity When it comes to coins, I like to use some functions that smart people already implemented and other smart people verified. I think that Zeppelin is a nice collection of Solidity contracts that can be trusted. Let's use the StandardToken contract and use it as a parent class for our own RespectCoin contract. Step 2. Create RespectCoin contract and store it in "contracts/RespectCoin.sol" file  pragma solidity ^0.4.4; import "../node_modules/zeppelin-solidity/contracts/token/StandardToken.sol"; /** * @title RespectCoin * @dev ERC20 Token example, where all tokens are pre-assigned to th e creator. * Note they can later distribute these tokens as they wish using `transfer` and other * `StandardToken` functions. */ contract RespectCoin is StandardToken { string public constant name = ...