고객 파일 맞춤 타겟

마케팅 API를 사용하면 고객 정보를 활용해 맞춤 타겟을 빌드할 수 있습니다. 여기에는 이메일 주소, 전화번호, 이름, 생년월일, 성별, 위치, 앱 사용자 ID, 페이지 범위 사용자 ID, Apple 광고 ID(IDFA) 또는 Android 광고 ID가 포함됩니다.

비즈니스 관리자 계정 또는 단순히 비즈니스 계정으로 불리기도 하는 Meta 비즈니스 계정의 이름이 비즈니스 포트폴리오로 변경됩니다. 이 변경 사항은 Meta 테크놀로지 전반에 점진적으로 적용될 예정입니다. 해당 변경 사항은 겉치레에 불과하며, Meta 비즈니스 계정 ID(비즈니스 포트폴리오 ID)에는 영향을 미치지 않습니다.

비즈니스의 데이터 소유자는 이 데이터를 만들고 관리해야 할 책임이 있습니다. 여기에는 고객 관계 관리(CRM) 시스템의 정보가 포함됩니다. 타겟을 만들 때는 개인정보를 보호하기 위해 데이터를 해시된 형식으로 공유해야 합니다. 데이터 해싱 및 정규화를 참조하세요. Meta는 이를 자사에서 보유한 해시된 데이터와 비교하여 Facebook 사용자를 광고 타겟에 추가해야 할지를 확인합니다.

타겟에 기록을 무제한으로 추가할 수 있지만 한 번에 추가할 수 있는 최대 수는 10,000개입니다. 맞춤 타겟의 변경 사항은 즉시 적용되지 않으며 일반적으로 최대 24시간 소요됩니다. 삭제를 요청한 기록 수 및/또는 계정에 보유한 맞춤 타겟 수에 따라 이 요청을 처리하는 데 걸리는 시간이 늘어납니다.

광고주가 타겟을 생성하고 관리하는 방법을 개선하기 위해 2년 넘게 활성화된 광고 세트에서 사용되지 않은 고객 파일 맞춤 타겟은 삭제 플래그가 수시로 표시됩니다. Facebook에서 조치를 취하기 전에 지침을 제공해야 합니다. 타겟이 '만료 타겟' 단계로 이동하여 플래그가 표시되면 활성화된 광고 세트에서 플래그된 타겟을 사용할지(타겟을 유지하라는 지침으로 간주), 활성화된 광고 세트에서 플래그된 타겟을 사용하지 않을지(타겟을 삭제하라는 지침으로 간주) 결정하여 Facebook에 지침을 제공해야 합니다. 자세한 내용은 맞춤 타겟 개요 문서를 참조하세요.

전환 API를 사용하여 전환 이벤트를 공유하면 추가 데이터 업로드 없이 맞춤 타겟을 위한 웹사이트를 만들 수 있습니다. 그러나 지원되는 고객 정보를 계속 업로드하여 고객 파일 맞춤 타겟을 만들 수 있습니다.

새로운 Replace API는 타겟의 기존 사용자를 완전히 삭제하고 새로운 사용자 세트로 바꿉니다. Replace API로 타겟을 업데이트하더라도 광고가 학습 단계로 돌아가지 않습니다.

맞춤 타겟 빌드하기

1단계: 빈 맞춤 타겟 만들기

API 호출에서 subtype=CUSTOMcustomer_file_source를 지정합니다.

