Skip to main content

개요

소개

A/B 테스트를 사용하면 광고주가 X에서 도달하고 있는 사용자를 세분화하여, 캠페인 성과를 어떻게 최적으로 최적화할 수 있는지 파악하고 마케팅 전략 수립에 필요한 인사이트를 수집할 수 있습니다. 이러한 세분화는 사용자 그룹 분할(user group split)이라 부르며, 무작위(randomized)이고 상호 배타적입니다. 무작위화를 통해 결과에 영향을 미치는 요인들이 각 그룹에 고르게 분포하게 됩니다. 즉, 그룹 간이나 각 그룹의 예상 행동 간에 본질적인 차이가 없습니다. 따라서 특정 변형안(variation)을 한 사용자 그룹에만 적용하고 다른 그룹에는 적용하지 않았을 때, 캠페인 성과의 차이는 해당 변형안에 기인한 것이라고 볼 수 있습니다. 한 번에 여러 변형안을 테스트하는 것도 가능하지만, 한 번에 하나의 변형안만 테스트할 것을 강력히 권장합니다. 이렇게 해야 관찰된 캠페인 성과 차이에 대한 인과 요인을 명확히 분리할 수 있습니다. 변형안은 캠페인 수준에서 설정합니다. 예를 들어, 광고주가 새로운 크리에이티브의 효과를 테스트하고자 할 경우, 크리에이티브만 다르고 나머지 설정은 모두 동일한 두 개의 캠페인을 생성해야 합니다. 향후에는 라인 아이템(line item) 수준의 변형안 설정도 지원할 계획입니다.

사용 사례

A/B 테스트는 주로 (1) X에서 어떤 방식이 가장 효과적인지 파악해 투자를 최적화하려는 퍼포먼스 광고주의 최적화 관련 사용 사례와, (2) 학습 결과를 마케팅 전략 수립에 반영하려는 브랜드 광고주의 인사이트 도출 관련 사용 사례를 지원하는 데 사용됩니다.  API는 다음을 포함한 모든 캠페인 변수에 대한 A/B 테스트를 지원합니다.
  • 크리에이티브 
  • 타기팅 
  • 입찰 유형
  • 입찰 단위

A/B Testing

A/B Testing은 광고주가 X에서 도달하는 사용자를 세분화하여 캠페인 성과를 최적화하는 최적 방안을 파악하고, 마케팅 전략 수립에 활용할 수 있는 인사이트를 수집할 수 있도록 해줍니다. 이러한 세그먼트는 사용자 그룹 분할(user group splits)이라고 하며, 무작위로 배정되고 서로 배타적입니다. 무작위 배정을 통해 결과에 영향을 미치는 요인들이 각 그룹에 고르게 분포하게 됩니다. 즉, 그룹 간이나 예상 행동 간에 본질적인 차이가 없습니다. 따라서 하나의 변형(variation)만 특정 사용자 그룹에 적용하고 다른 그룹에는 적용하지 않은 경우, 캠페인 성과의 차이는 해당 변형에 기인한다고 볼 수 있습니다. 여러 변형을 동시에 테스트하는 것도 가능하지만, 한 번에 하나의 변형만 테스트할 것을 강력히 권장합니다. 이렇게 하면 관찰된 캠페인 성과 차이를 야기한 인과 요인을 명확히 분리해낼 수 있습니다. 변형은 캠페인 수준 또는 광고 그룹(ad group) 수준에서 설정할 수 있습니다. 광고 그룹은 Ads API의 line item을 통해 설정합니다. 광고 그룹 수준 변형의 예로, 광고주가 새로운 크리에이티브의 효과를 테스트하고자 한다면, 크리에이티브만 다른 2개의 동일한 광고 그룹을 포함하는 하나의 캠페인을 생성해야 합니다.

사용 사례

A/B 테스트는 주로 (1) X에서 어떤 요소가 가장 효과적인지 파악해 투자 효율을 극대화하려는 성과 중심 광고주의 최적화 사용 사례와, (2) 테스트 결과를 바탕으로 마케팅 전략 수립에 활용하려는 브랜드 광고주의 학습 사용 사례를 지원하는 데 사용됩니다.  이 API는 다음을 포함한 모든 캠페인 변수에 대해 A/B 테스트를 지원합니다.
  • 크리에이티브
  • 타게팅
  • 입찰 유형
  • 입찰 단위

속성

