狠狠撸

狠狠撸Share a Scribd company logo
Marvin Kwok & Yu LI
Solutions Engineer
APAC
动态产物广告
Dynamic Product Ads
大纲
是什么?为什么?
实现指南
查看广告表现
故障排除
参考资料
2
https://developers.intern.facebook.com/ads/blog/post/2015/02/17/
introducing-dynamic-product-ads
是什么?为什么?
问题怎样来?
您的公司
经营电子商务
拥有自己的网站 桌面/移动
数量庞大的产物库
访问您网站的用户
一些仅是浏览
一些会加入购物车
一些甚至购买
4
现在问题来了?
怎样针对网站用户行
为来进行广告再营销?
5
Gadget lovers
Frequent travelers Fashion purchasers
动态产物广告
Dynamic Product Ads
显示正确的产物给正确的受众
Display the right products to the right audience
我要买鞋!
我要买包包! 我要去马尔代夫!
为什么要用DPA?
6
传统FB再营销解决方案
1. 通过Pixel或者App Events追踪记录
用户
2. 选择一种产物
3. 选择创建该产物的WCA
4. 创建广告,针对产物的WCA进行营
销
5. 广告运行中检查效果,随时调整
6. 对每一个潜在产物这么做一次
DPA
1. 创建所有产物的目录
2. 通过Pixel或者App Events追踪记录
用户
3. 创建广告,自动针对用户行为再营
销
4. FB将通过机器学习的方式实时对广
告优化,无需客户参与
V.S.
动态产物广告 DPA
DPA是Facebook的再营销解决方案
形式:信息流广告 News Feed 与右侧边栏广告 RHS
跨设备的追踪能力
创建方式
通过Power Editor
或者通过Marketing API,拥有更多高级功能,以及自动化可能性
7
介绍视频
https://www.facebook.com/business/a/
online-sales/dynamic-product-ads
DPA
单件产物模版
9
DPA
多件产物模版
10
DPA
广告样例
单件产物
11
DPA
广告样例
多件产物
12
https://developers.facebook.com/docs/marketing-api/dynamic-product-ads
DPA系统架构
DPA系统架构
14
Business Manager
商品目录 Product Catalog
商品集
Product Set
商品
Product
商品集
Product Set
商品
Product
广告账户 Ad Account
广告活动 Ad Campaign
广告组 Ad Set
广告 AdGroup
广告模版
AdTemplate
广告 AdGroup
广告模版
AdTemplate
商品受众
Product
Audience
Custom
Audience Pixel
ViewContent
Event
AddToCart
Event
Purchase
Event
怎样填充商品目录 product catalog
通过商品Feed product feed
https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-
catalog#createfeed
文件为TSV (Tab Separated File) 或者 XML 格式
https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-catalog
格式信息
15
商品Feed
可以放置于FTP服务器或者Web服务器上
可以设置为定时更新,最短周期为每日
样例Feed文件 TSV格式
http://dpatest.herokuapp.com/dpa_feed_for_demo_mobile.tsv
Feed中的图片通过URL指定,Facebook将缓存它们
格式与MPA广告的格式要求一致(1:1比例,最小458x458 px)
https://developers.facebook.com/docs/marketing-api/guides/multi-product-ads#spec
16
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
<title>Test Store</title>
<link rel="self" href="http://www.example.com"/>
<entry>
<g:id>DB_1</g:id>
<g:title>Dog Bowl In Blue</g:title>
<g:description>Solid plastic Dog Bowl in marine blue color</g:description>
<g:link>http://www.example.com/bowls/db-1.html</g:link>
<g:image_link>http://images.example.com/DB_1.png</g:image_link>
<g:brand>Example</g:brand>
<g:condition>new</g:condition>
<g:availability>in stock</g:availability>
<g:price>9.99 GBP</g:price>
<g:shipping>
<g:country>UK</g:country>
<g:service>Standard</g:service>
<g:price>4.95 GBP</g:price>
</g:shipping>
<g:google_product_category>Animals &gt; Pet Supplies</g:google_product_category>
<applink property="ios_url" content="example-ios://electronic" />
<applink property="ios_app_store_id" content="42" />
<applink property="ios_app_name" content="Electronic Example iOS" />
<applink property="iphone_url" content="example-iphone://electronic" />
<applink property="iphone_app_store_id" content="43" />
<applink property="iphone_app_name" content="Electronic Example iPhone" />
<applink property="ipad_url" content="example-ipad://electronic" />
<applink property="ipad_app_store_id" content="44" />
<applink property="ipad_app_name" content="Electronic Example iPad" />
<applink property="android_url" content="example-android://electronic" />
<applink property="android_package" content="com.electronic" />
<applink property="android_class" content="com.electronic.Example" />
<applink property="android_app_name" content="Electronic Example Android" />
<applink property="windows_phone_url" content="example-windows://electronic" />
<applink property="windows_phone_app_id" content="64ec0d1b-5b3b-4c77-a86b-5e12d465edc0" />
<applink property="windows_phone_app_name" content="Electronic Example Windows" />
</entry>
</feed>
17
样例Feed文件 Google格式
商品目录 Product Catalog ,商品集 Product Set 与商品Feed
Product Feed 的关系
18
Product Catalog
Product
Set
Product
Product
Set
Product
Product FeedProduct FeedProduct Feed归并
影响广告投放 不影响广告投放
https://developers.intern.facebook.com/ads/blog/post/2015/02/17/
introducing-dynamic-product-ads
实现指南
必要条件
电子商务网站或者App
Facebook Business Manager Account
Facebook Ad Account
属于Facebook Business Manager Account
您业务的Facebook Page
如果需要使用API创建DPA广告,还需要Facebook App
20
案例 1
21
? 用户访问了我的电商网站或者电商
App,他们查看了商品,或者放入了购
物车,但是他们没有结账支付。
? 我们怎样对这些客户再营销?
? 例如,针对过去10天内查看了商品但是未购买的用
户再营销?
实现DPA的步骤
1.创建商品目录,上传商品Feed
2.准备Facebook pixel以及App Event?
向Facebook发送DPA用户行为事件
1.在用户浏览商品时发送"ViewContent"事件
2.在用户添加至购物车时发送"AddToCart"事件
3.在用户结账时发送"Purchase"事件
3.创建DPA广告
22
创建商品目录,上传商品Feed
23
参考链接: https://developers.facebook.com/docs/
marketing-api/dynamic-product-ads/product-catalog/
创建商品目录
24
创建商品目录 cont
25
创建商品目录 cont
26
创建商品Feed
27
指定商品Feed URL,以及定时更新设置
28
创建商品目录,上传商品Feed,完成
29
查看Feed处理产生的错误
30
从网站纪录用户行为:Facebook pixel
31
参考链接: https://developers.facebook.com/docs/marketing-
api/dynamic-product-ads/product-audiences/
准备Facebook pixel cont.
32
准备Facebook pixel cont.
33
准备Facebook pixel cont.
34
准备Facebook pixel cont.
35
将Catalog与Pixel关联
36
将Catalog与Pixel关联 cont
37
定制 Facebook pixel
目的:上报DPA需要的事件
事件"ViewContent"
用户访问特定商品页面时上报
事件"AddToCart"
用户点击加入购物车按钮时上报
事件"Purchase"
用户点击/完成结账时上报
38
概览
39
<!-- Custom Audience Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=/slideshow/dpa-external-cn/57562894/v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','//connect.facebook.net/en_US/fbevents.js');
// Insert Your Custom Audience Pixel ID below.
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'ViewContent', {
content_name: 'Really Fast Running Shoes',
content_category: 'Apparel & Accessories > Shoes',
content_ids: ['1234'],
content_type: 'product',
product_catalog_id: '<catalog_id>',
value: 0.50,
currency: 'USD'
});
</script>
<!-- End Custom Audience Pixel Code -->
fbq('track', 'AddToCart', {
content_ids: ['1234'],
content_type: 'product',
product_catalog_id: '<catalog_id>'
});
fbq('track', 'Purchase', {
content_ids: ['1234'],
content_type: 'product',
product_catalog_id: '<catalog_id>'
});
事件"ViewContent"
40
<!-- Custom Audience Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=/slideshow/dpa-external-cn/57562894/v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','//connect.facebook.net/en_US/fbevents.js');
// Insert Your Custom Audience Pixel ID below.
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'ViewContent', {
content_name: 'Really Fast Running Shoes',
content_category: 'Apparel & Accessories > Shoes',
content_ids: ['1234'],
content_type: 'product',
value: 0.50,
currency: 'USD'
});
</script>
<!-- End Custom Audience Pixel Code -->
事件"AddToCart"
41
<!-- Custom Audience Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=/slideshow/dpa-external-cn/57562894/v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','//connect.facebook.net/en_US/fbevents.js');
// Insert Your Custom Audience Pixel ID below.
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'AddToCart', {
content_ids: ['1234'],
content_type: 'product'
});
</script>
<!-- End Custom Audience Pixel Code -->
事件"Purchase"
42
<!-- Custom Audience Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=/slideshow/dpa-external-cn/57562894/v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','//connect.facebook.net/en_US/fbevents.js');
// Insert Your Custom Audience Pixel ID below.
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'Purchase', {
content_ids: ['1234'],
content_type: 'product'
});
</script>
<!-- End Custom Audience Pixel Code -->
验证Pixel能够正确触发
https://business.facebook.com/ads/retargeting_pixel/debug/?
pixel_id=<your_pixel_id>
43
从App发送用户的行为:App Events
44
https://developers.facebook.com/docs/app-events
将Catalog与App关联
45
将Catalog与App关联 cont
46
定制App Events
目的:从App上报需要的事件
事件"ViewContent"
用户访问特定商品页面时上报
事件"AddToCart"
用户点击加入购物车按钮时上报
事件"Purchase"
用户点击/完成结账时上报
47
事件"ViewContent"
48
[FBSDKAppEvents logEvent:FBSDKAppEventNameViewedContent
valueToSum:54.23
parameters:@{ FBSDKAppEventParameterNameCurrency : @"USD",
FBSDKAppEventParameterNameContentType : @"product",
FBSDKAppEventParameterNameContentID : @"HDFU-8452" } ];
iOS
Android
Bundle parameters = new Bundle();
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, "HDFU-8452");
logger.logEvent(AppEventsConstants.EVENT_NAME_VIEWED_CONTENT,
54.23,
parameters);
事件"AddToCart"
49
[FBSDKAppEvents logEvent:FBSDKAppEventNameAddedToCart
valueToSum:54.23
parameters:@{ FBSDKAppEventParameterNameCurrency : @"USD",
FBSDKAppEventParameterNameContentType : @"product",
FBSDKAppEventParameterNameContentID : @"HDFU-8452" } ];
iOS
Bundle parameters = new Bundle();
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, "HDFU-8452");
logger.logEvent(AppEventsConstants.EVENT_NAME_ADDED_TO_CART,
54.23,
parameters);
Android
事件"Purchase"
50
[FBSDKAppEvents logPurchase:4.32
currency:@"USD"
parameters: @{ FBSDKAppEventParameterNameContentID : @"HDFU-8452" } ];
iOS
Android
Bundle parameters = new Bundle();
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, "HDFU-8452");
logger.logEvent(AppEventsConstants.EVENT_NAME_PURCHASED,
54.23,
parameters);
验证App Events安装正确
51
https://developers.facebook.com/tools/app-ads-helper/
App Events Tester (in the end of the page)
创建DPA广告
52
参考链接:https://developers.facebook.com/docs/
marketing-api/dynamic-product-ads/ads-management/
创建广告活动
53
创建广告活动:指定Objective
54
创建广告组
55
创建广告组
56
创建广告组:指定商品集
57
创建广告组:创建商品集
58
创建广告组:创建商品集
59
创建广告组:选择创建的商品集
60
创建广告组:选择受众用户行为
61
创建广告
62
创建广告
63
创建广告:指定广告模版
64
广告模版各项目的显示位置
65
Facebook Page in Ad creation
Text in Ad creation
Description in Ad Creation
Headline in Ad Creation (255)
Website URL in Ad Creation
上传创建的广告
66
上传创建的广告
67
68
案例 2
? 是否可以对客户进行再营销同时显示
其它相关品类的商品?
实现要点
为不同的商品品类创建不同的商品集
例如,商品集A是时装品类,商品集B是小配件品类,商品集C是鞋包品类
针对不同的商品集创建广告组,然后将这些广告组设置为针对不同的受众 通过
Custom Audience,CA
例如
创建广告组1,针对20岁以上的女性,使用商品集A与C
创建广告组2,针对20岁以下的女性,使用商品集A与B
根据受众的不同,不同品类的商品将动态展示
20岁以上的女性客户将看到她喜欢的时装和推荐的鞋包
20岁以下的女性客户将看到她喜欢的时装和推荐的小配件
69
70
案例 3
? 应该如何优化广告出价?
区分受众行为,进行差异竞价
假设有如下两类查看但是未购买的用户
A:过去30日内曾经查看但是未购买
B:过去7日内曾经查看但是未购买
按照如下要点创建DPA广告
创建两个广告组,一个针对A类客户,一个针对B类客户
针对B类客户的广告采用更高的竞价
效果
A,B两类客户都将看到广告,B类将看到竞价更高的广告
B类客户长期未转化时,将自动转入低竞价优化ROI
71
72
案例 4
? 我们的业务是mobile only,可否使用
DPA?
https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-audiences/#setupappevents
可以使用
DPA for mobile
73
DPA for mobile
74
DPA
匹配WCA事件
自动生成广告
转化至网站
DPA for mobile
匹配App Events
自动生成广告
转化至app(通过deep link)
实现要点
75
在app中发送app events
集成Facebook SDK
事件格式类似网站DPA
ViewContent
AddToCart
Purchase
配置正确Deep Link
在产物feed中增加如下的字段:
applink_ios_app_name
applink_ios_url
applink_iphone_app_name
applink_iphone_url
applink_ipad_app_name
applink_ipad_url
applink_android_app_name
applink_android_url
applink_android_package
创建广告时,增加 "applink_treatment"参数
来创建ad creative
通过UI创建广告时"applink_treatment"已经默
认为“deeplink_with_web_fallback”
通过API创建广告示例 Python SDK
76
adcreative = AdCreative(parent_id='act_<AD_ACCOUNT_ID>')
adcreative[AdCreative.Field.object_story_spec] = {
'page_id': <PAGE_ID>,
'template_data': {
'message': 'Come to shop',
'link': <LINK>,
'name': '{{product.name}}',
'description': '{{product.description}}',
'max_product_count': 3
}
}
adcreative[AdCreative.Field.product_set_id] = <PRODUCT_SET_ID>
adcreative['applink_treatment'] = 'deeplink_with_web_fallback' ###!!! for deep linking to work
adcreative.remote_create()
ad = AdGroup(parent_id=my_ad_account_id)
ad[AdGroup.Field.name] = 'Mobile Ad'
ad[AdGroup.Field.campaign_id] = <AD_SET_ID>
ad[AdGroup.Field.creative] = {
'creative_id': adcreative[AdCreative.Field.id]
}
ad[AdGroup.Field.status] = AdGroup.Status.paused
ad.remote_create()
观察广告表现
使用表现数据报表
78
使用表现数据报表:调整观察时间段
79
使用表现数据报表:调整粒度与细分指标
80
81
DPA广告可以按照商品的ID进行细分
使用表现数据报表:自定义报表列
82
使用表现数据报表:调整归因窗口长度
83
故障排除
Validation and TroubleShooting
商品目录调试工具 Product Catalog Debug tool for Ads Debug
https://business.facebook.com/ads/product_catalog/debug/
Pixel调试工具 Pixel Helper Plugin for Chrome
https://developers.facebook.com/docs/ads-for-websites/pixel-troubleshooting
查看Pixel是否触发的工具
https://business.facebook.com/ads/retargeting_pixel/debug/
85
其它参考资料
Dynamic Product Ads:
https://our.intern.facebook.com/intern/wiki/Solutions_Engineering/
Dynamic_Product_Ads
Business Manager:
https://business.facebook.com
Power Editor:
https://business.facebook.com/ads/manage/powereditor
Obtain access token (for API):
https://developers.facebook.com/docs/marketing-api/overview#access_token
86
旧版
Website Custom Audience Pixel
87
概览
88
<script>(function() {
var _fbq = window._fbq || (window._fbq = []);
if (!_fbq.loaded) {
var fbds = document.createElement('script');
fbds.async = true;
fbds.src = /slideshow/dpa-external-cn/57562894/&
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(fbds, s);
_fbq.loaded = true;
}
_fbq.push(['addPixelId', '<PIXEL_ID>']);
})();
window._fbq = window._fbq || [];
window._fbq.push(['track', 'PixelInitialized', {}]);
</script>
<noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/
tr?id=<PIXEL_ID>&amp;ev=PixelInitialized" /></noscript>
window._fbq.push(['track', 'ViewContent', {
content_ids: ['<product_id>'],
content_type: 'product'
}]);
window._fbq.push(['track', 'AddToCart', {
content_ids: ['<product_id>'],
content_type: 'product'
}]);
window._fbq.push(["track", "Purchase", {
content_ids: ['<product_id1>', '<product_id2>'],
content_type: 'product'
}]);
<script>(function() {
var _fbq = window._fbq || (window._fbq = []);
if (!_fbq.loaded) {
var fbds = document.createElement('script');
fbds.async = true;
fbds.src = /slideshow/dpa-external-cn/57562894/&
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(fbds, s);
_fbq.loaded = true;
}
_fbq.push(['addPixelId', '<PIXEL_ID>']);
})();
window._fbq = window._fbq || [];
window._fbq.push(['track', 'ViewContent', {
content_ids: ['<product_id>'],
content_type: 'product'
}]);
</script>
<noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/
tr?
id=<PIXEL_ID>&amp;ev=ViewContent&amp;cd[content_ids]=<product_id>&amp;cd[content_type]=product"
/></noscript>
事件"ViewContent"
89
<script>(function() {
var _fbq = window._fbq || (window._fbq = []);
if (!_fbq.loaded) {
var fbds = document.createElement('script');
fbds.async = true;
fbds.src = /slideshow/dpa-external-cn/57562894/&
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(fbds, s);
_fbq.loaded = true;
}
_fbq.push(['addPixelId', '<PIXEL_ID>']);
})();
window._fbq = window._fbq || [];
window._fbq.push(['track', 'AddToCart', {
content_ids: ['<product_id>'],
content_type: 'product'
}]);
</script>
<noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/
tr?
id=<PIXEL_ID>&amp;ev=AddToCart&amp;cd[content_ids]=<product_id>&amp;cd[content_type]=product" /
></noscript>
事件"AddToCart"
90
<script>(function() {
var _fbq = window._fbq || (window._fbq = []);
if (!_fbq.loaded) {
var fbds = document.createElement('script');
fbds.async = true;
fbds.src = /slideshow/dpa-external-cn/57562894/&
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(fbds, s);
_fbq.loaded = true;
}
_fbq.push(['addPixelId', '<PIXEL_ID>']);
})();
window._fbq = window._fbq || [];
window._fbq.push(['track', 'Purchase', {
content_ids: ['<product_id1>', '<product_id2>'],
content_type: 'product'
}]);
</script>
<noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/
tr?
id=<PIXEL_ID>&amp;ev=AddToCart&amp;cd[content_ids]=<product_id1>&amp;cd[content_ids]=<product_i
d2>&amp;cd[content_type]=product" /></noscript>
事件"Purchase"
91
https://developers.facebook.com/docs/marketing-api

More Related Content

Facebook 动态产物广告