curl -X POST \ -F 'name="My new Custom Audience"' \ -F 'subtype="CUSTOM"' \ -F 'description="People who purchased on my website"' \ -F 'customer_file_source="USER_PROVIDED_ONLY"' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/customaudiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_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 = { 'name' : 'My new Custom Audience', 'subtype' : 'CUSTOM', 'description' : 'People who purchased on my website', 'customer_file_source' : 'USER_PROVIDED_ONLY', }; const customaudiences = (new AdAccount(id)).createCustomAudience( fields, params ); logApiCallResult('customaudiences api call complete.', customaudiences);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'My new Custom Audience', 'subtype' => 'CUSTOM', 'description' => 'People who purchased on my website', 'customer_file_source' => 'USER_PROVIDED_ONLY', ); echo json_encode((new AdAccount($id))->createCustomAudience( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'My new Custom Audience', 'subtype': 'CUSTOM', 'description': 'People who purchased on my website', 'customer_file_source': 'USER_PROVIDED_ONLY', } print AdAccount(id).create_custom_audience( 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 = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createCustomAudience() .setName(\"My new Custom Audience\") .setSubtype(CustomAudience.EnumSubtype.VALUE_CUSTOM) .setDescription(\"People who purchased on my website\") .setCustomerFileSource(CustomAudience.EnumCustomerFileSource.VALUE_USER_PROVIDED_ONLY) .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) customaudiences = ad_account.customaudiences.create({ name: 'My new Custom Audience', subtype: 'CUSTOM', description: 'People who purchased on my website', customer_file_source: 'USER_PROVIDED_ONLY', })

매개변수

이름설명

customer_file_source
enum 문자열

맞춤 타겟에서 원래 고객 정보를 수집하던 방법을 설명합니다.
값:

  • USER_PROVIDED_ONLY
    광고주가 고객으로부터 직접 정보를 수집했습니다.
  • PARTNER_PROVIDED_ONLY
    광고주가 파트너(예: 에이전시 또는 데이터 제공업체)로부터 직접 정보를 얻었습니다.
  • BOTH_USER_AND_PARTNER_PROVIDED
    광고주가 고객으로부터 직접 정보를 수집하였고 파트너(예: 에이전시)로부터도 정보를 얻었습니다.

name
문자열

맞춤 타겟 이름

description
문자열

맞춤 타겟 설명

subtype
문자열

맞춤 타겟 유형

2단계: 사용자 리스트 지정

/{audience_id}/users 엔드포인트에 대한 POST API 호출을 사용하여 맞춤 타겟에 추가하고자 하는 사용자 리스트를 지정합니다.

매개변수

이름설명

session
JSON 개체

필수
session 매개변수를 사용하여 사용자의 특정 배치가 업로드되었는지 추적합니다.
사용자를 10,000명 이상 포함하여 업로드할 경우 별도의 배치로 분할해야 합니다. 각 요청에는 최대 10,000명까지 포함할 수 있습니다.


{
  "session_id":9778993, 
  "batch_seq":10, 
  "last_batch_flag":true, 
  "estimated_num_total":99996 
} 

payload
JSON 개체

필수
schemadata의 두 필드를 포함합니다.

{ 
  "schema":"EMAIL_SHA256", 
  "data":
    [
      ["<HASHED_DATA>"], 
      ["<HASHED_DATA>"], 
      ["<HASHED_DATA>"] 
    ]
}

미국 사용자의 데이터 처리 옵션

2023년 6월 1일 당일 또는 이후에 고객 리스트 맞춤 타겟을 통해 캘리포니아 거주자에 대해 제한된 데이터 사용을 활성화하려면, 신규 타겟을 업로드하거나 제한적 데이터 사용 플래그로 기존 타겟을 업데이트해야 합니다. 타겟과 사람들의 제한된 데이터 사용 상태를 필요에 따라 정기적으로 업데이트하고 유지관리하세요.

하나의 타겟에서 제한된 데이터 사용 플래그를 한 사용자에게 적용하더라도 다른 타겟에도 자동으로 적용되지는 않습니다. 광고주가 자신이 선택하는 기준에 따라 별도로 기존의 고객 리스트 맞춤 타겟 각각을 관리해야 하듯이, 제한된 데이터 사용 플래그는 광고에 사용하는 각 타겟에 별도로 적용해야 합니다.

기록에 대해 명시적으로 LDU를 활성화하지 않으려면 빈 data_processing_options 배열을 전송하거나 페이로드에서 해당 필드를 삭제할 수 있습니다. 빈 배열의 예:

{
   "payload": {
       "schema": [
           "EMAIL",
                    "DATA_PROCESSING_OPTIONS"
       ],
       "data": [
           [
               "<HASHED_DATA>
",
                           []
           ]
       ]
   }
}

명시적으로 LDU를 활성화하고 (해당 기록의 주와 국가를 포함하지 않고) Meta가 위치를 확인하도록 하려면 각 기록에 대해 LDU를 포함하는 배열을 지정합니다.

{
   "payload": {
       "schema": [
           "EMAIL",
                    "DATA_PROCESSING_OPTIONS"
       ],
       "data": [
           [
               "<HASHED_DATA>
",
                           ["LDU"]
           ]
       ]
   }
}

LDU를 활성화하고 위치를 수동으로 지정하는 방법은 다음과 같습니다.

{
    "customer_consent": true,
    "payload": {
        "schema": [
            "EMAIL",
            "DATA_PROCESSING_OPTIONS",
            "DATA_PROCESSING_OPTIONS_COUNTRY",
            "DATA_PROCESSING_OPTIONS_STATE"
        ],
        "data": [
            [
                "<HASHED_DATA>",
                ["LDU"],
                1,
                1000
            ]
        ]
    }
}

session 필드

이름설명

session_id
양의 64비트 정수

필수 항목
세션을 추적하는 데 사용하는 ID. 이 숫자는 반드시 광고주가 생성해야 하고 특정 광고 계정에 고유해야 합니다.

batch_seq
양의 정수

필수 항목
현재 세션에 나열되어 있는 요청을 식별하기 위한 번호. 이 숫자는 반드시 순차적이어야 하고 1부터 시작해야 합니다.

last_batch_flag
부울

필수 항목

지속적 대체 세션에 대한 모든 배치를 제공하는 시스템을 나타냅니다. true로 설정할 경우 현재 요청이 현재 세션에서의 마지막 요청이고 더 이상 해당 세션에 대해 추가적인 배치를 받지 않습니다. 이 플래그를 설정하지 않으면 첫 배치를 수신하고 90분 후에 교체 세션을 자동 중단합니다. 또한 90분이 지난 후 수신된 배치는 모두 삭제됩니다. 마지막 요청을 표시하여 Meta에 마지막 배치임을 알려야 합니다.

estimated_num_total
정수

선택 사항
이 세션에 업로드할 총 예상 사용자 수. 이 필드는 세션 처리 작업을 개선하는 데 사용됩니다.

응답

성공한 경우 응답에 다음 필드를 포함한 JSON 개체가 포함됩니다.

이름설명

audience_id
숫자 문자열

타겟 ID

session_id
정수

전달한 세션 ID

num_received
정수

이 세션에서 지금까지 수신된 총 사용자 수

num_invalid_entries
정수

잘못된 해시로 전송된 항목 수. 이러한 항목은 일치 사항을 반환하지 않으며 맞춤 타겟에 추가되지 않습니다. 정확한 숫자는 아니지만 일치하지 않는 사용자 수 범위를 나타냅니다.

invalid_entry_samples
JSON 문자열 배열 또는 지도 {string: string}

현재 요청에서 발견된 잘못된 항목 샘플 최대 100개

맞춤 타겟을 비즈니스 개체와 공유에 대해 자세히 알아보세요.

타겟 멤버 삭제

/{audience_id}/users 엔드포인트에 대한 DELETE API 호출을 사용하여 맞춤 타겟에서 삭제할 사용자 리스트를 지정합니다.

curl -X DELETE \
  --data-urlencode 'payload={ 
    "schema": "EMAIL_SHA256", 
    "data": [ 
      "<HASHED_DATA>", 
      "<HASHED_DATA>", 
      "<HASHED_DATA>" 
    ] 
  }' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

또는 method 매개변수를 추가하고 타겟 멤버를 추가하는 데 사용한 POST 요청에서 DELETE로 설정할 수 있습니다.

EXTERN_ID를 사용하여 리스트에서 사용자를 삭제할 수도 있습니다(가능한 경우).

curl -X DELETE \
  --data-urlencode 'payload={ 
    "schema": "EXTERN_ID", 
    "data": [ 
      "<ID>", 
      "<ID>", 
      "<ID>" 
    ] 
  }' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

이 엔드포인트를 사용하여 광고 계정 전체에 걸쳐 모든 맞춤 타겟에서 사용자 리스트를 삭제할 수 있습니다.

이 정보가 처리되지 않은 이유가 몇 가지 있을 수 있습니다. 예를 들어 비즈니스 포트폴리오에서 광고 계정을 소유하고 있지 않은 경우 아직 맞춤 타겟 약관을 수락하지 않았거나 정보가 사용자와 일치하지 않습니다.

계정 센터 계정을 삭제하려면 사용자 업데이트에서와 같은 필드를 포함하고 다음으로 HTTP DELETE를 호출합니다.

https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/usersofanyaudience

멀티 키 매칭

기록의 일치율을 높이려면 개별 키로 구성된 배열 형태로 여러 키를 제공합니다(예: [EXTERN_ID, LN, FN, EMAIL]). EXTERN_ID를 해시할 필요는 없지만 이메일, 이름과 같은 모든 개인 식별 정보를 해시해야 합니다. 자세한 내용은 데이터 해싱 및 정규화를 참조하세요.

기록에 멀티 키의 일부 또는 전체를 제공할 수 있습니다. 자세한 내용은 멀티 키 외부 ID 매칭을 참조하세요.

멀티 키 매칭을 사용하여 사용자 추가

curl \
  -F 'payload={ 
    "schema": [ 
      "FN", 
      "LN", 
      "EMAIL" 
    ], 
    "data": [ 
      [ 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ], 
      [ 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ] 
    ] 
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

PAGEUID 사용

PAGEUID 키를 사용하면 페이지 ID 리스트도 포함해야 합니다. Facebook에 하나의 PAGEUID만 보낼 수 있으며, 이는 하나의 요소를 포함한 배열이어야 합니다.

curl -X POST \
  -F 'payload={
       "schema": [
         "PAGEUID"
       ],
       "is_raw": "true",
       "page_ids": [
            "<PAGE_IDs>"
            ],
       "data": [
         [
           "<HASH>",
           "<ID>",
           "<ID>",
           "<VALUE>"
         ],
         [
           "<HASH>",
           "<ID>",
           "<ID>",
           "<VALUE>"
         ],
         [
           "<HASH>",
           "<ID>",
           "<ID>",
           "<VALUE>"
         ]
       ]
     }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

