Quy tắc quảng cáo dựa trên yếu tố kích hoạt

Giám sát trạng thái của quảng cáo theo thời gian thực. Quy tắc dựa trên yếu tố kích hoạt được đánh giá ngay khi có thay đổi về siêu dữ liệu hoặc thông tin chi tiết của đối tượng quảng cáo liên quan. Độ trễ cho thay đổi về siêu dữ liệu thường là vài giây và độ trễ cho thay đổi về thông tin chi tiết thường là vài phút (p99 hiện tại là khoảng 7,5 phút).

Quy tắc dựa trên yếu tố kích hoạt không hỗ trợ schedule_spec vì quy tắc này luôn được kiểm tra theo thời gian thực.

Hiện tại, Quy tắc dựa trên yếu tố kích hoạt chỉ có trong API, mà không truy cập được qua Trình quản lý quảng cáo.

Đối tượng yếu tố kích hoạt

Đối tượng trigger xác định cách đánh giá quy tắc. Mọi loại yếu tố kích hoạt đều cần có field yếu tố kích hoạt, trừ METADATA_CREATION. Quy tắc dựa trên yếu tố kích hoạt chỉ kiểm tra điều kiện của quy tắc khi trường này có thay đổi.

Quy tắc dựa trên yếu tố kích hoạt chỉ được có 1 trigger. Nếu có điều kiện hoặc giới hạn đối với nhiều số liệu, bạn có thể thêm các trường còn lại làm filters.

Cách dùng trường filters cũng giống như trong Quy tắc dựa trên lịch chạy. Quy tắc dựa trên yếu tố kích hoạt chỉ vượt qua đánh giá khi trigger và tất cả filters thỏa mãn các phép so sánh. Vì vậy, yếu tố kích hoạt và bộ lọc có thể thay thế cho nhau nếu sự thay đổi của trường này dẫn đến sự thay đổi của trường kia. Ví dụ: nếu muốn một quy tắc kích hoạt khi cost_per_mobile_app_install > Xspent > Y, bạn có thể dùng cost_per_mobile_app_install hoặc spent làm yếu tố kích hoạt và trường còn lại làm một trong các bộ lọc, vì 2 trường đó phụ thuộc vào nhau.

Đối tượng trigger thuộc evaluation_spec và có cấu trúc như sau:

Khóa đối tượng yếu tố kích hoạt Mô tả

type

Loại Quy tắc dựa trên yếu tố kích hoạt. Sau đây là các tùy chọn hiện được hỗ trợ:

METADATA_CREATION: Kích hoạt khi có đối tượng quảng cáo được tạo

METADATA_UPDATE: Kích hoạt khi field siêu dữ liệu có cập nhật

STATS_CHANGE: Kích hoạt khi field thông tin chi tiết thay đổi để thỏa mãn phép so sánh

STATS_MILESTONE: Kích hoạt khi field thông tin chi tiết đạt đến bội số của value

field

Trường cơ bản. Không dùng cho METADATA_CREATION

value

Giá trị bộ lọc cơ bản. Không dùng cho METADATA_CREATION. Không bắt buộc đối với METADATA_UPDATE.

operator

Toán tử bộ lọc cơ bản. Không dùng cho METADATA_CREATION. Không bắt buộc đối với METADATA_UPDATE.

Bạn có thể tạo Quy tắc quảng cáo được kích hoạt theo 4 cách khác nhau:

  • Liên quan đến siêu dữ liệu: METADATA_CREATION hoặc METADATA_UPDATE
  • Liên quan đến thông tin chi tiết: STATS_MILESTONE hoặc STATS_CHANGE

Quy tắc dựa trên yếu tố kích hoạt liên quan đến siêu dữ liệu

Quy tắc tạo siêu dữ liệu

Quy tắc này dùng để giám sát khi có đối tượng quảng cáo được tạo. Quy cách trigger chỉ cần có type. Đối với bộ lọc, hãy chỉ định entity_type mà bạn muốn giám sát.

Sau đây là ví dụ về quy tắc tạo siêu dữ liệu để giám sát việc tạo tất cả quảng cáo thuộc một mục tiêu nhất định. Mỗi khi có quảng cáo mới được tạo trong chiến dịch quảng cáo có mục tiêu là APP_INSTALLS, hệ thống sẽ gửi 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"

Quy tắc cập nhật siêu dữ liệu

Quy tắc này dùng để giám sát khi có thay đổi về siêu dữ liệu của đối tượng quảng cáo. Hãy xem danh sách các trường siêu dữ liệu được hỗ trợ. Trong quy cách trigger, field là bắt buộc, còn valueoperator là không bắt buộc.

Nếu quan tâm đến sự thay đổi của một trường, bất kể giá trị của trường đó, bạn chỉ cần chỉ định tùy chọn field. Sau đây là ví dụ về Thông báo trên Facebook mà bạn nhận được mỗi khi có thay đổi về ngân sách hàng ngày của nhóm quảng cáo.

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"

