触发类广告规则

实时监控您广告的状态。对于与某项触发类规则相关的广告对象,其元数据或成效分析数据发生更改时,系统会立即对此规则进行评估。元数据的更改通常会有几秒钟延迟,而成效分析更改的延迟通常在几分钟之内(p99 目前约为 7.5 分钟)。

由于一直是实时接受检查,触发类规则不支持 schedule_spec

触发类规则目前仅在 API 中可用,而无法通过广告管理工具获取。

触发对象

trigger 对象定义规则的评估方式。所有触发类型都需要一个触发条件 field(除了 METADATA_CREATION)。触发类规则仅在此字段发生更改时,才检查此字段的条件。

一项触发类规则只能拥有一个 trigger。如果您对多个指标施加了条件或限制,可添加其余指标为 filters

filters 字段在触发类规则中的使用方式与在排期类规则中相同。触发类规则仅在 trigger 与所有 filters 都满足特定的条件时,才会通过评估。因此,对于触发条件和筛选条件这两个字段而言,如果更改其中一个字段会导致另一个字段发生更改,则二者可以互换。例如,如果您想在 cost_per_mobile_app_install > Xspent > Y 时触发一项规则,可使用 cost_per_mobile_app_installspent 为触发条件,使用这两者中的另一个字段为筛选条件之一,因为这两个字段相互依赖。

trigger 对象归于 evaluation_spec 之下,且采用以下结构:

触发对象键 描述

type

触发类规则的类型。当前支持的选项包括:

METADATA_CREATION:创建广告对象时触发

METADATA_UPDATE:更新元数据 field 时触发

STATS_CHANGE:为满足比较需要而更改成效分析 field 时触发

STATS_MILESTONE:成效分析 field 达到 value 的倍数时触发

field

下辖字段。不用于 METADATA_CREATION

value

下辖筛选条件值。不用于 METADATA_CREATION。是 METADATA_UPDATE 的可选项。

operator

下辖筛选条件运算符。不用于 METADATA_CREATION。是 METADATA_UPDATE 的可选项。

您可以创建使用四种不同方式触发的广告规则:

  • 元数据相关触发规则:METADATA_CREATIONMETADATA_UPDATE
  • 成效分析相关触发规则:STATS_MILESTONESTATS_CHANGE

元数据相关触发规则

元数据创建规则

此规则用于监控广告对象的创建时间。在 trigger 参数中,仅 type 为必要项。对于筛选条件,请指定您希望监控的 entity_type

以下是一个元数据创建规则示例,此规则将监控属于某个特定目标的所有广告的创建时间。每次在以 APP_INSTALLS 为目标的广告系列下新建广告时,系统就会发送 ping 消息。

curl -i -X POST \
-F 'name=Metadata Creation Example 1' \
-F 'evaluation_spec={
      "evaluation_type" : "TRIGGER",
      "trigger" : {
        "type": "METADATA_CREATION",
      },
      "filters" : [
       {
         "field": "entity_type",
         "value": "AD",
         "operator": "EQUAL",
       },
       {
         "field": "campaign.objective",
         "value": ["APP_INSTALLS"],
         "operator": "IN",
       },
     ]
   }' \
-F 'execution_spec={
      "execution_type": "PING_ENDPOINT"
   }' \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"

元数据更新规则

此规则用于监控单个广告对象的元数据更改时间。请参阅受支持元数据字段列表。在 trigger 参数中,field 是必要项,而 valueoperator 是可选项。

如果您想关注字段更改,无论字段值是什么,您只需指定 field 选项即可。以下示例展示了每当广告组的单日预算发生更改时,系统如何向您发送 Facebook 通知。

curl -i -X POST \
-F 'name=Metadata Update Example 1' \
-F 'evaluation_spec={
      "evaluation_type" : "TRIGGER",
      "trigger" : {
        "type": "METADATA_UPDATE",
        "field": "daily_budget",
      },
      "filters" : [
       {
         "field": "entity_type",
         "value": "ADSET",
         "operator": "EQUAL",
       },
     ]
   }' \
-F 'execution_spec={
      "execution_type": "NOTIFICATION"
   }' \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"