멀티 키의 해싱 및 정규화

SHA256로 데이터를 해시해야 합니다. 다른 해싱 메커니즘은 지원하지 않습니다. 이는 외부 ID, 앱 사용자 ID, 페이지 범위 사용자 ID 및 모바일 광고주 ID를 제외한 모든 데이터에 필수입니다.

데이터를 해시하기 전에 처리 가능하도록 정규화합니다. 이름(FN)과 성(LN)만 특수 문자와 비로마자를 지원합니다. 최적의 매칭 결과를 얻으려면 특수 문자를 포함하지 않는 로마자 번역을 제공하세요.

이 CSV 파일을 다운로드

하여

아래의 매개변수에 대해 적절히 정규화되고 해시된 데이터의 예시를 참조하세요.



다운로드(마우스 오른쪽 버튼 클릭 > 다른 이름으로 링크 저장)
가이드라인

EMAIL
기준: 이메일 주소

해싱 필수
앞뒤의 공백을 삭제하고 모든 글자를 소문자로 변환합니다.

PHONE
기준: 전화번호

해싱 필수
기호, 문자, 앞에 붙은 0을 삭제합니다. COUNTRY 필드가 지정되지 않은 경우 국가 코드를 앞에 붙여야 합니다.

GEN
기준: 성별