A/B 테스트는 중첩 구조로 표현됩니다. A/B 테스트 자체에 대한 최상위 필드와, 각각을 설명하는 필드 집합을 가진 사용자 그룹 객체 배열이 있습니다. 개략적으로, 모든 A/B 테스트에는 다음 정보가 포함되어야 합니다.
  • 테스트 기간으로, start_time 및 end_time 필드로 표현됩니다.
  • 분할이 이루어지는 수준으로, entity_type 필드로 표현됩니다.
  • 최소 2개(최대 30개)의 사용자 그룹으로, 각각 user_groups 배열의 객체로 표현됩니다.
각 사용자 그룹에는 다음 정보가 반드시 포함되어야 합니다.
  • 해당 사용자 그룹에 할당되어야 하는 사용자 비율로, size 필드로 표현됩니다.
  • 해당 사용자 그룹의 사용자 풀을 구성하는 캠페인 ID/라인 아이템 ID로, entity_ids 배열로 표현됩니다.
선택적으로, A/B 테스트 및 사용자 그룹에 대해 name 및 description 값을 설정할 수 있습니다. 유효성 검사 규칙 및 기타 제약 조건에 대한 정보는 아래에서 확인할 수 있습니다. ID나 생성 시각과 같은 기타 메타데이터도 포함되지만, 이는 X에서 자동으로 설정합니다. 캠페인 수준에 대한 A/B 테스트 엔티티 예시는 아래에 나와 있습니다.
다음은 라인 아이템 수준 A/B 테스트 엔티티의 예시입니다.

사용 방법

아래 섹션에서는 A/B 테스트를 생성하고 업데이트하는 방법을 설명합니다. 조회와 삭제는 다른 Ads API 엔드포인트와 동일하게 동작합니다.

생성

POST accounts/:account_id/ab_tests 엔드포인트를 사용해 A/B 테스트를 생성합니다. 이 엔드포인트는 JSON POST 본문만 허용합니다. Content-Typeapplication/json으로 설정해야 합니다. 광고주가 두 개 이상의 캠페인을 설정한 후 A/B 테스트를 생성할 수 있습니다. 위에서 언급했듯이 A/B 테스트에는 반드시 테스트 기간, 분할 수준(split level), 그리고 최소 두 개의 사용자 그룹이 포함되어야 합니다. 각 사용자 그룹은 자신에게 할당할 사용자 비율과 해당 사용자 풀을 구성할 캠페인 ID를 명시해야 합니다. 각 항목에 대해서는 아래에서 더 자세히 설명합니다. 테스트 기간:
  • start_timeend_time 값은 다음을 만족해야 합니다.
    • (A/B 테스트가 생성되는 시점 기준으로) 미래 시점이어야 합니다.
    • 캠페인/라인 아이템의 집행 기간(flight dates)과 겹쳐야 합니다.
  • 테스트는 앱 기반이 아닌 캠페인의 경우 최소 1일, 앱 기반 캠페인의 경우 최소 5일 동안 진행되어야 합니다.
분할 수준:
  • entity_typeCAMPAIGN 또는 LINE_ITEM으로 설정할 수 있습니다.
사용자 그룹:
  • 각 사용자 그룹은 user_groups 배열 내의 하나의 객체로 표현됩니다.
    • 최소 두 개의 사용자 그룹이 필요합니다.
    • 최대 30개의 사용자 그룹까지 허용됩니다.
  • 각 사용자 그룹의 크기는 1.00 이상 99.00 이하의 숫자 값을 문자열로 표현하여 설정합니다.
    • 참고: 모든 객체에 걸친 size 값의 합은 반드시 100.00이 되어야 합니다.
  • 캠페인 ID는 각 사용자 그룹의 entity_ids 배열에 지정해야 합니다.