如果您仅对部分事件感兴趣,可提供 operatorvalue 选项,以便细化 trigger 条件。以下示例展示了在广告组的单日预算发生更改且超过 1,000 时如何接收通知:

curl -i -X POST \
-F 'name=Metadata Update Example 2' \
-F 'evaluation_spec={
      "evaluation_type" : "TRIGGER",
      "trigger" : {
        "type": "METADATA_UPDATE",
        "field": "daily_budget",
        "value": 1000,
        "operator": "GREATER_THAN"
      },
      "filters" : [
       {
         "field": "entity_type",
         "value": "ADSET",
         "operator": "EQUAL",
       },
     ]
   }' \
-F 'execution_spec={
      "execution_type": "PING_ENDPOINT"
   }' \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"

成效分析相关触发规则

统计数据大事记规则

对于符合 filters 数组中各条件的对象,在 STATS_MILESTONE 设为 type 的情况下,field 达到这些对象 value 的倍数时,evaluation_spec 就会触发。

对于这种特定的规则类型,触发条件 operator 必须是 EQUAL,且 time_preset 筛选条件必须具有 LIFETIME 值。

该规则有一组受限性更强的支持字段。对于未列于下方的任何字段,不支持其作为触发条件 field,但其仍可作为筛选条件纳入 filters 列表中。此外,该规则还为触发条件的 value 提供了必要的最低值,具体值取决于 field

支持的触发字段值 最小值

impressions

1,000

unique_impressions

1,000

reach

1,000

clicks

10

unique_clicks

10

spent

1,000(美分)

results

5

app_custom_event

1

app_custom_event_fb_mobile_achievement_unlocked

1

app_custom_event_fb_mobile_activate_app

1

app_custom_event_fb_mobile_add_payment_info

1

app_custom_event_fb_mobile_add_to_cart

1

app_custom_event_fb_mobile_add_to_wishlist

1

app_custom_event_fb_mobile_complete_registration

1

app_custom_event_fb_mobile_content_view

1

app_custom_event_fb_mobile_initiated_checkout

1

app_custom_event_fb_mobile_level_achieved

1

app_custom_event_fb_mobile_purchase

1

app_custom_event_fb_mobile_rate

1

app_custom_event_fb_mobile_search

1

app_custom_event_fb_mobile_spent_credits

1

app_custom_event_fb_mobile_tutorial_completion

1

app_custom_event_other

1

leadgen

1

like

1

link_click

1

mobile_app_install

1

offsite_conversion

1

offsite_conversion_add_to_cart

1

offsite_conversion_checkout

1

offsite_conversion_fb_pixel_add_payment_info

1

offsite_conversion_fb_pixel_add_to_cart

1

offsite_conversion_fb_pixel_add_to_wishlist

1

offsite_conversion_fb_pixel_complete_registration

1

offsite_conversion_fb_pixel_initiate_checkout

1

offsite_conversion_fb_pixel_lead

1

offsite_conversion_fb_pixel_other

1

offsite_conversion_fb_pixel_purchase

1

offsite_conversion_fb_pixel_search

1

offsite_conversion_fb_pixel_view_content

1

offsite_engagement

1

post

1

post_comment

1

post_engagement

1

post_like

1

post_reaction

1

view_content

1

video_play

1

video_view

1

vote

1

以下统计数据大事记规则示例展示了每当有用户评论您的帖子时,系统如何发送 ping 消息:

curl \
-F 'name=Rule 1' \
-F 'evaluation_spec={
      "evaluation_type" : "TRIGGER",
      "trigger" : {
        "type": "STATS_MILESTONE",
        "field": "post_comment",
        "value": 1,
        "operator": "EQUAL"
      },
      "filters" : [
       {
         "field": "entity_type",
         "value": "CAMPAIGN",
         "operator": "EQUAL",
       },
       {
         "field": "time_preset",
         "value": "LIFETIME",
         "operator": "EQUAL",
       },
     ]
   }' \
-F 'execution_spec={
      "execution_type": "PING_ENDPOINT"
   }' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library