해싱 필수
남자의 경우 m, 여자의 경우 f 값을 사용합니다.

DOBY
기준: 출생 연도

해싱 필수
1900년부터 현재 연도까지 YYYY 형식을 사용합니다.

DOBM
기준: 출생 월

해싱 필수
01~12MM 형식을 사용합니다.

DOBD
기준: 출생일

해싱 필수
01~31DD 형식을 사용합니다.

LNFN
기준: 성과 이름

해싱 필수
a~z만 사용합니다. 소문자만 사용하고 구두점을 사용하지 않습니다. 특수 문자는 UTF-8 형식으로 입력합니다.

FI
기준: 이름 이니셜

해싱 필수
a~z만 사용합니다. 소문자만 사용합니다. 특수 문자는 UTF-8 형식으로 입력합니다.

ST
기준: 미국의 주

해싱 필수
2자 ANSI 약어 코드의 소문자를 사용합니다. 미국 외의 주는 소문자로 정규화하고 구두점, 특수 문자, 공백을 사용하지 않습니다.

CT
기준: 도시

해싱 필수
a~z만 사용합니다. 소문자만 사용하고 구두점, 특수 문자, 공백을 사용하지 않습니다.

ZIP
기준: 우편번호

해싱 필수
공백 없이 소문자를 사용합니다. 미국은 처음 5자리만 사용합니다. 영국은 구역/지역/지구 형식을 사용합니다.

COUNTRY
기준: 국가 코드

해싱 필수

ISO 3166-1 alpha-2 형식의 국가 번호 2자를 소문자로 입력합니다.

MADID
기준: 모바일 광고주 ID

해싱 필요 없음

모두 소문자를 사용하고 하이픈은 그대로 유지합니다.

해시