선택적으로, A/B 테스트 자체나 하나 이상의 사용자 그룹에 대해 namedescription을 설정할 수 있습니다. 다음 요청은 캠페인 수준에서 A/B 테스트를 생성하며, 4일 동안 진행되고 각 그룹에 전체 사용자의 50%가 포함된 두 개의 사용자 그룹을 갖습니다. 첫 번째 사용자 그룹은 캠페인 f2qcwf2tht를 기반으로 하고, 두 번째 사용자 그룹은 캠페인 f2rqif2tws를 기반으로 합니다. 이 요청은 또한 엔티티의 일부에 이름과 설명을 추가합니다. twurl -X POST -H ads-api.x.com “/8/accounts/18ce54d4x5t/ab_tests” -d ’{“end_time”: “2020-12-05T01:00:00Z”, “entity_type” : “CAMPAIGN”, “start_time”: “2020-12-01T01:00:00Z”, “user_groups”: [{“entity_ids”: [“f2qcw”, “f2tht”], “size”: “50.00”, “name”: “first group”},{“entity_ids”: [“f2rqi”, “f2tws”], “size”: “50.00”, “name”: “second group”, “description”: “second AB test group”}], “name”: “first AB test”, “description”: “documentation example”}’
라인 아이템 수준의 A/B 테스트용 캠페인 수준과 라인 아이템 수준에서의 A/B 테스트의 주요 차이점은 entity_type입니다. 라인 아이템 수준에서 A/B 테스트를 수행하려면 entity_type = LINE_ITEM으로 설정해야 합니다. 이는 아래에 설명된, 이미 생성된 A/B 테스트에 대해 수행하는 모든 작업에 적용됩니다.  요구 사항:
  1. A/B 테스트 캠페인의 모든 라인 아이템이 스플릿 테스트에 포함되어야 합니다.
  2. 라인 아이템 수준에서는 균등 분할만 허용됩니다.
  3. 하나의 스플릿 테스트에서 사용자 그룹별로 허용되는 라인 아이템 수는 최대 5개입니다. 
  4. 각 사용자 그룹에는 라인 아이템을 1개만 설정할 수 있습니다.

업데이트

PUT accounts/:account_id/ab_tests/:ab_test_id 엔드포인트를 사용해 A/B 테스트를 업데이트합니다. 이 엔드포인트를 호출할 때는 요청 본문에 JSON blob을 포함해 전송해야 합니다. Content-Typeapplication/json으로 설정해야 합니다. 다른 업데이트 엔드포인트와 마찬가지로, PUT accounts/:account_id/ab_tests/:ab_test_id 엔드포인트를 사용할 때는 URL에 A/B 테스트 ID를 포함해야 합니다. 일반적으로 A/B 테스트는 상태가 SCHEDULED일 때만 업데이트할 수 있습니다. 단, 상태가 LIVE일 때 end_time을 업데이트하는 것은 예외적으로 허용됩니다. 이 엔드포인트는 object ID를 포함하는 부분 JSON을 지원합니다. 다음 원칙이 적용됩니다.
  • 객체나 요소를 추가하거나 제거하려면 전체 배열(및 그 하위 구조)을 전달해야 합니다. 이는 대체(replacement) 작업입니다.
  • 그 밖의 경우에는 키 이름 또는 ID를 참조해 기존 필드를 수정(변경, 추가, 제거)합니다.
    • 필드를 제거하려면 그 값을 null로 설정합니다.
    • 전달되지 않은 필드는 수정되지 않습니다.
예를 들어, 이전에 생성한 A/B 테스트에 세 번째 사용자 그룹을 추가하려면, 기존 두 개의 사용자 그룹 객체와 새로 추가하려는 사용자 그룹을 모두 포함하는 user_groups 배열을 전송해야 합니다. 이를 user_groups 배열을 재생성하는 것으로 생각하면 됩니다. 처음부터 이렇게 생성하는 것처럼 데이터를 전달해야 하며(사용자 그룹 object ID는 전달하지 마십시오). 업데이트 요청의 user_groups 배열은 다음과 같이 표현할 수 있습니다.
여러 객체의 size 값 합계가 여전히 100.00이 되는지에 주목하세요. 만약 첫 두 객체(이전에 각각 50.00으로 설정되어 있던 값)를 업데이트하지 않고 그대로 두었다면, 이 요청은 실패했을 것입니다. 반대로, 첫 번째 사용자 그룹에 설명만 추가하려는 경우라면, 업데이트 요청의 user_groups 배열은 다음과 같이 표현됩니다.
user group 객체는 id로 참조하고, 수정하려는 필드만 요청에 포함합니다.

요청 예시

이 섹션에서는 추가적인 업데이트 요청 예시를 제공합니다. 이 예시들은 순차적으로 호출된다고 가정하면 됩니다. JSON 데이터는 가독성을 위해 포맷되어 있으며, 응답은 생략되어 있습니다. 다음과 같은 수정 작업을 수행하려면 요청은 다음과 같이 표현됩니다. (위에서 사용한 예시와 동일합니다.)
  1. 이름이나 설명 없이 세 번째 사용자 그룹을 추가합니다.
  2. 각 사용자 그룹에 속한 사용자 비율을 변경합니다.
twurl -X PUT -H ads-api.x.com “/8/accounts/18ce54d4x5t/ab_tests/hr7l0” -d ’
다음과 같은 수정을 적용하려면 요청은 다음과 같이 작성합니다.
  1. A/B 테스트 설명을 제거합니다.
  2. 첫 번째 사용자 그룹에 설명을 추가합니다.
  3. 두 번째 사용자 그룹에 엔터티 ID(f2syz)를 추가합니다.
