트리거 기반 광고 규칙

실시간으로 광고 상태를 모니터링합니다. 트리거 기반 규칙은 관련 광고 개체의 메타데이터 또는 인사이트 데이터가 변경되는 즉시 평가됩니다. 메타데이터 변경 사항의 대기 시간은 일반적으로 몇 초이며 인사이트 변경 사항의 대기 시간은 일반적으로 몇 분 이내입니다(현재 p99는 약 7.5분).

트리거 기반 규칙은 항상 실시간으로 확인되므로 schedule_spec은 지원되지 않습니다.

현재 트리거 기반 규칙은 API에서만 제공되고 광고 관리자를 통해서는 액세스할 수 없습니다.

트리거 개체

trigger 개체는 규칙 평가 방법을 정의합니다. 모든 트리거 유형은 METADATA_CREATION을 제외하고 트리거 field가 필요합니다. 트리거 기반 규칙은 이 필드가 변경되는 경우에만 상태를 확인합니다.

트리거 기반 규칙은 trigger를 하나만 가질 수 있습니다. 여러 지표에 대한 조건이나 제약이 있는 경우 나머지는 filters로 추가할 수 있습니다.

filters 필드는 일정 기반 규칙에서와 동일한 방식으로 사용됩니다. 트리거 기반 규칙은 trigger와 모든 filters가 비교를 충족하는 경우에만 평가를 통과합니다. 따라서 한 필드를 변경했을 때 나머지 한 필드가 변경된다면 트리거와 필터는 상호 교환이 가능합니다. 예를 들어 cost_per_mobile_app_install > X AND spent > Y일 때 규칙이 트리거되기 원하는 경우 cost_per_mobile_app_installspent 중에서 하나를 트리거로 사용하고 나머지를 필터로 사용할 수 있습니다. 왜냐하면 이 두 필드는 종속 관계이기 때문입니다.

trigger 개체는 evaluation_spec에 속하고 다음과 같은 구조를 따릅니다.

트리거 개체 키 설명

type

트리거 기반 규칙의 유형입니다. 현재 지원되는 옵션은 다음과 같습니다.

METADATA_CREATION: 광고 개체가 생성되었을 때 트리거됩니다.

METADATA_UPDATE: 메타데이터 field가 업데이트되었을 때 트리거됩니다.

STATS_CHANGE: 인사이트 field가 비교를 충족하도록 변경되었을 때 트리거됩니다.

STATS_MILESTONE: 인사이트 fieldvalue의 배수에 도달했을 때 트리거됩니다.

field

기본 필드입니다. METADATA_CREATION에 대해 사용되지 않습니다.

value

기본 필터 값입니다. METADATA_CREATION에 대해 사용되지 않습니다. METADATA_UPDATE에 대해 선택 사항입니다.

operator

기본 필터 연산자입니다. METADATA_CREATION에 대해 사용되지 않습니다. METADATA_UPDATE에 대해 선택 사항입니다.

다음과 같이 4가지 방법으로 트리거되는 광고 규칙을 만들 수 있습니다.

  • 메타데이터 관련: METADATA_CREATION 또는 METADATA_UPDATE
  • 인사이트 관련: STATS_MILESTONE 또는 STATS_CHANGE

메타데이터 관련 트리거 규칙

메타데이터 생성 규칙

이 규칙은 광고 개체가 생성되는 시점을 모니터링하는 데 사용됩니다. trigger 사양 내에서 type만 필수입니다. 필터의 경우 모니터링하고자 하는 entity_type을 지정합니다.

모든 광고가 특정 목표에 따라 생성되는지 모니터링하기 위한 메타데이터 생성 규칙의 예시는 다음과 같습니다. APP_INSTALLS 목표로 설정된 광고 캠페인 밑에서 새로운 광고가 생성될 때마다 핑이 전송됩니다.

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"

인사이트 관련 트리거 규칙

통계 마일스톤 규칙

STATS_MILESTONEtype일 경우, fieldfilters 배열에 있는 조건과 일치하는 개체에 대해 value의 배수에 도달하는 경우 evaluation_spec이 트리거됩니다.

이 특정 규칙 유형의 경우, 트리거 operatorEQUAL이 되어야 하고 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

누군가가 게시물에 댓글을 작성할 때마다 핑을 보내는 통계 마일스톤 규칙의 예시는 다음과 같습니다.

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로 변경되면 다시 true로 변경되었을 때 execution_spec이 실행됩니다.

이 특정 규칙 유형의 경우, 트리거 operatorGREATER_THAN, LESS_THAN, IN_RANGE 또는 NOT_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

게재 인사이트 변경 규칙(베타)

DELIVERY_INSIGHTS_CHANGE를 트리거 type으로 사용하면 evaluation_spec에서 정의된 모든 필터가 true평가되고evaluation_spec에 정의된 트리거가 false에서 true로 변경되면 규칙이 트리거됩니다.

이후의 평가에서 필터와 트리거가 계속 true로 평가되는 경우 규칙은 다시 트리거되지 않습니다.

Webhooks 설정

실행 유형 PING_ENDPOINT를 사용하려면 Webhooks를 통해 앱에 대한 구독을 설정해야 합니다. 콜백 URL, Facebook 앱 및 Webhooks를 설정하여 규칙 API로부터 알림을 받으세요.

1단계: 콜백 URL 설정

Webhooks 가이드를 참조하여 인증 중에 챌린지 및 응답을 처리할 수 있는 콜백 URL을 만듭니다. 이 콜백 URL은 규칙이 트리거될 때 전송된 데이터 구조를 처리합니다.

{
  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를 앱에 추가

콜백 URL이 인증을 위한 챌린지와 응답을 처리하고 나면 규칙이 트리거될 때 이를 앱에 등록합니다.

  • 새로운 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에 대한 자세한 내용은 구독 참고 자료를 참조하세요.