A~F의 소문자를 사용하여 정규화된 키의 SHA256 값과 이 값의 HEX 표시를 지정합니다. PHP의 해시 함수를 통해 정규화된 이메일과 전화번호를 전환할 수 있습니다.

결과

hash("sha256", "mary@example.com")

f1904cf1a9d73a55fa5de0ac823c4403ded71afd4c3248d00bdcd0866552bb79

hash("sha256", "15559876543")

1ef970831d7963307784fa8688e8fce101a15685d62aa765fed23f3a2c576a4e

외부 ID

외부 ID(EXTERN_ID)라고 하는 고유한 ID가 있는 타겟과 사용자를 매칭할 수 있습니다. 광고주의 모든 고유한 ID(예: 로열티 멤버십 ID, 사용자 ID, 외부 쿠키 ID)가 될 수 있습니다.

이 ID를 해시할 필요가 없지만 EXTERN_ID와 함께 전송하는 모든 개인 식별 정보(PII)를 해시해야 합니다.

매칭 결과를 개선하려면 ID를 보낼 때와 정확히 똑같은 형식을 사용해야 합니다. 예를 들어 SHA256을 사용하여 해시하기로 했다면 이와 동일한 해시 값을 사용해야 합니다.

이러한 ID를 개별 키로 사용하여 맞춤 타겟에서 사용자를 삭제하거나 맞춤 타겟을 새로 만들 수 있습니다. 이렇게 하면 다른 매칭 키를 다시 업로드하지 않아도 됩니다. 해시된 개인 정보와 EXTERN_ID로 누군가를 태그하면 Facebook 사용자와 매칭할 때 EXTERN_ID 우선순위가 낮게 설정됩니다.

EXTERN_ID의 데이터 보관 기간은 90일입니다.

단일 광고 계정에서 고객 파일 맞춤 타겟 전체에 EXTERN_ID 매핑을 다시 사용할 수 있습니다.

광고 계정에 EXTERN_ID 필드를 포함한 타겟이 있는 경우 해당 ID만 사용하여 신규 가입 타겟을 만드세요.

curl \
  -F 'payload={"schema":"EXTERN_ID","data":["<ID>","<ID>"]}' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

EXTERN_ID로 태그된 사람도 멀티 키 매칭으로 추가할 수 있습니다.

curl \
  -F 'payload={ 
    "schema": [ 
      "EXTERN_ID", 
      "FN", 
      "EMAIL", 
      "LN" 
    ], 
    "data": [ 
      [ 
        "<ID>", 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ], 
      [ 
        "<ID>", 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ], 
      [ 
        "<ID>", 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ] 
    ] 
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

Meta는 개별 광고 계정EXTERN_ID 매개변수를 지원하며, 계정이 같은 엔터티에 속해 있더라도 어느 한 계정의 값을 다른 광고 계정에 사용할 수 없습니다.

Replace Users API

/<CUSTOM_AUDIENCE_ID>/usersreplace 엔드포인트를 사용하면 하나의 API 호출로 두 가지 작업을 수행할 수 있습니다.

  • 특정 타겟으로부터 기존 사용자를 완전히 삭제합니다.
  • 이 사용자는 새로운 사용자 세트로 교체합니다.

/<CUSTOM_AUDIENCE_ID>/usersreplace 엔드포인트를 사용하면 삭제하려는 사용자 리스트를 업로드하지 않고 모든 기존 사용자를 자동으로 삭제할 수 있습니다. 이 엔드포인트는 타겟이 활성 광고 세트에 포함되었을 때 광고 세트의 머신 러닝 단계를 재설정하지 않습니다. 이는 /<CUSTOM_AUDIENCE_ID>/users 엔드포인트에 대한 POST 또는 DELETE API 호출과는 다릅니다.

Replace Users API는 다음과 같은 요구 사항을 충족하는 타겟에만 적용됩니다.

  • 교체 프로세스를 실행하기 전의 사용자 수는 1억 명 이내여야 합니다. 타겟이 1억 명보다 많으면 /<CUSTOM_AUDIENCE_ID>/users 엔드포인트를 사용하여 사용자를 추가하거나 삭제하는 것이 좋습니다.
  • 하위 유형은 CUSTOM으로 설정해야 합니다.
  • 가치 기반 고객 파일 맞춤 타겟을 가치 기반이 아닌 고객 파일 맞춤 타겟으로 바꾸거나 그 반대로 바꿀 수 없습니다.

시작하기