twurl -X PUT -H ads-api.x.com “/8/accounts/18ce54d4x5t/ab_tests/hr7l0” -d ’
세 번째 변경 사항에서는 새 엔터티 ID와 함께 기존의 두 엔터티 ID를 모두 전달해야 합니다. 세 번째 사용자 그룹에는 아무런 변경도 이루어지지 않았다는 점에 유의하세요. 다음 변경 사항을 적용하기 위한 요청은 다음과 같이 표현됩니다.
  1. 두 번째 사용자 그룹을 제거합니다
  2. 각 사용자 그룹에 속한 사용자 비율을 변경합니다

API 참조 문서

A/B 테스트

GET accounts/:account_id/ab_tests

일부 또는 전체 A/B 테스트에 대한 세부 정보를 조회합니다.
리소스 URL
https://ads-api.x.com/12/accounts/:account_id/ab_tests
Parameters
예시 요청
GET https://ads-api.x.com/12/accounts/18ce54d4x5t/ab_tests
예시 응답

POST accounts/:account_id/ab_tests

새 A/B 테스트를 생성합니다. 모든 파라미터는 요청 본문으로 전송되며, Content-Typeapplication/json이어야 합니다.
리소스 URL
https://ads-api.x.com/12/accounts/:account_id/ab_tests
매개변수

사용자 그룹

요청 예시

POST https://ads-api.x.com/12/accounts/18ce54d4x5t/ab_tests -d '{"end_time": "2022-05-30T01:00:00Z", "entity_type" : "CAMPAIGN", "start_time": "2022-05-25T01:00:00Z", "user_groups": [{"entity_ids": ["f2qcw", "f2tht"], "size": "50.00", "name": "first group"},{"entity_ids": ["f2rqi", "f2tws"], "size": "50.00", "name": "second group", "description": "second AB test group"}], "name": "first AB test", "description": "documentation example"}'

응답 예시

PUT accounts/:account_id/ab_tests/:ab_test_id

지정된 A/B 테스트를 업데이트합니다. 모든 매개변수는 요청 본문으로 전송되며, Content-Typeapplication/json이어야 합니다. 이 엔드포인트는 객체 ID를 포함하는 부분 JSON을 지원합니다. 다음 원칙이 적용됩니다:
  • 객체나 요소를 추가하거나 제거하려면 전체 배열(및 해당 하위 구조)을 전달해야 하며, 이는 대체 작업입니다
    • 배열을 다시 생성한다고 생각하면 됩니다
  • 그 외의 경우, 키 이름 또는 ID를 참조하여 기존 필드를 수정(변경, 추가, 제거)합니다
    • 필드를 제거하려면 해당 값을 null로 설정합니다
    • 전달되지 않은 필드는 수정되지 않습니다
일반적으로 A/B 테스트는 statusSCHEDULED일 때만 업데이트할 수 있습니다. 예외가 하나 있는데, A/B 테스트가 LIVE인 동안에도 end_time은 업데이트할 수 있습니다.
리소스 URL
https://ads-api.x.com/12/accounts/18ce54d4x5t/:ab_test_id
매개변수

사용자 그룹

예시 요청
이 요청은 다음과 같은 변경을 수행합니다.
  1. A/B 테스트 설명을 제거합니다
  2. 종료 시간을 변경합니다
  3. 첫 번째 사용자 그룹에 설명을 추가합니다
  4. 각 사용자 그룹의 사용자 비율을 변경합니다
  5. 두 번째 사용자 그룹에 엔터티 ID (f2syz)를 추가합니다
PUT https://ads-api.x.com/12/accounts/18ce54d4x5t/ab_tests/hr7l0 -d '{"description": null, "end_time": "2022-06-01T01:00:00Z", "user_groups": [{"id": "p1bcx", "description": "first AB test group", "size": "60.00"},{"id": "p1bcy", "size": "40.00", "entity_ids": ["f2rqi", "f2tws", "f2syz"]}]}'
응답 예시

DELETE accounts/:account_id/ab_tests/:ab_test_id

지정된 A/B 테스트를 삭제합니다. 참고: A/B 테스트 삭제는 되돌릴 수 없으며, 이후에 해당 리소스를 다시 삭제하려고 시도하면 HTTP 404 상태 코드가 반환됩니다.
리소스 URL
https://ads-api.x.com/12/accounts/:account_id/ab_tests/:ab_test_id
Parameters
예시 요청
DELETE https://ads-api.x.com/12/accounts/18ce54d4x5t/ab_tests/hr7l0

응답 예시