Back to News for Developers

Carousel Mobile App Ads

May 11, 2015ByChristine Lu

Last year, we introduced the carousel format for Facebook ads, which lets advertisers showcase multiple images in one ad. Since then, advertisers have seen carousel link ads drive 30 to 50% lower cost per conversion and 20 to 30% lower cost per click than single-image link ads.

Originally only available for Link ads, we are now extending the carousel ad format to more ad objectives, starting with mobile app ads, to better help you and your clients drive conversions on Facebook. The carousel format gives advertisers an interactive canvas for showcasing their brand and products, and now mobile app developers have access to the same ad format for app install and engagement ads.

Currently carousel mobile app ads support only one app, with a minimum number of 3 images (vs. 2 on non-app ad carousel ads). Finally, the end card (typically displaying the page's profile photo) will not be displayed for carousel mobile app ads.

Example of carousel photo for app engagement with deep links. Note that you should specify the same app store link in each child_attachment. You do not have to specify the link again in the call_to_action:{'value':{'link':... }}}:

include './vendor/autoload.php';

use FacebookAds\Api;  
use FacebookAds\Object\AdCreative;  
use FacebookAds\Object\Fields\AdCreativeFields;  
use FacebookAds\Object\Fields\ObjectStorySpecFields;  
use FacebookAds\Object\Fields\ObjectStory\LinkDataFields;  
use FacebookAds\Object\Fields\ObjectStory\AttachmentDataFields;  
use FacebookAds\Object\AdGroup;  
use FacebookAds\Object\Fields\AdGroupFields;  

$APP_URL = '';
$child_attachments = array();

for($i = 0; $i <= 10; $i++) {
$child_attachments[] = array(
AttachmentDataFields::LINK => '<LINK_$i>',
AttachmentDataFields::PICTURE => '<IMAGE_URL_$i>',
AttachmentDataFields::CALL_TO_ACTION => array(
'type' => 'USE_MOBILE_APP',
'value' => array('app_link' => '<DEEP_LINK_$i>', 'link_title' => '<LINK_TITLE_$i>'),

$object_story_spec = array(
ObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
ObjectStorySpecFields::LINK_DATA => array(
LinkDataFields::MESSAGE => 'My description',
LinkDataFields::LINK => '<APP_STORE_URL>',
LinkDataFields::CAPTION => 'WWW.ITUNES.COM',
LinkDataFields::CHILD_ATTACHMENTS => $child_attachments,
LinkDataFields::MULTI_SHARE_OPTIMIZED => true,

$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');

AdCreativeFields::NAME => 'Carousel app ad',
AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,

$creative_id = $creative->id;
echo 'Creative ID: '.$creative_id ."\n";
curl \
-F "name=Carousel Ad Creative" \ 
-F "object_story_spec={\
'page_id':<PAGE_ID>, \
'link_data':{ \
'message':'Try it out', \
'link':'<APP_STORE_LINK>', \
'child_attachments':[ \
{'link':'<APP_STORE_LINK>','image_hash':'image_hash1', 'call_to_action': {'type':'INSTALL_NOW', 'value':{'link_title': 'MY TITLE', 'app_link':'app://path/to/page'}}}, \
{'link':'<APP_STORE_LINK>','image_hash':'image_hash2', 'call_to_action': {'type':'INSTALL_NOW', 'value':{'link_title': 'MY TITLE', 'app_link':'app://path/to/page'}}}, \
{'link':'<APP_STORE_LINK>','image_hash':'image_hash3', 'call_to_action': {'type':'INSTALL_NOW', 'value':{'link_title': 'MY TITLE', 'app_link':'app://path/to/page'}}}\
]}}" \
-F "access_token=<ACCESS_TOKEN>" \

For more details on the API, refer to the mobile app ads reference. Check out the Facebook for Business blog for details on usage and case studies.