How-To: Requests
Reference: Requests Dialog
How-To: Multi-friend Selector
Most successful games on Facebook heavily use requests to enable users to invite new users as well as re-engage existing users with their game.
This document will discuss
Requests are a 1:1 communication channel between a sender and recipient. Requests are always private and can only be seen by the recipient. Requests follow a transaction model - the sender is requesting some action from the recipient, that the recipient can accept or not.
Requests can be sent in 3 scenarios:
A user sees a dialog box (invoked by the game), where they can select the friends they wish to send the request to:

A developer can also choose to pre-specify the set of friends to send the request to in which case they see a dialog like this :

Once the Request has been sent, it will appear on the recipient's Facebook experience as indicated below:

Specifically the recipient will receive a notification, their bookmark counter will increment and they will see the Request surface on the App Center.
Please keep in mind that Requests are not deleted automatically when a user clicks on them. It is the Developers' responsibility to delete a Request once it has been accepted.
Requests can be used in various ways to enable new user acquisition as well as engage existing users with a game. We will discus 4 common use cases for games.
Social games are more fun when you play with your friends; it follows that invites from friends are a primary method for new user acquisition. They are implemented via Requests, more specifically a request sent from one user to a set of their friends who have not already installed the app. Facebook separates out invites from other requests and showcases them separately on the Games Dashboard. Invites are a great mechanic to drive distribution for a new game and help it reach critical mass as your users are effectively advocates of your game to their friends.
We have seen that Invites are one the leading source of installs for Games on Facebook. Some of the most successful games on Facebook Platform send on the order of 10x more Requests per user than smaller games. Developers should optimize the Invite flow and prioritize this experience to make sure they are getting the most out of this channel.
Pro-Tips:
app_non_users filter.
Turn-based games can use requests to great effect as a notification mechanism. When one player completes a turn they can send a Request to their opponent prompting them to complete their turn. This helps to keep users re-engaging with the game.

Keep in mind that requests can be sent to any player that has already installed the game; a friend relationship does not have to be in place. If a user is looking to start a new game but none of their friends are active or available, the game can send a request to an existing player that is not necessarily friend with the current user. This allows the developer to increase the pool of their match making system outside the player’s social graph and works especially well for asynchronous games. You can simply use the id of the user when invoking the Request dialog like below.
function sendRequestToRecipients() {
FB.ui({method: 'apprequests',
message: 'My Great Request',
to: '499802820'
}, requestCallback);
}
Gifts are a common use-case of the Request channel. Gifts are generally lightweight virtual goods (energy packs, vanity items) that can be used to re-engage players that haven’t visited in a while. Users can pre-select up to 50 friends using either the Facebook multi-friend selector or developers can create their own. For more information on the multi-friend selector, see the Requests docs.
Pro-Tip: Create a custom user interface that allows users to easily accept outstanding gifts and send a gift back to their friend. This creates a feedback loop allowing users and their friends to easily remain engaged in the game.

A more interesting implementation to Gifts is Social Trading. When sending a gift most implementations do not actually remove an existing items from the sender, rather a new item is spontaneously created for the recipient. This results in a lightweight social experience. To add substance to this transaction developers can introduce the concept of inventories and scarcity. When the sender gifts an item to a recipient, the sender has to send the item from their inventory. This add meaning to the social activity – resulting in lower frequency of sends but higher value to the interaction. It can be extended by players keeping public wish lists of items they require.

Here are some things to keep in mind when implementing requests:
Developers can streamline the process of sending requests by implementing Frictionless Requests. Frictionless Requests enable users to send requests to specific friends from within an app without having to click on a pop-up confirmation dialog. Upon first sending a request to a friend from within an app, a user may authorize the app to send subsequent requests to the same friend without prompting for his permission. This works especially well for turn-based games where once a user has agreed to a match, then they can send requests for subsequent turns to their opponent without requiring additional confirmation.

Best of all, they are extremely easy to implement. Just include the frictionlessRequests parameter in FB.init and set it to true:
FB.init({
appId : APP_ID,
oauth : true,
frictionlessRequests : true
});
This is especially effective for games that have a Canvas, Mobile Web and iOS implementations as the request will notify the recipient across all of their devices and create a seamless cross platform experience. For more information on how requests work across platforms, check out our Mobile Docs.
Building your own multi-friend selector enables you to customize it to your app and the specific scenario so that the experience feels more consistent with the rest of your app and optimizes for selecting friends most relevant for your game. Almost all our top games build their own custom multi-friend selector to optimize this experience.
Here is an example experiences built by Magic Land. Magic Land saw a 17% increase in the total number of requests accepted when they switched to this multi-friend selector.
Creating a custom Multi-Friend Selector is a relatively simple exercise accomplished by using the Graph API to retrieve the list of the current users friends and then sending the request via the to parameter as defined within the Request Dialog docs. Please read How-to create Custom Multi-Friend Selector to get started.
Note: We have a policy that apps may not offer a select all option or pre-select multiple recipients to receive a Request (effective July 10, 2013).
To get started with requests see our Requests How-to and the Request Dialog docs.
To learn about other ways to drive distribution for your Game please refer to the Games distribution doc.