The collection ad format includes an Instant Experience and makes it easier for people to discover, browse, and purchase products and services from their mobile device in a visual and immersive way. The in-feed ad will feature three products under a hero image or video that opens into a full-screen Instant Experience when someone interacts with your ad.
You can create an ad with the collection format by building an Instant Experience. Start with a template or choose your own customized layout.
You can also include Facebook's ad creation user interfaces for the collection format in your website using the JavaScript SDK to create a Collections Ads Dialog.
To create collections used in Shops or to add metadata to a product set, see Commerce Platform: Product Set Collection API.
Consider all references of "Canvas" to represent Instant Experience as Canvas is the previous name for this format.
You can use collection ads with the following objectives:
For Traffic and Conversions objectives, you can also use slideshow videos. See How to choose the right ad objective in Meta Ads Manager for more information.
The following placements are supported:
For more information about placements, see About ad placements across Meta technologies and Available ad placements and ad formats by ad objectives.
You can use a template as a quick way to create an Instant Experience for a specific business goal. The layout for each template is fixed; however, you can replace the default content with your own images, videos, products, text and links.
There are two types of collection ads with Instant Experiences: image-based and video-based, depending on the asset you provide. Once you have an ad creative, you can create an ad.
curl -F 'name=Instant Experiences Collection Sample Image Creative' -F 'object_story_spec={ "link_data": { "link": "https://fb.com/canvas_doc/<ELIGIBLE_CANVAS_ID>", "message": "<AD_MESSAGE>", "name": "<NAME>", "picture": "<IMAGE_URL>", "collection_thumbnails": [ {"element_crops": {"100x100": [[0, 0], [100, 100]]},"element_id": "<PHOTO_ELEMENT_WITH_PRODUCT_TAGS_ID>",}, {"element_child_index": 0,"element_id": "",}, {"element_child_index": 1,"element_id": "<PRODUCT_LIST_ELEMENT_ID>",}, ], }, "page_id": "<PAGE_ID>" }' -F 'access_token=<ACCESS_TOKEN>' https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
curl -F 'name=Instant Experiences Collection Sample Video Creative' -F 'object_story_spec={ "page_id": "<PAGE_ID>", "video_data": { "call_to_action": { "type":"LEARN_MORE", "value":{ "link":"https://fb.com/canvas_doc/<ELIGIBLE_CANVAS_ID>" } }, "image_url": "<IMAGE_URL>", "collection_thumbnails": [ {"element_crops": {"100x100": [[0, 0], [100, 100]]},"element_id": "<PHOTO_ELEMENT_NO_PRODUCT_TAGS_ID>",}, {"element_child_index": 0,"element_id": "<PHOTO_ELEMENT_WITH_PRODUCT_TAGS_ID>",}, {"element_child_index": 1,"element_id": "<PRODUCT_LIST_ELEMENT_ID>",}, ], "title": "<VIDEO_TITLE>", "video_id": "<VIDEO_ID>" } }' -F 'access_token=<ACCESS_TOKEN>' https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
Name | Description |
---|---|
string | Required |
array | Required |
collection_thumbnails
fieldsName | Description |
---|---|
numeric string | Required |
integer | Required for a photo element with product tags and product list element |
| Required for a photo element |
Before you create a collection ad, you need to provide an ad creative and an Instant Experience. You must provide at least four elements that represent photos or products with product tags to be shown in rotation. Child photo elements in a carousel element are also valid.
The collection ad appears in Feed, and people can see more in a full-screen Instant Experience that opens when they tap on the ad.
To use a product set, you should be familiar with Advantage+ catalog ads and already have a product catalog set up.
When you create a collection ad from a product set, you must also explicitly create an Instant Experience with the correct elements. When you use this Instant Experience in a collection ad, Meta automatically generates the collection ad.
Your Instant Experience should contain:
show_in_feed
set to true
. Create an Instant Experience with an image
curl \ -F 'canvas_photo={ "photo_id": "<PHOTO_ID>", }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvas_elements
Create an Instant Experience with a video
curl \ -F 'canvas_video={ "video_id": "<VIDEO_ID>", }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvas_elements
Create an Instant Experience with a template video
curl -X POST \ -F canvas_template_video={ "name": "Cover Image or Video", "bottom_padding": "0", "top_padding": "0", "product_set_id": <Product_Set_ID>, "template_video_spec": { "customization": { "text_color": "FFFFFF", "text_background_color": "000000", "name_template": "{{product.name}}", "body_template": "{{product.current_price strip_zeros}}" }, } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvas_elements
Create a canvas_product_set
with a product_set_id
from your product catalog. You must set show_in_feed
to true
to create a collection ad.
curl -X POST \ -F 'canvas_product_set={ "max_items": 50, "product_set_id": "<PRODUCT_SET_ID>", "item_headline": "{{product.name}}", "item_description": "{{product.current_price}}" "image_overlay_spec": { "overlay_template": "pill_with_text", "text_type": "price", "text_font": "dynads_hybrid_bold", "position": "top_left", "theme_color": "background_e50900_text_ffffff", "float_with_margin": true, }, "storefront_setting": { "enable_sections": true, "customized_section_titles": [ { "title_id": "popular", "customized_title": "My Populars" }, { "title_id": "favorites", "customized_title": "My Favorites" }], "product_set_layout": { "layout_type": "GRID_3COL" } }, "retailer_item_ids": [0, 0, 0], "show_in_feed": true }' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvas_elements
Note: The item_headline
, item_description
, image_overlay_spec
, storefront_setting
, and retailer_item_ids
parameters are all optional fields.
Provide any required fields in the image_overlay_spec
parameter.
The storefront_setting
parameter supports the product_set_layout
, enable_sections
, and customized_section_titles
fields.
product_set_layout
fieldName | Description |
---|---|
string | Required. |
customized_section_titles
fieldIn order to use customized_section_titles
, the enable_sections
parameter must be set to true
.
Name | Description |
---|---|
string | Required. |
string | Required. |
Create the Instant Experience footer with a link.
curl \ -F 'canvas_button={ "rich_text": { "plain_text": "See more at www.abc.com." }, "open_url_action": { "url": "https://www.abc.com" } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvas_elements
You can also create a button to use in the footer.
curl \ -F 'canvas_footer={ "child_elements": <BUTTON_ELEMENT_ID> }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvas_elements
Basic Instant Experience
curl -X POST \ -F 'body_element_ids=[ <PHOTO_OR_VIDEO_ELEMENT_ID>, <PRODUCT_SET_ELEMENT_ID>, <FOOTER_ELEMENT_ID> ]' \ -F 'is_published=true' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvases
To create the Instant Experience with a template video, product set, button, store location and optional footer, include the source_template_id
parameter.
curl \ -F 'body_element_ids=[ <TEMPLATE_VIDEO_ELEMENT_ID>, <PRODUCT_SET_ELEMENT_ID>, <FOOTER_ELEMENT_ID> ]' \ -F 'name="Dynamic Video Instant Experience"' \ -F 'source_template_id="1932289657009030"' \ -F 'is_published=true' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvases
For a storefront template, you need to specify source_template_id = 1932289657009030
, it is defined in Instance Experiences: Using templates. The layout for each template is fixed; however, you can replace the default content with your own dynamic videos, products, text and links.
If the first element of your Instant Experience is a photo, you must set object_type
to SHARE
.
curl \ -F 'name=Collection Sample Image Creative' \ -F 'object_story_spec={ "link_data": { "link": "https://fb.com/canvas_doc/<CANVAS_ID>", "message": "<AD_MESSAGE>", "name": "<AD_HEADLINE>", }, "page_id": "<PAGE_ID>" }' \ -F 'object_type=SHARE' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
If the first element of your Instant Experience is a video, you must set object_type
to VIDEO
.
curl \ -F 'name=Collection Sample Video Creative' \ -F 'object_story_spec={ "video_data": { "call_to_action": { "type":"LEARN_MORE", "value":{ "link":"https://fb.com/canvas_doc/<CANVAS_ID>", } }, "image_url": "<THUMBNAIL_IMAGE_URL>", "message": "<AD_MESSAGE>", "title": "<AD_HEADLINE>", }, "page_id": "<PAGE_ID>" }' \ -F 'object_type=VIDEO' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
If the first element of your Instant Experience is a template video, the request should look as follows:
curl -X POST \ -F 'name="Dynamic Video Collection Ad"' \ -F 'adset_id=<ADSET_ID>' \ -F 'status=PAUSED' \ -F 'creative={ "object_story_spec": { "instagram_user_id": "<INSTAGRAM_PAGE_ID>", "page_id": "<MAIN_PAGE_ID>", "template_data":{ "call_to_action":{ "type":"LEARN_MORE" }, "format_option":"collection_video", "link":"https://fb.com/canvas_doc/<CANVAS_ID>", "name":"Test Dynamic Ads with dynamic video", "retailer_item_ids":[ "0", "0", "0", "0" ] } }, "object_type": "SHARE", }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/ads
You can provide an ad_format
and User access token to generate previews based on your ad or ad creative.
curl -X GET \ -d 'ad_format="MOBILE_FEED_STANDARD"' \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<CREATIVE_ID>/previews
Note: For template video Instant Experience ads, the supported formats are BIZ_DISCO_FEED_MOBILE
, GROUPS_MOBILE
, MOBILE_FEED_STANDARD
, SUGGESTED_VIDEO_DESKTOP
, SUGGESTED_VIDEO_MOBILE
, WATCH_FEED_MOBILE
.
See Ad Previews for more information.
Collection ads are based on Instant Experiences with a template. Therefore, to create a collection ad using a dialog, you will use the Instant Experiences dialog with additonal parameters. This will provide the Facebook collection ad creation UI flow in your website. For details about the UI component, see Dialogs.
To set up the Facebook SDK for JavaScript, see:
The JavaScript SDK relies on the logged in user's permissions to create Instant Experiences. If the user does not have the necessary permissions to create an Instant Experience for the supplied page and business, the dialog will show an error. The user must also have access to the product catalogs and sets. In order to ensure no errors, the user must have access to the Business Manager and have permissions to create ads for the page.
Then you can trigger the collection ads dialog.
FB.ui({ display: 'popup', method: 'instant_experiences_builder', account_id: 'AD_ACCOUNT_ID'. business_id: 'BUSINESS_ID', page_id: 'PAGE_ID', template_id: 'TEMPLATE_ID' }, function(response) { // callback });
Name | Description |
---|---|
| Required. |
| Required. |
| Required. |
| Required. |
| Required. |
| Required. |
| Required, if |
| Optional. |
All valid template types and the corresponding ID can be found in Instant Experiences: Use a Template.
To preview a collection ad, we recommend using the Instant Experiences Preview Dialog.
{ "success": true, "id": "<CANVAS_ID>" }
The id
returned will be an unpublished Instant Experience. It needs to be published before it can be used in ad campaigns.
If there is no response or an undefined
response is returned, it means the dialog was closed before finishing the Instant Experience set up or that the user saved the Instant Experience but did not finished it. You can query to see all the Instant Experiences that belong to a page and see if any are unfinished Instant Experiences.
You can show ad creatives from a destination catalog in a collection ad's hero image. You can also display a carousel of hotel images at that destination. To do this, you must provide a fallback image that displays at the hero image in case there is no corresponding destination for hotels in the carousel. For more information, see Destination Catalog.
Note these limitations:
To use this feature, add the destination_set_id
parameter when creating your canvas_photo
element, then follow the other standard steps to create your Instant Experience and collection ad.
curl -X POST \ -F 'canvas_photo={ "photo_id": "<PHOTO_ID>", "destination_set_id": "<DESTINATION_SET_ID>", }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/canvas_elements
You can automatically create audiences for people who interacted with your collection ad. This is similar to engagement audiences for standard Instant Experiences. For more information, see Instant Experiences, Engagement Audiences.
You can target your Instant Experience ads with a full-screen view for people who tapped on your collection ad. This type of audience is called a Fullscreen Experience engagement audience. Build this audience by creating a custom audience, set object_id
to CANVAS_ID
, and make a rule to track one of the events.
curl -X POST \ -F 'name=Collection Engagement Audience' \ -F 'description=People who opened this Instant Experience' \ -F 'rule=[{ "object_id":"<CANVAS_ID>", "event_name":"instant_shopping_document_open" }]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/customaudiences
curl -X POST \ -F 'name=Collection Engagement Audience' \ -F 'description=People who clicked any links in this Instant Experience' \ -F 'rule=[{ "object_id":"<CANVAS_ID>", "event_name":"instant_shopping_element_click" }]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/customaudiences