Create Smart+ Catalog Ads with Website and App Optimization
This article walks you through the steps to create Smart+ Catalog Ads with Website and App Optimization.
Prerequisite
- Creating Smart+ Catalog Ads using hotel, flight, destination, or entertainment catalogs are currently separate allowlist-only features. If you would like to access them, contact your TikTok representative. You need to apply for a separate allowlist for each catalog type to be used in Smart+ Catalog Ads.
- Creating Smart+ Catalog Ads with Website and App Optimization (with
sales_destinationset toWEB_AND_APP) is currently an allowlist-only feature. If you would like to access it, please contact your TikTok representative. - Creating Smart+ Catalog Ads requires setting up an E-commerce, a hotel, a flight, a destination, or an entertainment catalog in your Business Center first.
To set up the catalog: -
- Create an E-commerce, a hotel, a flight, a destination, or an entertainment catalog using /catalog/create/.
-
- Upload products to the catalog using /catalog/product/upload/ (JSON schema), /catalog/product/file/ (CSV feed template), or /catalog/feed/create/(online data feed schedule).
-
- Check the product handling results using /catalog/product/log/.
Pass in thefeed_log_idobtained from Step ii. If the fielderror_affected_productsin the response is not null, examine the issue details and return to Step ii to reupload the product.
- Check the product handling results using /catalog/product/log/.
-
- (Optional) Create a product set using /catalog/set/create/.
If you want to have products selected from a product set, creating a product set is necessary. Otherwise, you can skip this step.
- (Optional) Create a product set using /catalog/set/create/.
-
- (Optional) Invite members to Business Center and grant the admin permission using /bc/member/invite/.
You can also chooseadvertiser_rolethat you want to assign to the members invited.
- (Optional) Invite members to Business Center and grant the admin permission using /bc/member/invite/.
-
- (Optional) Share a catalog with members and grant catalog management access using /bc/asset/assign/.
Make sure to specifyCATALOGin theasset_typefield andADMINin thecatalog_rolefield.
- (Optional) Share a catalog with members and grant catalog management access using /bc/asset/assign/.
For all catalog APIs, see here.
Steps
Note that the following requirements must be met. To find a complete list of parameters, see /campaign/spc/create/.
Note
Smart+ Catalog ad groups cannot be used in /split_test/create/ to create split test groups.
| Setting | Requirement | Parameter | How to configure the parameter |
|---|---|---|---|
| Advertising objective | Sales | virtual_objective_type |
SALES |
| Sales destination | Website and app | objective_type |
WEB_CONVERSIONS |
sales_destination |
WEB_AND_APP |
||
| Smart+ Campaign | Smart+ Campaign | spc_type |
WEB_ALL_IN_ONE |
| iOS 14 Dedicated Campaign | Disabled | campaign_type |
REGULAR_CAMPAIGN or not passed. |
app_id |
Not passed | ||
campaign_app_profile_page_state |
Not passed | ||
| Campaign name | Specify a valid name | campaign_name |
Pass a valid value |
| Special ad categories (Optional) | Enabled or disabled Note: This setting is only supported for advertisers who are registered in the US or Canada. |
special_industries |
Pass valid values or not passed |
| Campaign Budget Optimization (CBO) | N/A CBO is enabled by default for Smart+ Web Campaigns. |
N/A | N/A Note: If you retrieve Smart+ Web Campaigns via /campaign/get/, the returned |
| Product source details · Use Catalog |
Enabled with an E-commerce, a hotel, a flight, a destination, or an entertainment catalog with at least two approved products | web_all_in_one_catalog_status |
OPEN |
product_source |
CATALOG |
||
catalog_idcatalog_authorized_bc_id |
Pass valid values. The catalog ( catalog_id) needs to have at least two approved products. You can verify this by checking the value of approved returned from /catalog/overview/, which should be at least 2.To obtain E-commerce, hotel, flight, destination, or entertainment catalogs within a Business Center, use /catalog/get/. The catalog_type should be ECOM, HOTEL, FLIGHT, DESTINATION, or ENTERTAINMENT.To learn about how to create an E-commerce, a hotel, a flight, a destination, or an entertainment catalog, see Prerequisite. |
||
| Product source details · Products |
Any of the following options:
Note: When you select a destination catalog or an entertainment catalog, this option is not supported. |
product_specific_typeproduct_set_idproduct_ids |
Set product_specific_type to ALL, PRODUCT_SET or CUSTOMIZED_PRODUCTS.
|
| Optimization location · iOS & App |
Specify any of the following:
|
app_config |
Specify any of the following:
app_id. |
app_id |
Pass valid values | ||
| Optimization goal | Any of the following types:
|
optimization_goal |
Any of the following values:
|
| Optimization location · Web data connection |
Specify a valid Pixel | pixel_id |
Specify a valid value To obtain the list of Pixels within your ad account, use /pixel/list/. |
promotion_type |
WEBSITE |
||
| Optimization event | Specify a valid optimization event
|
optimization_event |
Specify a valid value. Note: When
|
| Bid Strategy |
|
bid_typebid_priceconversion_bid_pricedeep_bid_typeroas_bid |
|
| Attribution settings | Select from the supported attribution setting options for the specific scenario. |
|
To learn about the supported attribution setting options for different scenarios, see Attribution window and event count - Website conversions. |
| Billing event | oCPM | billing_event |
OCPM |
| Budget mode | Dynamic daily budget | budget_mode |
BUDGET_MODE_DYNAMIC_DAILY_BUDGET |
| Schedule type | Any of the following types:
|
schedule_typeschedule_start_timeschedule_end_time |
|
| Dayparting (Optional) | Any of the following types:
|
dayparting |
Any of the following configurations:
|
| Audience targeting · Location |
The location should match or be the subset of the targeting location of your catalog. | location_ids or zipcode_ids |
Pass IDs of locations that match or are a subset of the targeting location of catalog_id.To obtain the targeting location of a catalog, use /catalog/get/ and check the returned country. |
| Audience targeting · Minimum age |
Any of the following types:
|
spc_audience_age |
Any of the following values:
|
exclude_age_under_eighteen |
true |
||
| Audience targeting · Languages (Optional) |
Enabled or disabled | languages |
Pass valid values or not passed |
| Audience targeting · Gender (Optional) |
Supported with allowlist Note: Gender targeting in Smart+ Campaigns is currently an allowlist-only feature. If you would like to access it, please contact your TikTok representative. |
gender |
Pass valid values or not passed |
| Audience targeting · Exclude audience (Optional) |
Enabled or disabled | excluded_audience_ids |
Pass valid values or not passed |
| Placement | TikTok placement including search result or Automatic placement | placement_typeplacements |
Not passed Note: Automated placement selection is a key feature of Smart+ Campaigns. The system will automatically configure placements based on your other settings and select high-quality traffic from various placements to deliver better results. If provided, the parameters |
| User comment (Optional) | Enabled or disabled | comment_disabled |
Pass valid values or not passed |
| Video download (Optional) | Enabled or disabled | share_disabled |
Pass valid values or not passed |
| Video sharing (Optional) | Enabled or disabled | video_download_disabled |
Pass valid values or not passed |
| Pangle block list (Optional) | Enabled or disabled | blocked_pangle_app_ids |
Pass valid values or not passed |
| Brand safety and suitability | N/A These settings only apply to TikTok in-feed ads. Any previous account-level settings in the brand safety hub will apply to your campaign. |
N/A | Any previous account-level settings in the Brand Safety Hub will apply to your Smart+ Campaign. To set the Brand Safety Hub settings of an ad account first, use /tiktok_inventory_filters/update/. |
| Destination | Website | N/A | N/A |
| Deeplink | Enabled with a custom deeplink | landing_page_url |
Specify a deeplink. The deeplink format can be Apple’s universal link or Android App Link starting with http:// or https://. |
| URL parameters (Optional) | Enabled or disabled | utm_params |
Specify valid values or not specified You can manually add URL parameters to the custom link by directly setting landing_page_url to a URL that already includes URL parameters.
|
| Identity | Any of the following options:
|
identity_type |
Any of the following values:
Note:
|
identity_id |
Pass a valid value To get the list of identities under your ad account, use /identity/get/. |
||
identity_authorized_bc_id |
Pass a valid value when identity_type is BC_AUTH_TT |
||
| Ad creative · Auto-selection of creatives from your catalog |
Any of the following options:
|
catalog_creative_togglevideo_infoimage_infomusic_infotitle_listtiktok_item_id |
Note: |
| Interactive add-ons · Auto-selection of interactive add-ons (Optional) |
Any of the following options:
|
automatic_add_on_enabledcard_list |
If the single video or catalog video ad format is available, you can either enable (recommended) or disable auto-selection of interactive add-ons in the generated ads.
Note: When you specify an E-commerce catalog through |
| Call to action | Any of the following options:
|
call_to_action_idcall_to_action_list |
|
| Disclaimer (Optional) | Disabled or enabled | disclaimer_info |
Not specified or specify valid values |
| Third-party tracking settings · Impression tracking URL for iOS (Optional) |
Disabled or enabled | app_idapp_typeimpression_tracking_url |
Any of the following configurations:
|
| Third-party tracking settings · Click tracking URL for iOS (Optional) |
Disabled or enabled | app_idapp_typeclick_tracking_url |
Any of the following configurations:
|
| Third-party tracking settings · Impression tracking URL for Android (Optional) |
Disabled or enabled | app_idapp_typeimpression_tracking_url |
Any of the following configurations:
|
| Third-party tracking settings · Click tracking URL for Android (Optional) |
Disabled or enabled | app_idapp_typeclick_tracking_url |
Any of the following configurations:
|
List of values for optimization_event for Smart+ Catalog Ads
The following tables list the events supported for Smart+ Catalog Ads with Website and App Optimization.
| Event name{20%} | <code>optimization_event</code> value{25%} | Corresponding Pixel event<br>(<code>optimization_event</code>){20%} | Corresponding app event<br>(<code>optimization_event</code> or <code>secondary_optimization_event</code>){35%} |
|---|---|---|---|
| Add payment info | `ADD_BILLING` | `ADD_BILLING` | `ADD_PAYMENT_INFO` |
| Add to Cart | `ON_WEB_CART` | `ON_WEB_CART` | `IN_APP_CART` |
| Add to wishlist | `ON_WEB_ADD_TO_WISHLIST` | `ON_WEB_ADD_TO_WISHLIST` | `ADD_TO_WISHLIST` |
| Initiate Checkout/Checkout | `INITIATE_ORDER` | `INITIATE_ORDER` | `IN_APP_ORDER` |
| Purchase | `SHOPPING` | `SHOPPING` | `ACTIVE_PAY` |
| Search | `ON_WEB_SEARCH` | `ON_WEB_SEARCH` | `SEARCH` |
| Subscribe | `ON_WEB_SUBSCRIBE` | `ON_WEB_SUBSCRIBE` | `SUBSCRIBE` |
| View Content | `ON_WEB_DETAIL` | `ON_WEB_DETAIL` | `IN_APP_DETAIL_UV` |
Customize the ad format combinations in Smart+ Catalog Ads
If you enable auto-selection of catalog creatives (catalog_creative_toggle is true), the system will automatically create ads using combinations of three possible formats: catalog carousel, catalog video, and single video.
The possible ad format combinations for your Smart+ Catalog Ads are illustrated in the following table.
| Is the catalog carousel format available? {20%}| Is the catalog video format available? {20%}| Is the single video format available? {20%}| Ad format combination for your Smart+ Catalog Ads{40%} |
|---|---|---|---|
| ✅ | ❌ | ❌ | Catalog carousel only |
| ✅ | ❌ | ✅ | Catalog carousel and single video |
| ✅ | ✅ | ❌ | Catalog carousel and catalog video |
| ✅ | ✅ | ✅ | Catalog carousel, catalog video, and single video |
To ensure certain ad formats are available in Smart+ Catalog Ads, follow the instructions in the following table.
| Ad format | Ad format description | How to ensure the ad format is available | How to configure the parameters |
|---|---|---|---|
| catalog carousel | Display 2–20 products in a slideshow format. This format will showcase product images of up to 20 products from your catalog at a time | The catalog needs to contain at least two images supported in Catalog Carousel Ads. | Ensure that the catalog (catalog_id) contains at least two approved products. You can verify this by checking the value of approved returned from /catalog/overview/, which should be at least two.
|
| Specify a piece of music supported in Catalog Carousel Ads | Pass one music ID that is valid for use in Catalog Carousel Ads via music_info.To obtain a valid music ID, you can use any of the following methods:
|
||
| catalog video | Generate a dynamic video based on information from the product catalog | The catalog needs to be bound to at least one video template or you need to configure a video URL for each catalog product. The system will automatically select one of your video templates for each catalog product to generate the corresponding catalog video or use the video URL for the catalog product. |
Ensure that at least one video template is bound to your catalog (catalog_id) or a video URL (video_url) has been configured for each catalog product.
|
| single video | Use specified video creatives to promote your products | Specify additional videos | Specify one to 30 videos (video_info) with cover images (image_info) and one to five ad texts (title_list). |
Example
Request
(code http)
curl --location --request POST 'https://business-api.tiktok.com/open_api/v1.3/campaign/spc/create/' \
--header 'Access-Token: {{AccessToken}}' \
--header 'Content-Type: application/json' \
--data '{
"advertiser_id": "{{advertiser_id}}",
"virtual_objective_type": "SALES",
"objective_type": "WEB_CONVERSIONS",
"sales_destination": "WEB_AND_APP",
"spc_type": "WEB_ALL_IN_ONE",
"campaign_name": "{{campaign_name}}",
"web_all_in_one_catalog_status": "OPEN",
"product_source": "CATALOG",
"catalog_id": "{{catalog_id}}",
"catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
"product_specific_type": "ALL",
"app_config": [
{
"app_id": "{{app_id}}"
},
{
"app_id": "{{app_id}}"
}
],
"optimization_goal": "CONVERT",
"pixel_id": "{{pixel_id}}",
"promotion_type": "WEBSITE",
"optimization_event": "SHOPPING",
"bid_type": "BID_TYPE_CUSTOM",
"conversion_bid_price": {{conversion_bid_price}},
"billing_event": "OCPM",
"budget_mode": "BUDGET_MODE_DYNAMIC_DAILY_BUDGET",
"budget": {{budget}},
"schedule_type": "SCHEDULE_START_END",
"schedule_start_time": "{{schedule_start_time}}",
"schedule_end_time": "{{schedule_end_time}}",
"location_ids": [
"1880251"
],
"spc_audience_age": "18+",
"exclude_age_under_eighteen": true,
"landing_page_urls": [
{
"landing_page_url": "{{landing_page_url}}"
}
],
"catalog_creative_toggle": true,
"identity_id": "{{identity_id}}",
"identity_type": "CUSTOMIZED_USER",
"media_info_list": [
{
"media_info": {
"music_info": {
"music_id": "{{music_id}}"
}
}
}
],
"title_list": [
{
"title": "{{title}}"
}
],
"automatic_add_on_enabled": true,
"call_to_action_list": [
{
"call_to_action": "LEARN_MORE"
}
]
}'
(/code)
Response
(code Success-Response http)
HTTPS/1.1 200 OK
{
"code": 0,
"message": "OK",
"request_id": "{{request_id}}",
"data": {
"roas_bid": null,
"app_download_url": null,
"media_info_list": [
{
"media_info": {
"aigc_disclosure_type": null,
"identity_type": "CUSTOMIZED_USER",
"image_info": null,
"tiktok_item_id": null,
"identity_authorized_bc_id": "0",
"music_info": {
"music_id": "{{music_id}}"
},
"identity_id": "{{identity_id}}",
"video_info": null
},
"ad_material_id": "{{ad_material_id}}",
"material_operation_status": "ENABLE"
}
],
"call_to_action_id": null,
"title_list": [
{
"title": "{{title}}"
}
],
"campaign_id": "{{campaign_id}}",
"app_promotion_type": null,
"bid_price": null,
"tracking_app_id": null,
"create_time": "{{create_time}}",
"deep_funnel_optimization_status": null,
"identity_type": "CUSTOMIZED_USER",
"utm_params": null,
"sales_destination": "WEB_AND_APP",
"app_id": null,
"spc_audience_age": "18+",
"disable_skan_campaign": null,
"identity_id": "{{identity_id}}",
"click_tracking_url": null,
"budget": {{budget}},
"bid_align_type": null,
"schedule_end_time": "{{schedule_end_time}}",
"deep_funnel_event_source": null,
"product_specific_type": "ALL",
"pixel_id": "{{pixel_id}}",
"adgroup_secondary_status": "ADVERTISER_ACCOUNT_PUNISH",
"deeplink": "",
"click_attribution_window": "SEVEN_DAYS",
"virtual_objective_type": "SALES",
"is_advanced_dedicated_campaign": false,
"budget_mode": "BUDGET_MODE_DYNAMIC_DAILY_BUDGET",
"deep_funnel_event_source_id": null,
"exclude_age_under_eighteen": true,
"product_ids": null,
"optimization_event": "SHOPPING",
"engaged_view_attribution_window": "ONE_DAY",
"promotion_type": "WEBSITE",
"landing_page_urls": [
{
"tiktok_item_id": null,
"landing_page_url": "{{landing_page_url}}",
"video_id": null
}
],
"deep_funnel_optimization_event": null,
"carousel_image_labels": null,
"automatic_add_on_enabled": true,
"carousel_image_index": null,
"app_type": null,
"bid_type": "BID_TYPE_CUSTOM",
"advertiser_id": "{{advertiser_id}}",
"attribution_event_count": "EVERY",
"app_name": null,
"modify_time": "{{modify_time}}",
"comment_disabled": false,
"campaign_type": "REGULAR_CAMPAIGN",
"call_to_action_list": [
{
"call_to_action": "LEARN_MORE"
}
],
"shopping_ads_video_package_id": "",
"impression_tracking_url": null,
"campaign_app_profile_page_state": null,
"product_source": "CATALOG",
"is_smart_performance_campaign": true,
"excluded_audience_ids": null,
"product_set_id": null,
"promotion_target_type": null,
"spc_type": "WEB_ALL_IN_ONE",
"disclaimer_info": null,
"zipcode_ids": null,
"app_tracking_info_list": [
{
"app_type": "APP_ANDROID",
"app_id": "{{app_id}}",
"click_tracking_url": "{{click_tracking_url}}",
"impression_tracking_url": "{{impression_tracking_url}}"
},
{
"app_type": "APP_IOS",
"app_id": "{{app_id}}",
"click_tracking_url": "",
"impression_tracking_url": ""
}
],
"share_disabled": false,
"gender": "GENDER_UNLIMITED",
"scheduled_budget": 0,
"vbo_window": null,
"card_list": [
{
"card_id": "{{card_id}}"
}
],
"shopping_ads_fallback_type": null,
"view_attribution_window": "ONE_DAY",
"app_config": [
{
"app_id": "{{app_id}}"
},
{
"app_id": "{{app_id}}"
}
],
"placements": [
"PLACEMENT_TIKTOK",
"PLACEMENT_PANGLE"
],
"deeplink_type": null,
"catalog_creative_toggle": true,
"brand_safety_type": "EXPANDED_INVENTORY",
"schedule_type": "SCHEDULE_START_END",
"objective_type": "WEB_CONVERSIONS",
"placement_type": "PLACEMENT_TYPE_AUTOMATIC",
"billing_event": "OCPM",
"catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
"campaign_name": "{{campaign_name}}",
"blocked_pangle_app_ids": null,
"product_info": null,
"languages": [],
"skip_learning_phase": true,
"conversion_bid_price": 1.2,
"operation_status": "ENABLE",
"special_industries": null,
"campaign_secondary_status": "ADVERTISER_ACCOUNT_PUNISH",
"deep_bid_type": null,
"page_list": null,
"video_download_disabled": false,
"schedule_start_time": "{{schedule_start_time}}",
"web_all_in_one_catalog_status": "OPEN",
"catalog_id": "{{catalog_id}}",
"optimization_goal": "CONVERT",
"dayparting": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"location_ids": [
"1880251"
],
"promotion_website_type": "UNSET"
}
}
(/code)