카탈로그 및 신호 품질

Facebook에서는 다양한 어드밴티지+ 카탈로그 광고 자산의 품질과 성능에 대한 피드백을 받을 수 있는 두 가지 옵션을 제공합니다.

카탈로그의 픽셀 및 앱 이벤트에 대한 피드백

픽셀이나 앱 설치 관련 문제를 파악하려면 다양한 픽셀, 앱 및 기기에서 수신한 매칭된/매칭되지 않은 이벤트에 대한 종합적 통계를 확인할 수 있습니다.

이벤트 API를 쿼리하여 카탈로그에 연결된 이벤트 소스에서 발생한 통계를 가져옵니다. 자세한 정보는 이벤트 API, 참고 자료를 참조하세요.

이벤트 통계

카탈로그 수준에서 이 정보를 가져올 수 있습니다.

curl -X GET \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/<PRODUCT_CATALOG_ID>/event_stats
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const ProductCatalog = bizSdk.ProductCatalog; const ProductEventStat = bizSdk.ProductEventStat; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<PRODUCT_CATALOG_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { }; const event_statss = (new ProductCatalog(id)).getEventStats( fields, params ); logApiCallResult('event_statss api call complete.', event_statss);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\ProductCatalog; use FacebookAds\Object\ProductEventStat; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<PRODUCT_CATALOG_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( ); echo json_encode((new ProductCatalog($id))->getEventStats( $fields, $params )->getResponse()->getContent(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.productcatalog import ProductCatalog from facebook_business.adobjects.producteventstat import ProductEventStat from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<PRODUCT_CATALOG_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { } print ProductCatalog(id).get_event_stats( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<PRODUCT_CATALOG_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new ProductCatalog(id, context).getEventStats() .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<PRODUCT_CATALOG_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end product_catalog = FacebookAds::ProductCatalog.get(id) event_statss = product_catalog.event_stats({ fields: { }, })

지난달의 이벤트 유형, 소스 및 날짜별로 한 개씩 일련의 요소가 반환됩니다.

{
  "data": [
    {
      "date_start": "2017-03-16",
      "date_stop": "2017-03-16",
      "event": "AddToCart",
      "event_source": {
        "id": "<PIXEL_ID>",
        "source_type": "PIXEL"
      },
      "total_matched_content_ids": 1086,
      "total_content_ids_matched_other_catalogs": 10024,
      "total_unmatched_content_ids": 13024,
      "unique_matched_content_ids": 285,
      "unique_content_ids_matched_other_catalogs": 102,
      "unique_unmatched_content_ids": 2132
    },
    {
      "date_start": "2017-03-16",
      "date_stop": "2017-03-16",
      "event": "ViewContent",
      "event_source": {
        "id": "<APP_ID>",
        "source_type": "APP"
      },
      "total_matched_content_ids": 1007,
      "total_content_ids_matched_other_catalogs": 504,
      "total_unmatched_content_ids": 20206,
      "unique_matched_content_ids": 507,
      "unique_content_ids_matched_other_catalogs": 402,
      "unique_unmatched_content_ids": 8037
    },
    ...
  ]
}

각 이벤트 유형, 소스 및 날짜에 대해 반환되는 필드는 다음과 같습니다.

개수 설명

total_matched_content_ids

수신된 이벤트의 콘텐츠 ID 중에서 카탈로그의 품목과 매칭되는 ID의 총 개수입니다. 이 카운트는 콘텐츠 ID 간 중복을 제거하지 않습니다.

total_content_ids_matched_other_catalogs

수신된 이벤트의 콘텐츠 ID 중에서 해당 픽셀 또는 앱과 관련된 다른 카탈로그의 품목과 매칭되는 ID의 총 개수입니다. 이 카운트는 콘텐츠 ID 간 중복을 제거하지 않습니다.

total_unmatched_content_ids

수신된 이벤트의 콘텐츠 ID 중에서 카탈로그의 품목과 매칭되지 않는 ID의 총 개수입니다. 이 카운트는 콘텐츠 ID 간 중복을 제거하지 않습니다.

unique_matched_content_ids

수신된 이벤트의 고유 콘텐츠 ID 중에서 카탈로그의 품목과 매칭되는 ID의 개수입니다.

unique_content_ids_matched_other_catalogs

수신된 이벤트의 고유 콘텐츠 ID 중에서 이벤트를 실행한 해당 픽셀 또는 앱과 관련된 다른 카탈로그의 품목과 매칭되는 ID의 개수입니다.

unique_unmatched_content_ids

수신된 이벤트의 고유 콘텐츠 ID 중에서 카탈로그의 품목과 매칭되지 않는 ID의 개수입니다.

기기 유형 분석 데이터

device_type을 전달하여 결과를 분석합니다.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <CATALOG_ID> . '/event_stats',
  RequestInterface::METHOD_GET,
  array(
    'breakdowns' => array('device_type'),
  ))->getContent();
curl -G \
  -d 'breakdowns=["device_type"]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CATALOG_ID>/event_stats

발생한 기기별로 그룹화된 결과가 반환됩니다. 예를 들어 desktop, mobile_iphone, mobile_android_phone 등이 있습니다.

{
  "data": [
    {
      "date_start": "2017-03-10",
      "date_stop": "2017-03-10",
      "event": "AddToCart",
      "event_source": {
        "id": "<PIXEL_ID>",
        "source_type": "PIXEL"
      },
      "device_type": "desktop",
      "total_matched_content_ids": 282,
      "total_content_ids_matched_other_catalogs": 524,
      "total_unmatched_content_ids": 4965,
      "unique_matched_content_ids": 102,
      "unique_content_ids_matched_other_catalogs": 402,
      "unique_unmatched_content_ids": 1427
    },
    ...
  ]
}

픽셀 및 앱 이벤트에 대한 피드백

예시—픽셀이 전송한 이벤트에 이슈가 있는지 검사를 통해 확인할 수 있습니다.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <PIXEL_ID> . '/da_checks',
  RequestInterface::METHOD_GET)->getContent();
curl -G \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PIXEL_ID>/da_checks

예시—응답

{
  "data": [
    {
      "description": "Pixel hasn't sent some or any events for Advantage+ catalog ads (ex: ViewContent, AddToCart, Purchase) at least once in the last 24 hours.",
      "key": "pixel_missing_dpa_event",
      "result": "failed",
      "title": "Pixel is not sending DPA events"
    },
    {
      "description": "Pixel events might be missing parameters some or all of the time.",
      "key": "pixel_missing_param_in_events",
      "result": "passed",
      "title": "Pixel missing parameter in DPA events"
    },
    {
      "action_uri": "https://www.facebook.com/ads/manage/pixels/?pixel_id=<PIXEL_ID>&amp;m2w=1",
      "description": "The number of pixel events has dropped to less than half of the weekly average.",
      "key": "pixel_decline",
      "result": "passed",
      "title": "Decline in number of pixel events"
    }
  ]
}

다음 검사를 사용할 수 있습니다.

검사 설명

pixel_missing_dpa_event

어드밴티지+ 카탈로그 광고에 정의된 내용에 따라 이 픽셀에 누락된 이벤트가 있는지 검사합니다.

pixel_missing_param_in_events

다이내믹 광고에 정의된 내용에 따라 필수 매개변수가 누락된 이벤트가 있는지 검사합니다.

pixel_decline

지난 24시간 이내에 해당 픽셀에 대해 수신한 이벤트 개수가 감소했는지 검사합니다.

자세한 정보는 픽셀 다이내믹 광고 검사, 참고 자료를 참조하세요.

result 필드에 사용할 수 있는 값은 다음과 같습니다.

상태 설명

통과

픽셀이 이 검사를 통과했습니다.

실패

픽셀이 이 검사를 통과하지 못했습니다.

사용할 수 없음

현재 이 픽셀에는 이 검사를 사용할 수 없습니다. 나중에 다시 시도하세요.

기본적으로 모든 검사를 반환하지만 다음과 같이 실행하고자 하는 검사를 지정할 수 있습니다.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <PIXEL_ID> . '/da_checks',
  RequestInterface::METHOD_GET,
  array(
    'checks' => array(
      'pixel_decline',
      'pixel_missing_dpa_event',
      'pixel_missing_param_in_events',
      ),
  ))->getContent();