교체 프로세스를 시작하기 전에 다음을 수행하는 것이 좋습니다.

  • 타겟의 operation_statusNormal인지 확인합니다.

이미 실행 중인 교체 작업이 있다면 다른 교체 작업을 실행할 수 없습니다.

  • /<CUSTOM_AUDIENCE_ID>/usersreplace를 통해 교체 작업을 진행하는 도중에는 /<CUSTOM_AUDIENCE_ID>/users를 통해 사용자를 추가하거나 삭제할 수 없습니다. 첫 번째 교체 작업이 완료되기 전에 두 번째 교체 작업을 시도하면 교체 작업이 이미 진행 중이라는 메시지를 받게 됩니다.

  • 교체 세션 1개의 최대 시간은 90분입니다. API는 세션이 시작되고 나서 90분이 지난 후 수신되는 세션에 대한 배치를 거부합니다. 90분 이상 배치를 전송해야 할 경우 해당 세션의 교체 작업이 완료되기를 기다렸다가 /<CUSTOM_AUDIENCE>/users 엔드포인트의 추가 작업으로 나머지 업로드를 실행합니다.

  • 타겟이 준비되면 POST 호출을 /<CUSTOM_AUDIENCE_ID>/usersreplace로 보내서 맞춤 타겟으로 교체할 사용자 리스트를 지정합니다.

    • 교체 작업을 시작하면 타겟의 operation_statusreplace_in_progress로 전환됩니다.
    • 교체 작업이 완료되지 않으면 타겟의 operation_statusreplace_error로 전환됩니다.

호출 매개변수

/<CUSTOM_AUDIENCE_ID>/usersreplace로 보내는 POST 호출에 다음과 같은 매개변수를 포함할 수 있습니다.

이름설명

session

유형: JSON 개체

필수 항목.

특정 사용자 배치가 업로드되었는지 추적하는 데 사용합니다. 세션 ID와 배치 정보를 포함해야 합니다. 세션 필드를 참조하세요.


한 번에 10,000명까지 타겟에 추가할 수 있습니다. 10,000명 이상 추가하려면 세션을 여러 배치로 분할하세요(모두 하나의 세션 ID가 있어야 함).


예:

{
  'session_id':9778993, 
  'batch_seq':10, 
  'last_batch_flag':true, 
  'estimated_num_total':99996 
}

payload

유형: JSON 개체

필수 항목.

타겟에 업로드하려는 정보를 제공하는 데 사용합니다. 스키마와 데이터를 포함해야 합니다. 자세한 내용은 페이로드 필드를 참조하세요.


예:

{ 
  "schema":"EMAIL", 
  "data":["<HASHED_EMAIL>", "<HASHED_EMAIL>", "<HASHED_EMAIL>" ]
}

세션 필드

이름설명

session_id

유형: 64비트 정수

필수 항목.

세션을 추적하는 데 사용합니다. ID를 생성해야 하고, 그 숫자는 동일한 광고 계정 내에서 고유해야 합니다.

batch_seq

유형: 정수

필수 항목. 1에서 시작해야 합니다.
새 교체 세션은 1batch_seq를 받았을 때 시작합니다. 주어진 session_id에 대해 1의 시퀀스가 포함된 중복 배치는 전송하지 않는 것이 좋습니다.
첫 번째 배치에 레이블을 지정하는 것이 중요합니다. 세션의 나머지 배치는 중복이거나 1을 제외한 모든 숫자가 될 수 있으며, 이는 Facebook에서 이 매개변수를 사용해서 세션 시작을 식별하기 때문입니다. 세션의 나머지 배치는 첫 배치 이후에 보내야 합니다. 첫 번째 배치는 교체 작업의 트리거/전 단계로 생각하세요.

last_batch_flag

유형: 부울

선택 사항.

진행 중인 교체 세션의 모든 배치가 제공되었음을 나타냅니다. true로 설정할 경우 해당 세션에는 추가적 배치가 허용되지 않습니다. 이 플래그를 설정하지 않으면 첫 배치를 수신하고 90분 후에 세션을 자동 중단합니다. 또한 90분이 지난 후 수신된 배치는 모두 삭제됩니다.

estimated_num_total

유형: 정수

선택 사항.

이 세션에 업로드할 총 예상 사용자 수. Facebook 시스템에서 세션 처리를 개선하는 데 사용합니다.

페이로드 필드

이름설명

schema

유형: 문자열 또는 JSON_Array_of_string

필수 항목.