统计数据更改规则

在使用 STATS_CHANGE 作为触发条件 type 的情况下,在指定 time_preset 内,此触发条件的逻辑运算符 AND 和所有筛选条件的评估从 false 更改为 true 时,会触发 execution_spec

如果对逻辑运算符 AND 的后续评估也为 true,则 execution_spec 不会执行。但是,如果对逻辑运算符 AND 的评估从 true 更改为 false,在评估改回 true 时,execution_spec 会执行。

对于这种特定的规则类型,触发条件 operator 可以是 GREATER_THANLESS_THANIN_RANGENOT_IN_RANGE

以下是一个统计数据更改规则示例。每次广告覆盖人数超过 5,000 人,且在过去 3 天内每次购物价值超过 $10 时,请暂停相应广告。

curl \
-F 'name=Rule 1' \
-F 'evaluation_spec={
      "evaluation_type" : "TRIGGER",
      "trigger" : {
        "type": "STATS_CHANGE",
        "field": "cost_per_purchase_fb",
        "value": 1000,
        "operator": "GREATER_THAN",
      },
      "filters" : [
       {
         "field": "entity_type",
         "value": "AD",
         "operator": "EQUAL"
       },
       {
         "field": "time_preset",
         "value": "LAST_3_DAYS",
         "operator": "EQUAL"
       },
       {
         "field": "reach",
         "value": 5000,
         "operator": "GREATER_THAN"
       }
     ]
   }' \
-F 'execution_spec={
      "execution_type": "PAUSE"
   }' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library

投放成效分析更改规则(Beta 测试版)

在将 DELIVERY_INSIGHTS_CHANGE 用作触发条件 type 的情况下,evaluation_spec 中指定的所有筛选条件都评估为 trueevaluation_spec 中指定的触发条件正好从 false 更改为 true 时,会触发此规则。

对于后续评估,如果筛选条件和触发条件仍被评估为 true,则不会再次触发此规则。

Webhooks 设置

如要使用执行类型 PING_ENDPOINT,您需要通过 Webhooks 为应用程序设置订阅。创建一个回调网址和一个 Facebook 应用,并设置 Webhooks,以便接收规则 API 发出的通知:

第 1 步:创建回调网址

请参阅 Webhooks 指南,创建一个回调网址,以便在验证期间处理挑战和响应。回调网址会处理某项规则被触发时收到的数据结构:

{
  object: 'application',
  entry: [{
    id: '<APPLICATION_ID>',
    time: 1468938744,
    changes: [{
      field: 'ads_rules_engine',
      value: {
        'rule_id': 1234,
        'object_id': 5678,
        'object_type': 'ADSET',
        'trigger_type': 'STATS_CHANGE',
        'trigger_field': 'COST_PER_LINK_CLICK',
        'current_value': '15.8',
      }
    }],
  }],
}

current_value 字段是一个 JSON 编码形式的字符串。此字段的值可以是一个使用双引号的字符串、一个数字或一个以 [(左括号)开头、](右括号)结尾的数组。

第 2 步:将 ads_rules_engine Webhooks 添加到您的应用

回调网址处理了验证中的挑战和响应后,请在某项规则被触发时在您的应用中注册此规则:

  • 新建一个 Facebook 应用,或使用现有应用。
  • 添加此 Webhooks 产品。
  • 为应用程序创建新订阅,并选择 ad_rules_engine

或者,使用应用访问口令(而不是用户访问口令)通过图谱 API 完成添加操作:

curl \
-F "object=application" \
-F "callback_url=<CALLBACK_URL>" \
-F "fields=ads_rules_engine" \
-F "verify_token=<VERIFY_TOKEN>" \
-F "access_token=<APP_ACCESS_TOKEN>" \
"https://graph.facebook.com/<VERSION>/<APP_ID>/subscriptions"

有关 APP_ID/subscriptions 详情,请参阅“订阅”参考文档