curl -G \
  --data-urlencode 'checks=[ 
    "pixel_decline", 
    "pixel_missing_dpa_event", 
    "pixel_missing_param_in_events" 
  ]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PIXEL_ID>/da_checks

앱 이벤트

앱이 전송한 이벤트에 문제가 있는지 확인할 수 있습니다.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <APP_ID> . '/da_checks',
  RequestInterface::METHOD_GET)->getContent();
curl -G \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<APP_ID>/da_checks

응답 예시:

{
  "data": [
    {
      "description": "App hasn't sent some or any events for dynamic ads (ex: ViewContent, AddToCart, Purchase)...",
      "key": "app_missing_dpa_event",
      "result": "failed",
      "title": "App is not sending DPA events"
    },
    {
      "description": "App events might be missing parameters some or all of the time.",
      "key": "app_missing_param_in_events",
      "result": "passed",
      "title": "App missing parameter in DPA events"
    }
  ]
}
검사 설명

app_missing_dpa_event

다이내믹 광고에 정의된 내용에 따라 앱에 누락된 이벤트가 있는지 검사합니다.

app_missing_param_in_events

다이내믹 광고에 정의된 내용에 따라 필수 매개변수가 누락된 이벤트가 있는지 검사합니다.

자세한 정보는 앱 DA 검사, 참고 자료를 참조하세요.

result에 대해 반환 가능한 값은 다음과 같습니다.

상태 설명

통과

앱이 이 검사를 통과했습니다.

실패

앱이 이 검사를 통과하지 못했습니다.

사용할 수 없음

현재 이 앱에는 이 검사를 사용할 수 없습니다. 나중에 다시 시도하세요.

특정 검사에 대한 값을 요청할 수 있습니다. 기본적으로 모든 검사를 반환하지만 다음과 같이 요청에 전달하여 실행하고자 하는 검사를 지정할 수 있습니다.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <APP_ID> . '/da_checks',
  RequestInterface::METHOD_GET,
  array(
    'checks' => array('app_missing_dpa_event', 'app_missing_param_in_events'),
  ))->getContent();
curl -G \
  -d 'checks=["app_missing_dpa_event","app_missing_param_in_events"]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<APP_ID>/da_checks