觸發型廣告規則

即時監控廣告的狀態。相關廣告物件的中繼資料或洞察報告資料一旦變更,我們就會評估觸發型規則。中繼資料變更的延遲時間通常為幾秒鐘,而洞察報告變更的延遲時間通常在幾分鐘內(目前 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_CREATIONMETADATA_UPDATE 的選用項目。

operator

基本篩選條件運算子。不用於 METADATA_CREATIONMETADATA_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 條件。以下範例會在廣告組合的單日預算變更並超過 1000 時收到通知:

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"

洞察報告相關觸發規則

統計資料里程碑規則

若使用 STATS_MILESTONE 做為 type,當 field 達到符合 filters 陣列中條件之物件的 value 倍數時,就會觸發 evaluation_spec

針對這種特定類型的規則,觸發條件 operator 必須為 EQUAL,而 time_preset 篩選條件的值必須為 LIFETIME

有一組限制性更強的支援欄位。下面未列出的任何欄位均不支援做為觸發條件 field,但仍可用作 filters 清單中的篩選條件。此外,根據 field,觸發條件的 value 還需要有最小值。

支援的觸發條件欄位值 最小值

impressions

1000

unique_impressions

1000

reach

1000

clicks

10

unique_clicks

10

spent

1000(美分)

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,當觸發條件的邏輯 AND 和所有篩選條件在給定的 time_preset 內從 false 評估為 true 時,就會觸發 execution_spec

如果邏輯 AND 的後續評估也是 true,execution_spec不會執行。然而,如果邏輯 AND 的評估從 true 變更為 false,則 execution_spec 會在其變回 true 時執行。

針對這種特定類型的規則,觸發條件 operator 可以是 GREATER_THANLESS_THANIN_RANGENOT_IN_RANGE

以下是統計資料變更規則的範例。每當廣告廣告觸及人數超過 5000 人,且過去 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

廣告投遞洞察報告變更規則(測試版)

若使用 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 Webhook 新增至您的應用程式

一旦回呼網址處理驗證的提問和回應後,請在觸發規則時,將其註冊在您的應用程式中:

  • 為應用程式建立新的訂閱,並選擇 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 的詳細資訊,請參閱訂閱參考資料