Meta(Facebook) Ads 통합 계획
서드파티 데이터 통합으로 생성된 데이터는 클러스터의 소비 데이터양에 포함됩니다
개요
인터페이스 소개
| 인터페이스명 | 타입 | 세분화 | 어트리뷰션 | 비용 | 수익 | 노출 | 클릭 | 전환 |
|---|---|---|---|---|---|---|---|---|
| Insights API | API | 집계 지표 | ✅ | ✅ | ✅ | ✅ |
Meta(즉 Facebook)는 광고 데이터 수집 인터페이스인 Facebook Ads Insights API를 제공하며, 이 인터페이스를 통해 Meta에 집행한 광고의 지출, 클릭, 노출, 활성화 등 기본 리포트 지표를 가져올 수 있습니다
통합 절차
- Meta for Developers 백엔드에 로그인하여 Business App을 생성합니다
- Access-Token을 생성합니다
- AE 백엔드에 로그인하여 서드파티 통합 모듈로 이동한 후 Meta (Facebook) Insights API 계획을 추가하고 관련 설정을 완료합니다
- AE 시스템이 데이터를 정상적으로 수신했는지 확인하고 리포트를 구축합니다
주의: Facebook Ads API 데이터를 수집하려면 서버가 해외에 있거나 프록시가 설정되어 있어야 합니다.
1. 앱 생성 및 인증 정보 가져오기
1.1 Business App 생성
먼저 Meta for Developers 백엔드에 로그인하여 Create App을 클릭해 앱을 생성합니다
이어서 Create an app 페이지에서 앱 이름과 연락처 이메일을 입력한 후 Next를 클릭하여 계속합니다
Use case 페이지에서 Other를 선택하고 Next를 클릭하여 계속합니다
Select an app type 페이지에서 Business를 선택하고 Next를 클릭하여 계속합니다
마지막으로 앱의 설정 정보를 확인한 후 Create app을 클릭하여 App 생성을 완료합니다
1.2 Access Token 가져오기
앱 생성을 마친 후 Access Token을 가져와야 합니다. 방금 생성한 앱을 선택하고 Dashboard 탭에서 Marketing API를 설정합니다
다음으로 데이터를 수집할 광고 계정의 Facebook 계정이 현재 Business App을 생성한 Facebook 계정과 같은지 확인해야 합니다. 실제 상황에 맞는 생성 방식을 선택하여 Access Token을 생성하십시오.
1.2.1 광고 계정과 Business App이 같은 Facebook 계정에 속한 경우
- https://business.facebook.com에 로그인하여 계정 - 앱으로 이동한 후 새 앱을 추가합니다. 그리고 자산 추가에서 데이터를 동기화할 광고 계정을 해당 앱의 자산에 추가합니다. 또한 이미 시스템 사용자를 생성했다면 사람 추가를 클릭하여 해당 시스템 사용자에게 이 앱에 대한 권한을 부여할 수 있습니다.
- 시스템 사용자를 생성하지 않았다면 사용자 - 시스템 사용자로 이동하여 새 시스템 사용자를 추가하고, 자산 추가를 통해 해당 시스템 사용자에게 이전 단계에서 생성한 앱을 추가합니다.
- 새 토큰 생성을 클릭하고 앞서 생성한 앱을 선택한 후, 사용 가능한 권한에서 read_insights와 ads_read 권한에 체크하여 토큰, 즉 access token을 생성합니다
1.2.2 광고 계정과 Business App의 Facebook 계정이 다른 경우
광고 계정의 Facebook 계정과 Developer의 Facebook 계정이 같지 않다면, 위의 절차에 따라 Access Token을 가져온 후 다음과 같이 추가로 설정해야 합니다:
- Developer의 Facebook 계정으로 https://business.facebook.com에 로그인하여 비즈니스 설정 - 사용자 - 사람 모듈로 이동한 후, 해당 계정의 자산, 즉 앞서 생성한 앱이 보이는지 확인합니다
- 비즈니스 설정 - 사용자 - 파트너를 클릭하고, 자산 액세스 권한을 요청할 파트너의 추가 버튼을 클릭하여 기존 광고 계정이 있는 Facebook 계정을 연결합니다. 광고 계정의 Facebook 계정으로 로그인하여 인증을 완료하면 해당 계정의 광고 계정에 대한 액세스 권한을 얻을 수 있습니다
- 1.2.1의 방법에 따라 시스템 사용자를 생성하고 방금 인증을 완료한 광고 계정을 자산에 추가한 후, 수집할 광고 계정의 권한을 해당 시스템 사용자에게 부여합니다(아래 그림의 빨간색 상자). 이어서 새 토큰 생성을 클릭하여 read_insights와 ads_read 권한이 있는 access token을 생성합니다
2. 계획 설정
Meta 플랫폼에서 준비 작업을 마친 후 AE 시스템에 로그인하여 서드파티 통합 모듈에서 새 계획을 설정할 수 있습니다. 다음은 Meta(Facebook) Insights API의 설정 화면입니다. 이 장의 내용에 따라 계획을 생성하십시오
2.1 인증 정보 설정
인증 정보 아래의 인증 정보 설정 버튼을 클릭하고 팝업 창에 이전 단계에서 얻은 정보를 입력합니다:
참고:
- Ads account ID List: 데이터를 수집할 광고 계정 ID로, 일반적으로 act_로 시작합니다. 여러 계정은 쉼표(',')로 구분합니다
- Access Token: 이전 절에서 얻은 Access Token
2.2 동기화
동기화 모듈에서 AE 시스템이 Meta Insights API 데이터를 정기적으로 수집하는 전략을 설정할 수 있으며, 매일 특정 시각에 일정 기간의 데이터를 수집하도록 선택할 수 있습니다. 1회 최대 31일까지 수집할 수 있습니다. 수집한 데이터도 데이터양에 포함되므로 너무 긴 기간의 데이터를 정기 수집하지 않는 것을 권장합니다
2.3 저장 설정
데이터를 이벤트 형태로 기록할지 제어할 수 있습니다. 끄면 데이터가 이벤트 테이블에 기록되지 않으므로 이 설정을 끄지 마십시오.
2.4 통합 설정
마지막으로 통합 설정 모듈에서 데이터 수집의 세부 설정을 제어할 수 있습니다. 여기에는 데이터의 시간 집계 단위, 수집할 지표 필드와 차원, 저장 후 이벤트 이름, 그리고 커스텀 reportType과 Facebook breakdown의 매핑, 커스텀 reportType과 리포트 이벤트의 매핑 등이 포함됩니다.
통합 설정의 내용은 JSON이며, 다음 내용에 따라 커스텀 설정할 수 있습니다:
| 모듈 | 이름 | 의미 |
|---|---|---|
| sink_event | event_mapping | 저장 후 이벤트 이름. 커스텀 가능, JSON 타입. Key는 source.report_types에 대응하며, Value는 해당 타입 데이터의 저장 이벤트 이름입니다 (커스텀 report_type이 있는 경우 커스텀 report_type과 이벤트의 매핑도 설정해야 합니다) |
| source | report_types | 수집할 데이터 타입, 리스트 타입. 단, 요소를 하나만 입력하여 한 번에 한 리포트의 데이터만 수집할 것을 권장합니다. 기본 지원 타입: country, hour, hourAd, age, platform. 다른 Facebook breakdown 차원으로 확장하려면 extra_params.report_breakdown_map에서 커스텀 reportType을 설정하고, 여기에 해당 key를 입력합니다. |
| metrics | 데이터의 지표, 리스트 타입. 데이터 타입마다 지원하는 metrics가 다르므로 입력 시 주의 필요 | |
| group_by | 데이터의 그룹 차원, 리스트 타입. 데이터 타입마다 지원하는 group_by가 다르므로 입력 시 주의 필요 | |
| transfer | double_columns | 숫자 타입으로 변환되는 필드. 일반적으로 지표 필드의 저장 필드명에 해당 |
| extra_params | report_breakdown_map | 커스텀 reportType과 Facebook API 파라미터의 매핑. Key는 reportType이며, Value에는 level과 breakdowns가 포함됩니다. |
조정이 필요하다면 먼저 source.report_types, 즉 수집할 데이터 타입을 정하는 것을 권장합니다
현재 AE 시스템은 다음 5가지 데이터 타입을 지원하며, 데이터 타입마다 세분화 수준과 분석 차원이 다릅니다:
| 데이터 타입 | 기본값 | 시간 단위 | 그룹 | 가장 세분화된 광고 계층 |
|---|---|---|---|---|
| hour | 시간별 | - | 광고 계층 | |
| country | 일별 | 국가(지역)별 집계 | 광고 계층 | |
| age | 일별 | 연령, 성별 기준 | 광고 계층 | |
사용 권장하지 않음 | 시간별 | - | 광고 계정 계층 | |
| platform | 예 | 일별 | 노출 위치별 | 광고 계층 |
hourAd 세분화 데이터의 지표 필드는 hour 세분화 데이터와 같지만 차원 필드가 더 적습니다. 즉 campaign, ad set, ad 차원 필드를 포함하지 않으므로 이 세분화 수준의 데이터를 새로 연동하는 것은 권장하지 않습니다
위의 기본 제공 데이터 타입 외에도 extra_params.report_breakdown_map을 통해 커스텀 reportType으로 확장할 수 있습니다.
- 지표 필드
지표 필드는 설정의 source.metrics에 해당합니다. 기본적으로 자주 사용하는 일부 지표만 수집합니다. 아래는 Ads Insights API가 제공하는 일부 필드이며, 전체 필드는 공식 문서에서 확인할 수 있습니다. 조정하려면 필요한 지표의 지표명을 source.metrics에 입력하십시오
| 지표명 | 저장명 | 의미 | 기본 여부 |
|---|---|---|---|
| spend | amount_spent_usd | 총 지출 금액 | 예 |
| clicks | clicks_all | 총클릭 수 | 예 |
actions | 여러 필드를 반환하며, 다음 행동 데이터가 포함됩니다:
| 앱 내 행동과 값 | 예 |
action_values | |||
| conversion_values | conversion_values | 전환 값 | 예 |
| conversion_rate_ranking | conversion_rate_ranking | 전환율 순위 | |
converted_product_quantity | converted_product_quantity | 구매 상품 전환 수 | |
| converted_product_quantity_1d_view | 구매 상품 전환 수(1일 조회 어트리뷰션 기간) | ||
| converted_product_quantity_7d_click | 구매 상품 전환 수(7일 클릭 어트리뷰션 기간) | ||
converted_product_value | converted_product_value | 구매 상품 전환 금액 | |
| converted_product_value_1d_view | 구매 상품 전환 금액(1일 조회 어트리뷰션 기간) | ||
| converted_product_value_7d_click | 구매 상품 전환 금액(7일 클릭 어트리뷰션 기간) | ||
| cpp | cost_per_1_000_people_reached_usd | 1,000명 도달당 평균 비용 | 예 |
| cost_per_estimated_ad_recallers | cost_per_estimated_ad_recall_lift_people_usd | 광고 상기 1회당 평균 비용 | |
| cost_per_inline_link_click | cost_per_inline_link_click_usd | 사이트 내 클릭 1회당 평균 비용 *주: 사이트 내란 클릭 후 유저가 여전히 Facebook 계열 제품 안에 있는 것을 의미하며, 이하 동일합니다 | |
cost_per_inline_post_engagement | cost_per_inline_post_engagement_usd | 게시물 참여(Post Engagement) 1회당 평균 비용 | |
| cost_per_outbound_click | cost_per_outbound_click_usd | 사이트 외 클릭 1회당 평균 비용 *주: 사이트 외란 클릭 후 유저가 Facebook 계열 제품 밖으로 이동하는 것을 의미하며, 이하 동일합니다 | |
cost_per_thruplay | cost_per_thruplay_1_day_after_viewing_usd | Thruplay 재생 1회당 평균 비용(1일 조회 어트리뷰션 기간) | |
| cost_per_thruplay_7_days_after_clicking_usd | Thruplay 재생 1회당 평균 비용(7일 클릭 어트리뷰션 기간) | ||
| cost_per_thruplay_usd | Thruplay 재생 1회당 평균 비용 | ||
| cost_per_unique_click | cost_per_unique_click_all_usd | 고유 클릭 1회당 평균 비용 | |
| cost_per_unique_inline_link_click | cost_per_unique_inline_link_click_usd | 고유 사이트 내 클릭 1회당 평균 비용 | |
| cost_per_unique_outbound_click | cost_per_unique_outbound_click_usd | 고유 사이트 외 클릭 1회당 평균 비용 | |
| cpc | cpc_all_usd | CPC | 예 |
| cpm | cpm_cost_per_1_000_impressions_usd | CPM | 예 |
| ctr | ctr_all | 총 클릭률 | 예 |
| ctr_link_click_through_rate | 링크 클릭률 | 예 | |
| engagement_rate_ranking | engagement_rate_ranking | 참여율 순위 | |
| estimated_ad_recallers | estimated_ad_recall_lift_people | 예상 광고 상기 인원 | |
| estimated_ad_recall_rate | estimated_ad_recall_lift_rate | 예상 광고 상기율 | |
| frequency | frequency | 평균 조회 횟수 | 예 |
| impressions | impressions | 노출 수 | 예 |
| inline_link_clicks | inline_link_clicks_in_ad | 사이트 내 클릭 수 | |
| inline_link_click_ctr | inline_link_ctr_usd | 사이트 내 클릭률 | |
| inline_post_engagement | inline_post_engagement_in_ad | 게시물 참여 횟수 | |
| instant_experience_clicks_to_open | instant_experience_clicks_to_open | 인스턴트 경험 광고의 클릭 수 | |
| instant_experience_clicks_to_start | instant_experience_clicks_to_start | 인스턴트 경험 광고의 시작 수 | |
| canvas_avg_view_percent | instant_experience_view_percentage | 인스턴트 경험 광고의 노출률 | |
| canvas_avg_view_time | instant_experience_view_time | 인스턴트 경험 광고의 평균 체험 시간 | |
| outbound_clicks | outbound_clicks | 사이트 외 클릭 수 | |
| outbound_clicks_ctr | outbound_ctr_click_through_rate | 사이트 외 클릭률 | |
| quality_ranking | quality_ranking | 품질 순위 | |
| reach | reach | 도달 수 | 예 |
video_avg_time_watched_actions | video_average_play_time | 동영상 평균 재생 시간 | |
| video_average_play_time_1_day_after_viewing | 동영상 평균 재생 시간(1일 조회 어트리뷰션 기간) | ||
| video_average_play_time_7_days_after_clicking | 동영상 평균 재생 시간(7일 클릭 어트리뷰션 기간) | ||
| video_average_play_time_on_ad | 동영상 평균 재생 시간(광고만) | ||
| video_play_curve_actions | video_play_curve_actions | 동영상 재생 시간 곡선 구간 | |
video_play_actions | video_plays | 동영상 재생 수 | |
| video_plays_1_day_after_viewing | 동영상 재생 수(1일 조회 어트리뷰션 기간) | ||
| video_plays_7_days_after_clicking | 동영상 재생 수(7일 클릭 어트리뷰션 기간) | ||
| video_p100_watched_actions | video_plays_at_100 | 동영상 재생 완료율 | |
| video_p25_watched_actions | video_plays_at_25 | 동영상 25% 재생률 | |
| video_p50_watched_actions | video_plays_at_50 | 동영상 50% 재생률 | |
| video_p75_watched_actions | video_plays_at_75 | 동영상 75% 재생률 | |
| video_p95_watched_actions | video_plays_at_95 | 동영상 95% 재생률 | |
| website_ctr | website_ctr | 웹페이지 클릭률 |
- 차원 필드
차원 필드는 설정의 source.group_by에 해당합니다. 단, 데이터 리포트 타입, 즉 source.report_types가 계산 시의 분석 세분화 수준을 결정하고 차원 필드는 해당 필드의 표시 여부만 결정하므로, 일부 차원은 특정 데이터 리포트 타입에서 사용할 수 없습니다. 조정하려면 필요한 차원의 차원명을 source.group_by에 입력하십시오
| 차원명 | 저장명 | 의미 | 기본 여부 |
|---|---|---|---|
| campaign_id | campaign_id | Campaign ID | 예 |
| campaign_name | campaign_name | Campaign 이름 | 예 |
| adset_id | ad_set_id | Ad Set ID | 예 |
| adset_name | ad_set_name | Ad Set 이름 | 예 |
| ad_id | ad_id | Ad ID | 예 |
| ad_name | ad_name | Ad 이름 | 예 |
| account_id | account_id | 광고 계정 ID | 예 |
| account_name | account_name | 광고 계정 이름 | 예 |
| account_currency | currency | 통화 종류 | 예 |
| objective | objective | 광고 목표 | |
| optimization_goal | optimization_goal | 최적화 목표 | |
| attribution_setting | attribution_setting | 어트리뷰션 설정 | |
| buying_type | buying_type | 구매 유형 |
2.5 이벤트 저장 규칙
-
데이터의 date 필드, 즉 데이터의 날짜를 집계 데이터의 #event_time으로 설정합니다
-
데이터 리포트 타입별 이벤트 이름은 다음과 같습니다:
- country: facebook_ad_level_data_by_country
- hour:facebook_ad_level_data_by_hour
- hourAd:facebook_account_level_by_hour
- age:facebook_ad_level_data_by_age_gender
- platform:facebook_ad_level_data_by_platform
-
지표 필드는 숫자 타입으로 저장되고, 나머지 필드는 문자열로 저장됩니다
커스텀 reportType을 사용하는 경우 이벤트 이름은 sink_event.event_mapping에서 해당 reportType에 대한 설정에 따라 결정됩니다. 예를 들어 device는 facebook_ad_level_data_by_device로 설정할 수 있습니다.
2.6 표준화 필드
| 원본 필드 | 표준화 필드 | 의미 |
|---|---|---|
| account_id | te_ads_object.ad_account_id | 광고 계정 ID |
| campaign_name | te_ads_object.campaign_name | 캠페인 이름 |
| campaign_id | te_ads_object.campaign_id | 캠페인 ID |
| adset_name | te_ads_object.ad_group_name | 광고 그룹 이름 |
| adset_id | te_ads_object.ad_group_id | 광고 그룹 ID |
| ad_name | te_ads_object.ad_name | 광고 이름 |
| ad_id | te_ads_object.ad_id | 광고 ID |
| account_currency | te_ads_object.currency | 비용 또는 수익의 통화 |
| impressions | te_ads_object.impressions | 노출 수 |
| clicks_all | te_ads_object.clicks | 클릭 수 |
| amount_spent_usd | te_ads_object.cost | UA 비용 |