어떤 정보를 제공할지 지정하세요. 이는 다음 리스트 중 단일 키 또는 여러 키가 될 수 있습니다.

  • EMAIL
  • PHONE
  • GEN
  • DOBY
  • DOBM
  • DOBD
  • LN
  • FN
  • FI
  • CT
  • ST
  • ZIP
  • COUNTRY
  • MADID
  • ["hash1", "hash2", ...]. 예: ["PHONE", "LN”, “FN”, “ZIP”, “DOBYM"]

data

유형: JSON_Array

필수 항목.

스키마에 해당하는 데이터 리스트입니다.


예:

  • 스키마가 "EMAIL"일 경우 데이터는 이메일 sha256 해시의 리스트여야 합니다.
  • 스키마가 이전 예시처럼 해시 리스트일 경우 데이터는 "phone_hash_value", "LN_FN_ZIP_DOBYM" 등의 형식이어야 합니다.

POST 요청을 보내면 다음의 필드가 포함된 응답을 받습니다.

이름설명

account_id

유형: 정수

계정 ID.

session_id

유형: 정수

이전에 제공한 세션 ID.

num_received

유형: 정수

이 세션에서 지금까지 수신된 총 사용자 수.

num_invalid_entries

유형: 정수

형식이 잘못되거나 디코딩할 수 없는 총 사용자 수. 이 숫자가 0이 아닌 경우 데이터를 다시 확인하세요.

invalid_entry_samples 유형: JSON 문자열 배열

현재 요청에서 잘못된 항목 샘플은 최대 100개입니다. 데이터를 다시 확인하세요.

Replace API의 일반적 오류

교체 엔드포인트에서 반환된 모든 오류는 오류 코드가 2650입니다. 반환되는 가장 일반적인 오류 하위 코드와 해결 방법에 대한 지침은 다음과 같습니다.

오류 하위 코드설명취해야 할 조치

1870145

타겟 업데이트 진행 중

업데이트 중인 고객 리스트 맞춤 타겟을 교체할 수 없습니다. 타겟 가용성이 '정상'이 될 때까지 기다렸다가 다시 시도하세요.

1870158

교체 세션 시간 초과

교체 일괄 세션의 90분 시간 제한에 도달했습니다. 고객 리스트 맞춤 타겟은 지금까지 업로드된 타겟으로 교체됩니다. 맞춤 타겟을 추가하려면 교체 프로세스가 끝날 때까지 기다렸다가 ADD 작업을 사용하세요.

1870147

교체에 대한 잘못된 업로드 배치

batch_seq가 탐지되지 않았습니다. 정수 1에서 batch_seq를 시작해야 합니다.

1870159

교체 세션 완료됨

이 교체 작업은 last_batch_flag==true를 포함한 배치를 업로드했기 때문에 이미 완료되었습니다. 맞춤 타겟에 추가적인 배치를 추가하려면 교체 프로세스가 끝날 때까지 기다렸다가 ADD 작업을 사용하세요.

1870148

문제 발생

고객 리스트가 완전히 업데이트되지 않았습니다. 타겟 크기가 예상과 크게 다를 경우 다시 시도해 보세요.

1870144

교체에 대해 DFCA 크기를 지원하지 않음

크기가 1억 개 이상인 고객 리스트 맞춤 타겟을 교체할 수 없습니다.

리소스

빌드, 타게팅 또는 공유가 가능한 기타 타겟 유형이 또 있습니다.

  • 웹사이트 기반 맞춤 타겟 — 특정 페이지를 방문했거나 웹사이트에서 행동을 보인 사람을 기반으로 타겟을 만듭니다. 사이트에서 Meta 픽셀의 데이터를 기반으로 타겟을 빌드합니다.

  • 모바일 앱 기반 맞춤 타겟 — 모바일 앱 사용자를 기반으로 타겟을 만듭니다. 앱 이벤트의 데이터를 기반으로 타겟을 빌드합니다.

  • 유사 타겟 — 이미 알고 있는 사람을 파악하고 Facebook 앱의 유사한 사용자에게 광고합니다.

  • 오프라인 맞춤 타겟 — 매장을 방문했거나 고객 서비스에 전화를 걸었거나, 기타 오프라인 방식으로 행동을 취한 사람을 기반으로 타겟을 만듭니다.

  • 캔버스 참여 타겟 — 캔버스에 참여한 사람을 포함하는 타겟을 만듭니다.