Dynamic Story Ads Guide
Story Ads are a Dynamic Ad format that allows advertisers to dynamically display a series of 3-10 product ads pulled directly from a Catalog.
This opens an opportunity to leverage Dynamic Ads campaigns within another placement across Snapchat, within our Discover tab where the Dynamic Story Ad will display.
Dynamic Story Ads are available for Website and Deep Link campaigns with both prospecting and retargeting audience targeting, and available for App Install campaigns with prospecting audience targeting.
Dynamic Story Ads currently has four possible variants.
- A non-dynamic Preview Creative, a non-dynamic Creative and ten Dynamic Ads that make up the story
- A non-dynamic Preview Creative and a set of ten Dynamic Ads that make up the story
- A dynamic Preview Creative, a non-dynamic Creative and ten Dynamic Ads that make up the story
- A dynamic Preview Creative and a set of ten Dynamic Ads that make up the story
Assuming you have an existing Product feed and Product set, the order of creation from the the top of the hierarchy is the following;
- Preview Creative
- Static Creative (Optional)
- 10x Dynamic Creatives
- Composite Creative
- Ad Squad (including product_audiences)
- Ad (Story type)
Product Feed - Interaction support
Before setting up the Creative Elements you should ensure the chosen interaction is supported by the product feed and product set you intend to use. The Product Search method along with the parameter ELIGIBLE_AD_TYPE can be used to evaluate this. Refer to Product Search
The three Ad formats supported by product search and ELIGIBLE_AD_TYPE are APP_INSTALL, DEEP_LINK_ATTACHMENT and REMOTE_WEBPAGE.
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"filter":{"AND":[{"ELIGIBLE_AD_TYPE":{"EQ":"DEEP_LINK_ATTACHMENT"}},{"PRODUCT_SET_ID":{"EQ":"8dc5f3ff-ab02-460b-bbbd-1ade8bb3da38"}},{"OR":[{"AVAILABILITY":{"EQ":"IN_STOCK"}},{"AVAILABILITY":{"EQ":"PREORDER"}},{"AVAILABILITY":{"EQ":"AVAILABLE_FOR_ORDER"}}]}]}}'
https://adsapi.snapchat.com/v1/catalogs/82225ba6-7559-4000-9663-bace8adff5f8/product_search?limit=0
{
"request_status": "SUCCESS",
"request_id": "5ff70e2b00ff08056236e672d10001737e616473617069736300016275696c642d33343532666138312d312d3431312d300001013d",
"summary": {
"total_products": {
"count": "47",
"relation": "EQ"
}
},
"paging": {},
"products": [
{ ...}
]
}
HTTP Request
POST https://adsapi.snapchat.com/v1/catalogs/{catalog_id}/product_search?limit=0
Preview Creative
This Creative constitutes the tile that is used in the discover feed, it consists of the tile itself and a logo on top of the tile. The tile can either be a non-dynamic image, or the image can be fetched dynamically from a Product Set.
When the preview creative is non-dynamic it uses two Media entities of the type IMAGE
preview_media_id
- The id of the Preview Media image used in the Stories tab of Snapchatlogo_media_id
- The id of the Logo Media Image which is overlaid on top of the Preview Media
The Preview Media ID and Logo Media ID are defined in the preview_properties
of this Creative, the preview_properties
also contains a
headline which can hold up to 55 characters and allows for the use of emoji Unicode characters.
When the preview creative is dynamic it needs to have the attribute dynamic_render_properties
which specifies the product_set_id
to be
used, and the dynamic_template
formulated on the Composite Creative.
Preview Media
This is a MEDIA creation request, the image dimension and size should be 360px x 600px PNG format, 2 MB maximum, detailed Media spec.
Attribute | Description | Required | Possible Values |
---|---|---|---|
name | Media name | R | |
type | Media Type | R | IMAGE |
ad_account_id | Ad Account ID | R |
Logo Media
This is a normal MEDIA creation request, the image dimension and size should be 993px x 284px PNG format on transparent background, 2 MB maximum, detailed Media spec.
Attribute | Description | Required | Possible Values |
---|---|---|---|
name | Media name | R | |
type | Media Type | R | IMAGE |
ad_account_id | Ad Account ID | R |
Example 1 - Preview Creative that uses a preview_media_id (IMAGE)
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"creatives":[{"name":"Preview Creative - STATIC - Badger Story Ad","ad_account_id":"82225ba6-7559-4000-9663-bace8adff5f2","type":"PREVIEW","shareable":true,"render_type":"STATIC","preview_properties":{"preview_media_id":"6774e417-c3b8-4bd5-9573-aee33658e7d8","logo_media_id":"16ddfd33-0e87-484b-9b6c-47d07724df78","preview_headline":"The latest Tunneling Gear 🛠"}}]}'
https://adsapi.snapchat.com/v1/adaccounts/82225ba6-7559-4000-9663-bace8adff5f2/creatives
{
"request_status": "SUCCESS",
"request_id": "60d34e6200ff0101c629819b530001737e616473617069736300016275696c642d63616365343036622d312d3435362d3200010149",
"creatives": [
{
"sub_request_status": "SUCCESS",
"creative": {
"id": "5a63e6bd-6641-4d43-b4f8-484518f6d0e8",
"updated_at": "2021-06-23T15:08:20.170Z",
"created_at": "2021-06-23T15:08:20.170Z",
"name": "Preview Creative - STATIC - Badger Story Ad",
"ad_account_id": "82225ba6-7559-4000-9663-bace8adff5f2",
"type": "PREVIEW",
"packaging_status": "SUCCESS",
"review_status": "PENDING_REVIEW",
"shareable": true,
"render_type": "STATIC",
"top_snap_crop_position": "MIDDLE",
"preview_properties": {
"preview_media_id": "6774e417-c3b8-4bd5-9573-aee33658e7d8",
"logo_media_id": "16ddfd33-0e87-484b-9b6c-47d07724df78",
"preview_headline": "The latest Tunneling Gear 🛠"
},
"ad_product": "SNAP_AD"
}
}
]
}
Example 2 - Preview Creative that uses a Dynamically picked image from a Product Set ID
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"creatives":[{"name":"Preview Creative - DYNAMIC - Badger Story Ad","ad_account_id":"22225ba6-7559-4000-9663-bace8adff5f2","type":"PREVIEW","shareable":true,"render_type":"DYNAMIC","top_snap_crop_position":"MIDDLE","dynamic_render_properties":{"dynamic_template_id":"c2987693-f5c3-43b1-90bd-31445493cef1","product_set_id":"b6d35541-d5b6-4e06-a400-03f9937392cc"},"preview_properties":{"logo_media_id":"16ddfd33-0e87-484b-9b6c-47d07724df70","preview_headline":"The latest Tunneling Gear 🛠"}}]}'
https://adsapi.snapchat.com/v1/adaccounts/82225ba6-7559-4000-9663-bace8adff5f2/creatives
{
"request_status": "SUCCESS",
"request_id": "611fe31700ff0e87127c39c75e0001737e616473617069736300016275696c642d39323666386331392d312d3437322d3000010108",
"creatives": [
{
"sub_request_status": "SUCCESS",
"creative": {
"id": "3cb19304-4df3-446e-ac9d-b415b116e136",
"updated_at": "2021-08-20T17:15:04.368Z",
"created_at": "2021-08-20T17:15:04.368Z",
"name": "Preview Creative - DYNAMIC - Badger Story Ad",
"ad_account_id": "22225ba6-7559-4000-9663-bace8adff5f2",
"type": "PREVIEW",
"packaging_status": "SUCCESS",
"review_status": "PENDING_REVIEW",
"shareable": true,
"render_type": "DYNAMIC",
"dynamic_render_properties": {
"dynamic_template_id": "c2987693-f5c3-43b1-90bd-31445493cef1",
"product_set_id": "b6d35541-d5b6-4e06-a400-03f9937392cc"
},
"top_snap_crop_position": "MIDDLE",
"preview_properties": {
"logo_media_id": "16ddfd33-0e87-484b-9b6c-47d07724df70",
"preview_headline": "The latest Tunneling Gear 🛠"
},
"ad_product": "SNAP_AD"
}
}
]
}
HTTP Request
POST https://adsapi.snapchat.com/v1/{ad_account_id}/creatives
Preview Creative Parameters
Attribute | Description | Required | Possible Values |
---|---|---|---|
name | Creative name | R | |
ad_account_id | Ad Account ID | R | |
type | Creative type | R | PREVIEW |
shareable | Allows sharing of the Story Ad on iOS, Android sharing is currently not available | O | true (default), false |
render_type | R | STATIC, DYNAMIC | |
preview_properties.preview_media_id | Preview Media ID, required when render_type is STATIC | O | |
preview_properties.logo_media_id | Logo Media ID | O | |
preview_properties.preview_headline | 55 Character limit, emoji unicode characters allowed | R | |
dynamic_render_properties.dynamic_template_id | Must match Dynamic Template ID set on the Composite creative, required when render_type is DYNAMIC | O | |
dynamic_render_properties.product_set_id | Must match Product Set ID set at Ad Squad level, required when render_type is DYNAMIC | O |
Dynamic Creatives
When creating a Dynamic Story Ad you will need 10 x Dynamic Creatives, these Dynamic Creatives need to be of the same Creative type (WEB_VIEW, APP_INSTALL, DEEP_LINK). It’s not possible to mix different Creative types within one Dynamic Story Ad.
The Dynamic Creatives follows the creation outlined here, the Dynamic Creatives will be listed in within an array of the Composite creative, even though a Dynamic Story Ad requires 10x Dynamic Creatives, at the point of serving 3-10 of these Creatives will be used to pull in Products from the Product feed.
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"creatives":[{"ad_account_id":"82225ba6-7559-4000-9663-bace8adff5f2","name":"DPA Story Ad Position 1","type":"WEB_VIEW","headline":"Tunneling Tools","brand_name":"Badger Tunneling","shareable":true,"call_to_action":"SHOP_NOW","render_type":"DYNAMIC","dynamic_render_properties":{"dynamic_template_id":"09d8d60b-1d05-423a-8d52-c2f52cf2c7dc","product_set_id":"10e7d339-0ff1-434a-996a-94d34918c948"}},{"name":"DPA Story Ad Position 2","ad_account_id":"82225ba6-7559-4000-9663-bace8adff5f2","type":"WEB_VIEW","shareable":true,"headline":"Tunneling Tools","brand_name":"Badger Tunneling","call_to_action":"SHOP_NOW","render_type":"DYNAMIC","dynamic_render_properties":{"dynamic_template_id":"09d8d60b-1d05-423a-8d52-c2f52cf2c7dc","product_set_id":"10e7d339-0ff1-434a-996a-94d34918c948"}}]}'
https://adsapi.snapchat.com/v1/adaccounts/82225ba6-7559-4000-9663-bace8adff5f2/creatives
{
"request_status": "SUCCESS",
"request_id": "60d4737600ff00ffde2766270dc80001737e616473617069736300016275696c642d63616365343036622d312d3435362d320001011d",
"creatives": [
{
"sub_request_status": "SUCCESS",
"creative": {
"id": "885b4c1d-b496-40b9-9543-bd75bf1af010",
"updated_at": "2021-06-24T11:58:46.929Z",
"created_at": "2021-06-24T11:58:46.929Z",
"name": "DPA Story Ad Position 1",
"ad_account_id": "82225ba6-7559-4000-9663-bace8adff5f2",
"type": "WEB_VIEW",
"packaging_status": "SUCCESS",
"review_status": "PENDING_REVIEW",
"shareable": true,
"headline": "Tunneling Tools",
"brand_name": "Badger Tunneling",
"call_to_action": "SHOP_NOW",
"render_type": "DYNAMIC",
"dynamic_render_properties": {
"dynamic_template_id": "09d8d60b-1d05-423a-8d52-c2f52cf2c7dc",
"product_set_id": "10e7d339-0ff1-434a-996a-94d34918c948"
},
"top_snap_crop_position": "MIDDLE",
"ad_product": "SNAP_AD"
}
},
{
"sub_request_status": "SUCCESS",
"creative": {
"id": "0ed1c7b0-4bfc-49cd-8037-0e20174ae51a",
"updated_at": "2021-06-24T11:58:49.364Z",
"created_at": "2021-06-24T11:58:49.364Z",
"name": "DPA Story Ad Position 2",
"ad_account_id": "82225ba6-7559-4000-9663-bace8adff5f2",
"type": "WEB_VIEW",
"packaging_status": "SUCCESS",
"review_status": "PENDING_REVIEW",
"shareable": true,
"headline": "Tunneling Tools",
"brand_name": "Badger Tunneling",
"call_to_action": "SHOP_NOW",
"render_type": "DYNAMIC",
"dynamic_render_properties": {
"dynamic_template_id": "09d8d60b-1d05-423a-8d52-c2f52cf2c7dc",
"product_set_id": "10e7d339-0ff1-434a-996a-94d34918c948"
},
"top_snap_crop_position": "MIDDLE",
"ad_product": "SNAP_AD"
}
}
]
}
HTTP Request
POST https://adsapi.snapchat.com/v1/{ad_account_id}/creatives
Dynamic Creative Parameters
Attribute | Description | Required | Possible Values |
---|---|---|---|
name | Creative Name | R | |
ad_account_id | Ad Account ID | R | |
type | Requires corresponding attribute in the product feed | R | WEB_VIEW, APP_INSTALL, DEEP_LINK |
headline | Max 34 characters with spaces | R | |
brand_name | Max 25 characters with spaces | R | |
shareable | O | true (default), false | |
call_to_action | As per the Creative type and Call to action mapping | R | |
render_type | R | DYNAMIC | |
dynamic_render_properties.dynamic_template_id | Must match Dynamic Template ID set on Composite creative | R | |
dynamic_render_properties.product_set_id | Must match Product Set ID set at Ad Squad level | R |
Non-Dynamic Creative Parameters
When creating a Story Ad you have the option of including one non-dynamic Creative in the story, this Creative can be of the types APP_INSTALL, WEB_VIEW or DEEP_LINK and should match the Dynamic Creatives type.
The creation of the non-dynamic Snap follows the regular creation of a Snap Ad with the corresponding attachment APP_INSTALL, WEB_VIEW and DEEP_LINK.
Composite Creative
The Composite creative contains information about the Tile (Preview Creative) and the Individual Snaps (Dynamic Creatives).
- The
preview_creative_id
attribute holds information about the Preview Creative, the Preview Creative is optional but required if the Ad is to serve in theFEED
position - see available snapchat_positions. - The
creative_ids
attribute withincomposite_properties
holds information about the Dynamic Creatives. - The
creative_ids
is an array which can consist of 1 non-Dynamic Creative and 10 Dynamic Creatives or just 10 Dynamic Creatives - If you use the combination of 1 non-Dynamic + 10 Dynamic Creatives, the non-dynamic Creative needs to be of one of the types APP_INSTALL, WEB_VIEW or DEEP_LINK.
The headline
and brand_name
attributes on the Composite Creative are required but not used.
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"creatives":[{"name":"DPA Story Ad - Badger Tunneling Equipment","ad_account_id":"22225ba6-7559-4000-9663-bace8adff5f2","type":"COMPOSITE","headline":"Tunneling Tools","brand_name":"Badger Tunneling","render_type":"DYNAMIC","dynamic_render_properties":{"dynamic_template_id":"09d8d60b-1d05-423a-8d52-c2f52cf2c7dc","product_set_id":"10e7d339-0ff1-434a-996a-94d34918c948"},"composite_properties":{"creative_ids":["39283f04-3f1e-4c3a-89a7-2a8b7e15a58b","023ef23d-f3c9-4be1-a3fc-ec8dd76c6c88","b14f7e15-1c1f-4675-8c6d-0c8634bc9f58","d4b33aeb-1c8a-4a64-b46f-b3dd2c1dc208","aa982224-d78d-4400-8113-ff63cb309988","8fdb61d8-360e-4093-b6eb-a1d8f7bd45b8","abfdefb8-79a2-4b28-8de7-db4307c04948","a35c610b-75bf-40fc-87f3-08d82dec3108","5acecee9-ad03-4867-a319-e6dcb13b65d8","c75af576-1210-4a12-b9c1-7f2f6be71da8","1dae3e3e-75c7-4602-b9fa-05f98dbd7bf8"]},"preview_creative_id":"5a63e6bd-6641-4d43-b4f8-484518f6d0e8"}]}'
https://adsapi.snapchat.com/v1/adaccounts/82225ba6-7559-4000-9663-bace8adff5f2/creatives
{
"request_status": "SUCCESS",
"request_id": "60d46ed500ff067b3ef470a1250001737e616473617069736300016275696c642d63616365343036622d312d3435362d320001014b",
"creatives": [
{
"sub_request_status": "SUCCESS",
"creative": {
"id": "4dba4e6e-fd3a-4fe7-aff9-0d18ba82927b",
"updated_at": "2021-06-24T11:39:02.144Z",
"created_at": "2021-06-24T11:39:02.144Z",
"name": "DPA Story Ad - Badger Tunneling Equipment",
"ad_account_id": "22225ba6-7559-4000-9663-bace8adff5f2",
"type": "COMPOSITE",
"packaging_status": "SUCCESS",
"review_status": "PENDING_REVIEW",
"shareable": true,
"headline": "Tunneling Tools",
"brand_name": "Badger Tunneling",
"render_type": "DYNAMIC",
"dynamic_render_properties": {
"dynamic_template_id": "09d8d60b-1d05-423a-8d52-c2f52cf2c7dc",
"product_set_id": "10e7d339-0ff1-434a-996a-94d34918c948"
},
"top_snap_crop_position": "MIDDLE",
"composite_properties": {
"creative_ids": [
"39283f04-3f1e-4c3a-89a7-2a8b7e15a58b",
"023ef23d-f3c9-4be1-a3fc-ec8dd76c6c88",
"b14f7e15-1c1f-4675-8c6d-0c8634bc9f58",
"d4b33aeb-1c8a-4a64-b46f-b3dd2c1dc208",
"aa982224-d78d-4400-8113-ff63cb309988",
"8fdb61d8-360e-4093-b6eb-a1d8f7bd45b8",
"abfdefb8-79a2-4b28-8de7-db4307c04948",
"a35c610b-75bf-40fc-87f3-08d82dec3108",
"5acecee9-ad03-4867-a319-e6dcb13b65d8",
"c75af576-1210-4a12-b9c1-7f2f6be71da8",
"1dae3e3e-75c7-4602-b9fa-05f98dbd7bf8"
]
},
"ad_product": "SNAP_AD",
"preview_creative_id": "5a63e6bd-6641-4d43-b4f8-484518f6d0e8"
}
}
]
}
HTTP Request
POST https://adsapi.snapchat.com/v1/{ad_account_id}/creatives
Composite Creative Parameters
Attribute | Description | Required | Possible Values |
---|---|---|---|
name | R | ||
ad_account_id | Ad Account ID | R | |
type | Creative type | R | COMPOSITE |
headline | Not used | R | |
brand_name | Not used | R | |
render_type | R | DYNAMIC | |
preview_creative_id | Preview Creative ID | O | |
dynamic_render_properties.dynamic_template_id | Dynamic Template ID | R | |
dynamic_render_properties.product_set_id | Product Set ID | R | |
composite_properties.creative_ids | Array of Creative IDs used in the Story, can be 1 x non-dynamic Creative + 10 x Dynamic Creativesor10 x Dynamic Creatives | R |
Individual Dynamic Snap Ad Creatives
The individual Dynamic Snap Ads that make up the story follow the exact same requirements as Dynamic Snap Ad Creatives.
Ad Squad
The Ad Squad follows the same requirements of an Ad Squad used for Dynamic Product
Ads with the addition of the attribute story_ad_creative_type
, this attribute is
used to determine what type of Dynamic Creatives are used within the story.
Ad Squad Additional Parameter
Attribute | Description | Required | Possible Values |
---|---|---|---|
story_ad_creative_type | Indicates the type of Creatives used within the Story | R | APP_INSTALL, WEB_VIEW, DEEP_LINK |
Ad
The Ad entity links the Creative and the Ad Squad together, the type
and render_type
needs to use the values specified in the table
below, the only attribute that differs from Dynamic Product Ads is the type
attribute which needs to be set to the value STORY.
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"ads":[{"name":"Dynamic Story Ad - Tunneling equipment","ad_squad_id":"54d79fbc-8ada-47cc-ae03-c044df05db3c","creative_id":"3f72ffee-5a3e-4d59-9893-2885dd983bea","status":"ACTIVE","type":"STORY","render_type":"DYNAMIC"}]}'
https://adsapi.snapchat.com/v1/adsquads/54d79fbc-8ada-47cc-ae03-c044df05db3c/ads
{
"request_status": "SUCCESS",
"request_id": "60d4765600ff0f3dbb82dac5e60001737e616473617069736300016275696c642d63616365343036622d312d3435362d3200010112",
"ads": [
{
"sub_request_status": "SUCCESS",
"ad": {
"id": "3aa9cf43-661e-45ad-a593-cc8e1daabe3a",
"updated_at": "2021-06-24T12:11:04.612Z",
"created_at": "2021-06-24T12:11:04.612Z",
"name": "Dynamic Story Ad - Tunneling equipment",
"ad_squad_id": "54d79fbc-8ada-47cc-ae03-c044df05db3c",
"creative_id": "3f72ffee-5a3e-4d59-9893-2885dd983bea",
"status": "ACTIVE",
"type": "STORY",
"render_type": "DYNAMIC",
"review_status": "PENDING",
"review_status_reasons": [],
"delivery_status": [
"INVALID_PENDING_REVIEW_STATUS",
"INVALID_EFFECTIVE_INVALID"
]
}
}
]
}
HTTP Request
POST https://adsapi.snapchat.com/v1/adsquads/{ad_squad_id}/ads
Attribute | Description | Required | Possible Values |
---|---|---|---|
name | Ad name | R | |
ad_squad_id | Ad squad ID | R | |
creative_id | Creative ID | R | |
status | Ad status | R | ACTIVE, PAUSED |
type | Ad type | R | STORY |
render_type | Rendering type | R | DYNAMIC |