Skip to main content

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;

  1. Preview Creative
  2. Static Creative (Optional)
  3. 10x Dynamic Creatives
  4. Composite Creative
  5. Ad Squad (including product_audiences)
  6. 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 Snapchat
  • logo_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.

AttributeDescriptionRequiredPossible Values
nameMedia nameR
typeMedia TypeRIMAGE
ad_account_idAd Account IDR

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.

AttributeDescriptionRequiredPossible Values
nameMedia nameR
typeMedia TypeRIMAGE
ad_account_idAd Account IDR

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

AttributeDescriptionRequiredPossible Values
nameCreative nameR
ad_account_idAd Account IDR
typeCreative typeRPREVIEW
shareableAllows sharing of the Story Ad on iOS, Android sharing is currently not availableOtrue (default), false
render_typeRSTATIC, DYNAMIC
preview_properties.preview_media_idPreview Media ID, required when render_type is STATICO
preview_properties.logo_media_idLogo Media IDO
preview_properties.preview_headline55 Character limit, emoji unicode characters allowedR
dynamic_render_properties.dynamic_template_idMust match Dynamic Template ID set on the Composite creative, required when render_type is DYNAMICO
dynamic_render_properties.product_set_idMust match Product Set ID set at Ad Squad level, required when render_type is DYNAMICO

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

AttributeDescriptionRequiredPossible Values
nameCreative NameR
ad_account_idAd Account IDR
typeRequires corresponding attribute in the product feedRWEB_VIEW, APP_INSTALL, DEEP_LINK
headlineMax 34 characters with spacesR
brand_nameMax 25 characters with spacesR
shareableOtrue (default), false
call_to_actionAs per the Creative type and Call to action mappingR
render_typeRDYNAMIC
dynamic_render_properties.dynamic_template_idMust match Dynamic Template ID set on Composite creativeR
dynamic_render_properties.product_set_idMust match Product Set ID set at Ad Squad levelR

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 the FEED position - see available snapchat_positions.
  • The creative_ids attribute within composite_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

AttributeDescriptionRequiredPossible Values
nameR
ad_account_idAd Account IDR
typeCreative typeRCOMPOSITE
headlineNot usedR
brand_nameNot usedR
render_typeRDYNAMIC
preview_creative_idPreview Creative IDO
dynamic_render_properties.dynamic_template_idDynamic Template IDR
dynamic_render_properties.product_set_idProduct Set IDR
composite_properties.creative_idsArray of Creative IDs used in the Story, can be 1 x non-dynamic Creative + 10 x Dynamic Creativesor10 x Dynamic CreativesR

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

AttributeDescriptionRequiredPossible Values
story_ad_creative_typeIndicates the type of Creatives used within the StoryRAPP_INSTALL, WEB_VIEW, DEEP_LINK

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

AttributeDescriptionRequiredPossible Values
nameAd nameR
ad_squad_idAd squad IDR
creative_idCreative IDR
statusAd statusRACTIVE, PAUSED
typeAd typeRSTORY
render_typeRendering typeRDYNAMIC
Was this page helpful?
Yes
No