预订方案可提供经过优化的覆盖人数,会对广告的展示频次实施控制,同时帮助您预测广告系列的表现,因此让您能以固定费用规划和购买广告系列。这类似于传统的电视广告购买方式。这是一种专用的高级购买方案,大部分广告主仅在想要高度确保广告能够覆盖特定数量的帐户管理中心帐户时使用这种方案。
预订方案适用于各种广告类型和设备。Meta 的广告定位功能以真实的人为基础,而非以 Cookie 为基础,因此我们能够更加准确地预测覆盖人数并控制广告在不同设备中的展示频次。
CAN_USE_REACH_AND_FREQUENCY
参数。stop_time
必须在预估的 180 天以内。 https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>?fields=rf_spec
发出 GET
API 调用,可查看限制详情。target_spec
中,一次只能设置一个国家/地区。user_os
没有最低 iOS 版本要求,如 iOS_ver_2.0_and_above
。PacingType
。搜索 rf_spec
,了解适用的限制:
名称 | 描述 |
---|---|
数组 | 支持预订方案的国家和地区 |
对象 | 在每个支持的国家/地区中,广告系列的最短投放时长,以天为单位 |
对象 | 在每个支持的国家/地区中,广告系列的最长投放时长,以天为单位 |
对象 | 在每个支持的国家/地区中,预测广告系列可以提前结束的天数 |
对象 | 在每个支持的国家/地区中,对于帐户管理中心帐户覆盖数量的最低要求 |
结果如下所示:
{ "rf_spec": { "min_reach_limits": { "US": 1000000, "CA": 1000000, }, "countries": [ "US", "CA", ], "min_campaign_duration": { "US": 3, "CA": 3, }, "max_campaign_duration": { "US": 30, "CA": 30, }, "max_days_to_finish": { "US": 56, "CA": 56, } } }
预估包含广告根据特定的覆盖人数、频次、受众和预算,在某个日期范围内能够覆盖的帐户管理中心帐户数量。预订预估可帮助您模拟广告系列的总成效,并会根据您的目标、预算、受众、格式和版位、品牌安全、表现目标和频次控制设置进行调整。
支持在预订后编辑预订广告系列。但是,该广告系列一旦投放,便无法编辑或暂停,除非更换广告创意。如果只编辑广告创意,则预估数据不会改变。您可以通过删除该广告系列来取消和停止该系列,但是您将需要重新预订该系列,届时您可能会收到新的千次展示费用和有关该广告系列成效的预估数据。请仅预订您想要投放的广告系列。**如果是进行测试,请将预订限制为最小规模和最短时长;确保取消预订,因为我们为您预留的是真实广告库存。
预估的默认限制如下:
如需获取详情,请指定字段。如要查看一个帐户的所有 reachfrequencyprediction
,请向 https://graph.facebook.com/{API_VERSION}/act_{AD_ACCOUNT_ID}/reachfrequencypredictions?fields={COMMA_SEPERATED_FIELD_LIST}
发出 HTTP GET
请求。
如要根据 reachfrequencyprediction
编号获取所有 reachfrequencyprediction
,请发出 HTTP GET
请求并添加您需要的字段:https://graph.facebook.com/{API_VERSION}/{RF_PREDICTION_ID}?fields={COMMA_SEPERATED_FIELD_LIST}
。
默认情况下,Meta 会返回该编号。如需获取字段详情,请参阅“预订预估”下的“读取”部分。
下方列出了 reachfrequencyprediction
中可能的 status
结果。适用时会显示初始限制,但今后,每个广告帐户或国家/地区的初始限制可能会有所不同:
代码 | 状态 | 描述 |
---|---|---|
1 | SUCCESS | 预估成功 |
2 | PENDING | 预估还在进行中 |
3 | FAIL | 无法覆盖受众。覆盖人数太多或预算太高。 |
4 | FAIL | 预估设置(如时长)无效 |
5 | FAIL |
|
6 | FAIL | 覆盖特定受众的预算或竞价太低 |
7 | FAIL | 广告组投放时长太短 |
8 | FAIL | 广告组投放时长太长 |
9 | FAIL | 广告组的结束日期在未来很久以后 |
10 | FAIL | 未指定频次上限 |
11 | FAIL | 不支持广告版位,如混合使用右边栏屏幕 (RHS) 和动态版位 |
12 | FAIL | 广告组日期问题(开始时间和/或结束时间):开始时间在过去、不是午夜,或不是完整的一天。结束时间在过去、距离开始时间超过 90 天,或未在早上 6 点以后结束。 |
13 | FAIL | 尚不支持目标国家/地区 |
14 | FAIL | 广告组日期包括限制日期 |
15 | FAIL | 库存不足,无法预订。请参阅关于预订预估数据的内容。 |
16 | FAIL | 未达到帐户要求的最少覆盖人数。请参阅关于获取帐户限制的内容 |
17 | FAIL | 此预估可用的实际覆盖人数小于目标国家/地区的最少覆盖人数,对于大部分国家/地区而言,最少覆盖人数通常是 200,000 人。 |
18 | FAIL | 提供的投放时段排期无效。 |
19 | FAIL | 无法达到目标千次展示费用。 |
20 | FAIL | 混合投放的频次上限太低 |
21 | FAIL | 广告库存出现重大变化,导致预估数据不准确。 |
23 | FAIL | 目标国家/地区不支持频次上限间隔。 |
24 | FAIL | 帐户或广告系列版本库下的提升调研对照广告组与预订预估数据不一致。 |
25 | FAIL | 频次上限不能超过广告系列投放的天数。 |
26 | FAILURE_EMPTY_AUDIENCE | 选定的受众为空且无法使用。 |
27 | FAIL | 不允许修改投放中的广告系列。 |
28 | FAIL | 无法修改通过广告订单创建的投放中的广告系列。 |
29 | FAIL | 由于时间限制,无法修改投放中的广告系列。 |
30 | FAIL | 要编辑投放中的预订广告组,请选择高于当前花费的预算。 |
31 | FAIL | 帐户或广告系列版本库中的提升调研将在广告系列开始投放后开始。 |
32 | FAIL | 帐户或广告系列版本库中的提升调研将在广告系列结束投放前结束。 |
35 | FAIL | 无法将预订广告系列的开始时间设为过去时间。 |
36 | FAIL | 请确保预订广告组的投放期超过一天,且广告系列的开始/结束时间有效。 |
37 | FAIL | Audience Network 预订购买类型不支持此目标。 |
39 | FAIL | 所选的版位组合无法与预订购买类型同时使用。 |
40 | FAIL | 预订购买类型不支持定位特定的移动操作系统版本。 |
41 | FAIL | 预订购买类型不支持定位关系网络内用户的好友。 |
42 | FAIL | 仅选择 Audience Network 一个版位时,无法投放预订广告系列。在选择 Audience Network 版位的同时,请再选择 Facebook 动态或 Instagram 动态版位。 |
44 | FAIL | 预订不支持 Facebook 快拍。 |
45 | FAIL | 如要使用 Facebook 快拍版位,请同时选择 Facebook 动态或 Instagram 快拍版位。 |
50 | FAIL | 所选的版位组合无法与预订购买类型同时使用。如要使用预订类型的广告订单购买,请确保目标是视频观看量。另外,如要使用 Facebook 视频插播广告,请选择 Facebook 动态版位。 |
53 | FAIL | 视频插播位仅适用于以下国家的受众:美国、英国、澳大利亚、新西兰、爱尔兰、泰国、墨西哥、秘鲁、法国、德国、阿根廷、哥伦比亚、西班牙、智利、厄瓜多尔、多米尼加共和国、危地马拉、玻利维亚、洪都拉斯、萨尔瓦多、挪威、瑞典、荷兰、比利时、波兰、葡萄牙、丹麦、印度、马来西亚、菲律宾、印度尼西亚和越南。如要继续,请将受众设为仅包含上述国家的用户。 |
60 | FAIL | 如要使用 Facebook Marketplace,请选择 Facebook 动态版位。 |
66 | FAIL | Facebook 右边栏版位不能与其他版位结合使用。 |
69 | FAIL | 如果希望广告展示在 Instagram 的“发现”版块,您还需要选择 Instagram 动态版位。 |
100+ | FATAL | 系统故障,非用户失误。请重试。 |
输入内容时提供预估编号及其数据,以创建新编号并以此作为预订编号,然后将此预订编号附加至广告组中。创建预订会让他人无法使用库存,因此您应该在预订过期之前将其附加至广告组。
如果预订成功,我们将暂时为您保留库存。预订后,您需要在大约一个小时内将广告分配给广告组。
如果超过了预订请求的每小时限制,您将看到以下错误代码和消息:613:对此 API 的调用已超过流量限制。
您可以为广告组预订预估数据,以锁定价格并获得可预测的覆盖人数。通过将 action
设置为 reserve
,在一段固定时间内预订通过 reachfrequencyprediction
确定的受众。您可以使用一个预估编号创建多个预订。例如:
curl \ -F 'action=reserve' \ -F 'rf_prediction_id=<RF_PREDICTION_ID>' \ -F 'access_token=<ACCESS_TOKEN>' \ 'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/reachfrequencypredictions' // Response {"id":9876543210"}
如要根据预估数据预订库存,请向 https://graph.facebook.com/{API_VERSION}/act_{AD_ACCOUNT_ID}/reachfrequencypredictions
发出 POST
API 调用。
对于 reach
、budget
和 impression
,您可以预订 curve_budget_reach
上特定点的预估数据,而非预估覆盖人数/预算的原始元组。使用以下字段:
名称 | 描述 |
---|---|
整数 | 必要。
|
字符串 | 预订和取消的必要项。 选项包括:
|
整数 | 可选。 预订的预估编号或预订编号。新的预订将释放一组预订的受众,并将其用于新的预订。请参阅重复使用预订的受众 |
整数 | 可选。 之前所创建预估的编号。新预估将使用来自特定预估的受众。 注意: |
整数 | 可选。如指定,提供 指定 |
整数 | 可选。如指定,提供 指定 |
整数 | 可选。如指定,提供 您可以覆盖此值。为此,指定 |
Meta 会以异步方式预订预估数据,您应该轮询并检查预估的状态。最初的预估数据状态为 2
(PENDING)。预估完成后,状态为 1
,SUCCESS
或 15
,FAIL
,后者意味着系统缺少库存,无法完成此预订。
预订系统是动态变化的,因此您可能会发现预估时间和预订时间之间的库存可用性会有细微变化。然而,Meta 会遵守您在预估时间获得的值,前提是变化在合理的阈值范围内。
成功预订预估数据后,您可以使用此预估数据创建广告组:
curl \ -F "rf_prediction_id=<RF_PREDICTION_ID>" \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<API_VERSION>/<AD_SET_ID>"
如要成功分配预估数据,您的广告组必须符合下列条件:
start_time
- 来源于预估数据end_time
- 来源于预估数据targeting
- 来源于预估数据bid_amount
optimization_goal
lifetime_budget
或 daily_budget
rf_prediction_id
,它会将预估数据附加至新的广告组。 buying_type
的广告系列属性为 RESERVED
您还可以将 reachfrequencyprediction
附加至广告组,以修改广告组的预估数据。向 https://graph.facebook.com/{ad_set_id}
发出 POST
请求,并添加您想使用的 reachfrequencyprediction
的 rf_prediction_id
。
下面是关于广告组的限制:
facebook
、instagram
。 feed
和 rightcolumn
。 stream
、story
、explore
、explore_home
和 reels
。如果版位包含 instagram
,则您必须使用 destination_ids
,而非 destination_id
。destination_ids
字段应包含用作 destination_id
的 Facebook 公共主页编号,以及 Instagram 帐户编号。 promoted_object
必须与预估的 destination_id
一致。对于公共主页帖子,必须为指定的公共主页编号;对于应用广告,必须与指定的应用编号相符。我们会根据实际的展示次数收取预订广告系列的费用。如果广告系列的开始时间已过,但对应广告组内没有投放中的广告,则该广告系列不会投放,也不会产生任何费用。Meta 会释放剩余的库存,但如果再次发生这种情形,我们可能会对该广告帐户给予处罚。
使用 Meta 预订购买类型创建广告系列时,即表示您同意为预订的广告库存支付建议的费用。如果您更改受众规模或广告展示频次,则您的费用也会相应地变化。广告系列开始投放之前,您可以随时做出这些更改。您还可以在广告系列开始投放之前编辑广告创意。
预订广告组可包含多条广告,您可以随时添加更多广告。如果广告组处于投放状态,但其中不包含投放中的广告,则您必须在 24 小时内为持续 3 到 30 天的广告组创建第一条广告,或者在 6 小时内为持续 1 到 2 天的广告组创建第一条广告。如若不然,我们会删除预订。
您可以在预订广告系列开始投放前编辑或暂停预订广告系列。广告系列开始投放后,您只能编辑广告创意、预算或延长结束日期。如果只编辑广告创意,则预估数据不会改变。
如果您更改预算或结束日期,则可能会生成新的广告系列预估数据,您可在预订预估值中查看。
您无法在预订广告系列开始投放后暂停广告系列,但可以随时删除广告系列以将其取消。
如要暂停或编辑已经开始投放的广告组,请参阅暂停或重新开始投放广告组和编辑投放中的广告组。如要删除投放中的广告组,请参阅参考文档下的“广告组”部分。我们将根据广告获得的全部展示次数向您收费。
请注意,为避免可能发生的失败情况,当预订广告组已发布时,我们强烈建议您不要删除所有广告。
如果您将预订分配给未开始投放的广告组,除非分离预订,否则您无法更改大部分属性。向广告组发出 HTTP POST
请求,并将 rf_prediction_id
设置为 0。您只能修改广告组对象的 name
属性。
如要分离预订:
curl \ -F "rf_prediction_id=0" \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<API_VERSION>/<AD_SET_ID>"
广告组的状态变为投放中后,便无法分离预订,也无法修改广告组的属性,几个加入白名单的广告属性除外,如下所列:
name
creative_id
creative_spec
conversion_specs
tracking_specs
view_tags
您可以暂停投放中的广告组,请参阅参考文档下的“广告组”部分。如果广告组的暂停时间超过 30 分钟,此广告组的预估数据将无法得到保证。
如要恢复暂停时间超过 30 分钟的广告组,您需要新的预估数据。向 reachfrequencypredictions
发出 POST
请求。请参阅创建预估和预订预估。您应该在请求中传递要恢复的投放中广告组的 existing_campaign_id。创建和预订新的预估后,向 https://graph.facebook.com/{ad_set_id}
发出 HTTP POST
请求,并指定您想使用的预估的 rf_prediction_id
,将 reachfrequencyprediction
附加至广告组。
您可以在广告组开始投放后进行下列更新。
如果投放中的广告组符合下列条件之一,您即无法编辑或暂停此广告组:
如要编辑投放中的广告组,请获取新的预估数据。请参阅创建预估和预订预估。您应该在请求中传递要恢复的投放中广告组的 existing_campaign_id。
创建并预订新的预估后,您可以向 https://graph.facebook.com/{ad_set_id} 发出 HTTP POST 请求,并指定 rf_prediction_id
为您想使用的 reachfrequencyprediction 的编号,将 reachfrequencyprediction
附加至广告组。
如果您取消预订,系统将释放预订的库存,将其提供给其他广告主。然而,您可以使用之前预订的预估中的受众,前提是您还未使用这组受众。这样,我们可以考虑使用其他库存来创建预估,而您不必取消当前的预订。
创建预订时应添加 rf_prediction_id_to_share
。这是之前预估的编号。这样会让之前的预订失效,以便您能够将此库存用于新创建的预订。
如要预订新的预估,您还必须传递额外的参数 rf_prediction_id_to_release
,此参数是指之前预订的编号。
您可以轮换所使用广告组中的广告。为此,您无需从对应广告组中分离预订。向广告组添加一条或多条广告,并等待其状态变为投放中。此时,您可以将初始广告的状态更改为暂停。广告组中必须至少有一条投放中的广告。
您可以设计广告排序,按照顺序投放广告。首先创建广告组和广告,然后通过 creative_sequence
在广告组层级指定排序。根据排序,此广告组中的每条广告可能出现不在队列中投放、在队列中投放一次或投放多次的情况。
如果 creative_sequence
数组长度为零,则表示您未使用排序投放功能。如果数组长度为非零,则建议您将其设置为等于 rf_prediction_id
中的 frequency_cap
。如果长度大于 frequency_cap
,我们会从数组中截去最后几条广告。如果长度小于 frequency_cap
,我们会从头重复排序,以递归的方式自动填充数组。为获得更清楚的结果,建议将 creative_sequence
的长度设置为与 frequency_cap
相同的数字。
序列中每一条广告都可能有 ACTIVE
、PENDING_REVIEW
或 CREDIT_CARD_NEEDED
状态。对于序列中的某一条广告而言,只有当其前面的所有广告都获得投放后,系统才会向用户投放这条广告。系统不会投放未包含在 creative_sequence
内的广告。
广告组中使用广告排序的所有广告(无论是否位于序列中),均无法暂停、归档或删除。
此功能仅适用于预订广告组,即其父广告系列的 buying_type
为 RESERVED
,且此广告组设置有 rf_prediction_id
。
如需获取更多详情,请参阅广告组文档。
代码 | 描述 |
---|---|
1487583 | 无法向没有广告的广告组分配预订预估 |
1487055 | 广告组状态无效 |
1487600 | 广告组已分配给某个预订。如果您想使用其他预估,请先使用 null 值断开与该广告组的连接,然后分配新的预估。 |
1487578 | 指定的 |
1487581 | 无法修改投放中的广告组的预订预估 |
1487594 | 预订广告组中没有广告 |
1487595 | 预订广告组中的目标参数无效 |
1487614 | 广告组的开始时间与原始预估不一致 |
1487615 | 广告组的结束时间与原始预估不一致 |
1487616 | 无法将广告组与无效预估相关联 |
1487671 | 不允许直接从广告组的一个预估过渡到另一个预估。 |
1487244 | 广告组更新失败 - 系统将在响应内说明原因 |
1487672 | 未能将预估分配给广告组。 |
1487680 | 您没有预订广告组的使用权限。 |
为应用 destination_id
创建 reachfrequencyprediction
:
curl \ -F 'target_spec={"geo_locations": {"countries":["US"]}, "age_max":35, "age_min":26, "genders":[2], "publisher_platforms":["facebook"], "facebook_positions":["feed"]}' \ -F 'start_time=1388534400' \ -F 'end_time=1389312000' \ -F 'frequency_cap=4' \ -F 'reach=1000000' \ -F 'budget=3000000' \ -F 'destination_id=<APP_ID>' \ -F 'prediction_mode=1' \ -F "objective=MOBILE_APP_INSTALLS" \ -F 'access_token=<ACCESS_TOKEN>' \ 'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/reachfrequencypredictions' {"id":"67890123456"}
为公共主页 destination_id
创建 reachfrequencyprediction
:
curl \ -F 'target_spec={"geo_locations": {"countries":["US"]}, "age_max":35, "age_min":26, "genders":[2], "publisher_platforms":["facebook"], "facebook_positions":["feed"]}' \ -F 'start_time=1388534400' \ -F 'end_time=1389312000' \ -F 'frequency_cap=4' \ -F 'reach=1000000' \ -F 'budget=3000000' \ -F 'destination_id=<PAGE_ID>' \ -F 'prediction_mode=1' \ -F "objective=POST_ENGAGEMENT" \ -F 'access_token=<ACCESS_TOKEN>' \ 'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/reachfrequencypredictions' {"id":"67890123456"}
为使用 Instagram 版位的应用 destination_id
创建 reachfrequencyprediction
:
curl \ -F 'target_spec={"geo_locations": {"countries":["US"]}, "age_max":35, "age_min":26, "genders":[2], "publisher_platforms":["facebook","instagram"], "device_platforms":["mobile"]}' \ -F 'start_time=1388534400' \ -F 'end_time=1389312000' \ -F 'frequency_cap=4' \ -F 'reach=1000000' \ -F 'budget=3000000' \ -F 'destination_ids=[<APP_ID>,<INSTAGRAM_ACCOUNT_ID>]' \ -F 'prediction_mode=1' \ -F "objective=MOBILE_APP_INSTALLS" \ -F 'access_token=<ACCESS_TOKEN>' \ 'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/reachfrequencypredictions' {"id":"67890123456"}
通过 HTTP GET 请求轮询下列端点,检索状态,直至获得 2
以外的状态:
https://graph.facebook.com/67890123456?fields=status
如果状态为 1
(成功),则可以将此预估附加至广告组或预订此预估。
预订预估:
curl \ -F 'action=reserve' \ -F 'rf_prediction_id=<RF_PREDICTION_ID>' \ -F 'access_token=<ACCESS_TOKEN>' \ 'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/reachfrequencypredictions' {"id":"9876543210"}
通过 HTTP GET 请求轮询下列端点,检索状态,直至获得 2
以外的状态:
https://graph.facebook.com/<API_VERSION>/<PREDICTION_ID>?fields=status
如果状态为 1
(成功),则可以将此预估附加至广告组。接下来,我们将创建广告系列、广告组、广告创意、广告,并向广告组分配预订,以此设置广告架构。
创建广告系列:
curl \ -F "name=Test" \ -F "buying_type=RESERVED" \ -F "status=ACTIVE" \ -F "objective=POST_ENGAGEMENT" \ -F "access_token=<ACCESS_TOKEN>" \ https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/campaigns {"id":"1122334455"}
创建广告组:
curl \ -F "name=TestReachSet" \ -F "status=1" \ -F "campaign_id=<CAMPAIGN_ID>" \ -F "rf_prediction_id=<RF_PREDICTION_ID>" \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adsets" {"id":"09876543"}
生成广告创意:
curl \ -F "name=sample creative" \ -F "type=1" \ -F "title=hello world" \ -F "body=hi i'm an ad" \ -F "link_url="https://www.facebook.com/" \ -F "image_hash=4aca812b4eadb72818a2c4124abd121a" \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives" {"id":"1323123123123"}
创建广告:
// Create an ad curl \ -F "name=my ad" \ -F "adset_id=<AD_SET_ID>" \ -F "creative={'creative_id':<CREATIVE_ID>}" \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ads" {"id":"3213213123"}
向广告组分配新的预估:
curl \ -F "rf_prediction_id=<RF_PREDICTION_ID>" \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<API_VERSION>/<AD_SET_ID>"