Nếu chỉ quan tâm đến một nhóm nhỏ sự kiện, bạn có thể cung cấp tùy chọn operatorvalue để tinh chỉnh điều kiện trigger. Sau đây là ví dụ về thông báo bạn nhận được khi ngân sách hàng ngày của nhóm quảng cáo thay đổi và vượt quá 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"

Quy tắc dựa trên yếu tố kích hoạt liên quan đến thông tin chi tiết

Quy tắc liên quan đến mốc số liệu thống kê

Khi typeSTATS_MILESTONE, evaluation_spec sẽ kích hoạt khi field đạt đến bội số của value cho các đối tượng thỏa mãn điều kiện trong mảng filters.

Đối với loại quy tắc cụ thể này, operator của yếu tố kích hoạt phải là EQUAL và bộ lọc time_preset phải có giá trị là LIFETIME.

Nhóm trường được hỗ trợ bị hạn chế hơn. Bất kỳ trường nào không có ở bên dưới sẽ không được hỗ trợ làm field yếu tố kích hoạt, nhưng vẫn có thể dùng làm bộ lọc trong danh sách filters. Ngoài ra, value của yếu tố kích hoạt sẽ có giá trị tối thiểu bắt buộc tùy thuộc vào field.

Giá trị trường yếu tố kích hoạt được hỗ trợ Giá trị tối thiểu

impressions

1.000

unique_impressions

1.000

reach

1.000

clicks

10

unique_clicks

10

spent

1.000 (xu)

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

Sau đây là ví dụ về quy tắc liên quan đến mốc số liệu thống kê để gửi ping mỗi khi có ai đó bình luận về bài viết của bạn:

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

Quy tắc thay đổi số liệu thống kê

Khi dùng STATS_CHANGE làm type yếu tố kích hoạt, execution_spec sẽ được kích hoạt khi AND logic của yếu tố kích hoạt và tất cả bộ lọc được đánh giá từ false thành true trong time_preset cụ thể.

Nếu đánh giá tiếp theo đối với AND logic cũng là true, execution_spec sẽ không thực thi. Tuy nhiên, nếu đánh giá AND logic thay đổi từ true thành false, execution_spec sẽ thực thi khi đánh giá thay đổi lại thành true.

Đối với loại quy tắc cụ thể này, operator của yếu tố kích hoạt có thể là GREATER_THAN, LESS_THAN, IN_RANGE hoặc NOT_IN_RANGE.

Sau đây là ví dụ về quy tắc thay đổi số liệu thống kê. Mỗi khi một quảng cáo tiếp cận được hơn 5.000 người và chi phí trên mỗi lượt mua là hơn 10 USD trong 3 ngày qua, hãy tạm dừng quảng cáo này.

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

Quy tắc thay đổi thông tin chi tiết về phân phối (beta)

Khi dùng DELIVERY_INSIGHTS_CHANGE làm type yếu tố kích hoạt, quy tắc sẽ được kích hoạt khi tất cả bộ lọc có trong evaluation_spec được đánh giá là true, yếu tố kích hoạt có trong evaluation_spec vừa thay đổi từ false thành true.

Nếu bộ lọc và yếu tố kích hoạt vẫn được đánh giá là true trong những lần đánh giá tiếp theo, quy tắc sẽ không được kích hoạt lại.

Thiết lập Webhooks

Để sử dụng loại thực thi PING_ENDPOINT, bạn cần thiết lập gói đăng ký cho ứng dụng của mình qua Webhooks. Hãy thiết lập URL gọi lại, Ứng dụng trên Facebook và Webhooks để nhận thông báo từ API Quy tắc:

Bước 1: Thiết lập URL gọi lại

Hãy xem Hướng dẫn về Webhooks và tạo một URL gọi lại có thể xử lý thử thách cũng như phản hồi trong quá trình xác minh. URL gọi lại này sẽ xử lý cấu trúc dữ liệu được gửi khi có quy tắc được kích hoạt:

{
  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',
      }
    }],
  }],
}

Trường current_value là chuỗi được mã hóa JSON. Giá trị của trường này có thể là một chuỗi trong dấu ngoặc kép, một số hoặc một mảng bắt đầu bằng [ (dấu ngoặc vuông mở) và kết thúc bằng ] (dấu ngoặc vuông đóng).

Bước 2: Thêm webhook ads_rules_engine vào ứng dụng của bạn

Sau khi URL gọi lại xử lý thử thách cũng như phản hồi để xác minh, hãy đăng ký URL này trong ứng dụng của bạn khi có quy tắc được kích hoạt:

  • Tạo Gói đăng ký mới cho Ứng dụng và chọn ad_rules_engine.

Hoặc bạn có thể thực hiện việc này qua API Đồ thị, sử dụng mã truy cập Ứng dụng chứ không phải mã truy cập dành cho người dùng:

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"

Hãy xem Tài liệu tham khảo về gói đăng ký để biết chi tiết về APP_ID/subscriptions.