MMP raw export 컬럼 사전 — Appsflyer, Adjust, Branch가 주는 진짜 데이터
Appsflyer·Adjust·Branch raw export에는 어떤 컬럼이 있고 각 컬럼이 진짜로 무엇을 뜻하는지. media_source·campaign·af_status·reattribution·SKAdNetwork postback 컬럼까지 마케터·데이터팀이 매일 만나는 raw export를 한 글로 정리합니다.
앱 광고 운영자라면 MMP raw export는 매일 만나는 데이터입니다. 그런데 정작 컬럼이 100개가 넘어가는 그 CSV에서 무엇이 진짜 신뢰할 컬럼이고, 무엇이 보조 정보이고, 무엇이 NULL이 많은지를 한 곳에서 정리한 글은 의외로 드물어요. 이 글은 Appsflyer·Adjust·Branch 세 MMP의 raw export 컬럼을 한 표로 정리하고, 각 컬럼이 마케터의 의사결정에서 어떤 의미를 갖는지를 함께 풉니다. 이 글 하나 옆에 두고 raw 데이터 보면 80%의 질문이 끝납니다.
왜 raw export를 직접 봐야 하나
MMP UI 대시보드는 굉장히 잘 만들어졌습니다. 캠페인별 install·revenue·ROAS가 알아서 그려져요. 그런데 운영자가 다음 단계로 가려면 raw export를 직접 만져야 하는 순간이 옵니다.
- “UI ROAS와 BI ROAS가 다르다, 어디서 깨졌나”
- “MMM에 넣을 채널별 install·revenue 일자별 데이터”
- “사내 CDP와 MMP 데이터를 user-level로 매칭”
- “incrementality 분석을 위한 raw event 추출”
- “View-through와 click-through를 분리해서 보고”
이 모든 분석의 1번 입력이 MMP raw export입니다. UI는 가공된 요약이라서 원하는 단위·정의로 못 자릅니다.
5초 요약 — 세 MMP의 컬럼 매핑 표
| 의미 | Appsflyer | Adjust | Branch |
|---|---|---|---|
| 매체 이름 | media_source | network_name | last_attributed_touch_data_tilde_channel |
| 캠페인 | campaign | campaign_name | ..._tilde_campaign |
| 광고 그룹 | adset / af_adset | adgroup_name | ..._tilde_ad_set_name |
| 소재 | af_ad | creative_name | ..._tilde_ad_name |
| install 시각 | install_time | installed_at | last_attributed_touch_data_plus_timestamp |
| 클릭 시각 | click_time | click_time | last_attributed_touch_data_plus_click_timestamp |
| 사용자 ID | appsflyer_id + customer_user_id | adid + user_id | branch_id + developer_identity |
| 디바이스 ID | idfa/idfv/gaid | idfa/gps_adid | idfa/google_advertising_id |
| 매출 | revenue | revenue_usd | last_attributed_touch_data_plus_revenue |
| attribution 종류 | af_status(Organic/Non-Organic) | tracker | last_attributed_touch_type |
| Reattribution | is_retargeting + reattribution_status | is_reattributed | last_cta_view_timestamp |
| 첫 설치인가 | is_first_session | is_first_session | (이벤트 type) |
이 표 한 장으로 MMP 간 데이터 매핑 SQL의 90%가 결정됩니다.
Appsflyer 핵심 컬럼
Appsflyer가 글로벌 1위 MMP인 만큼 raw export 컬럼이 가장 풍부하고, 또 많아서 헷갈립니다. 자주 쓰는 컬럼 그룹을 분류해볼게요.
매체·캠페인 식별
media_source— 매체 (예: facebook_int, googleadwords_int, organic)campaign/campaign_id— 캠페인adset/adset_id— 광고 그룹af_ad/af_ad_id— 소재af_channel— 매체가 지정한 채널af_keywords— 검색 광고의 키워드
Attribution 결과
af_status— Organic / Non-Organic. 가장 중요한 분류 컬럼attribution_type— click_through / view_through / impressionmatch_type— referrer / probabilistic / id_matchingis_primary_attribution— 같은 install의 multiple touch 중 1차 attribution 여부
시간
install_time— 첫 설치 시각 (가장 중요)event_time— 이 이벤트 시각attributed_touch_time— 마지막 어트리뷰션 터치 시각click_time— 마지막 클릭 시각
식별자
appsflyer_id— MMP가 만드는 device-level IDcustomer_user_id— 광고주가 박는 사용자 ID (CDP 매칭용)idfa/idfv/gaid— 디바이스 광고 IDidfv— iOS는 ATT 동의 안 받으면 idfa는 NULL, idfv만 채워짐
매출과 이벤트
event_name— purchase, level_up, tutorial_complete 등 SDK가 보낸 이벤트event_value— 이벤트 페이로드 JSONrevenue— 매출 (자사 통화)revenue_in_selected_currency— 보고서 환산 통화의 매출
Adjust 핵심 컬럼
Adjust는 Appsflyer 대비 컬럼이 좀 더 깔끔하고 표준 OpenAPI 친화적입니다. 자주 쓰는 컬럼:
tracker— Adjust가 만든 deeplink 트래커 IDnetwork_name/campaign_name/adgroup_name/creative_name— 매체 계층installed_at— 첫 설치 시각click_time— 마지막 클릭 시각impression_time— 마지막 view 시각 (view-through 시)adid— Adjust device IDidfa/idfv/gps_adiduser_id— 광고주가 박는 사용자 IDrevenue_usd— USD 변환된 매출currency— 원본 통화is_first_session— 첫 설치/재설치 여부is_reattributed— reattribution 여부engagement_type— click / impression / install
Adjust의 강점은 tracker 한 컬럼만 봐도 캠페인 전체 계층(매체·캠페인·광고그룹·소재)을 다 풀어낼 수 있다는 점입니다. 단일 키로 모든 매핑을 할 수 있어 SQL이 깔끔해요.
Branch 핵심 컬럼
Branch는 deeplink·attribution을 한 번에 다루는 회사라 컬럼 이름이 길고 nested합니다. 그런데 그만큼 한 이벤트의 attribution 맥락 전체가 한 row에 들어있어요.
last_attributed_touch_data_tilde_channel— 매체last_attributed_touch_data_tilde_campaign— 캠페인last_attributed_touch_data_tilde_ad_set_name— 광고 그룹last_attributed_touch_data_tilde_ad_name— 소재last_attributed_touch_data_plus_timestamp— 마지막 touch 시각last_attributed_touch_data_plus_click_timestamp— 마지막 클릭 시각last_attributed_touch_type— click / impression / referrerlast_attributed_touch_data_plus_revenue— 매출branch_id— Branch device IDdeveloper_identity— 광고주 박은 사용자 IDlast_cta_view_timestamp— 마지막 CTA view 시각
Branch는 단일 row 안에 first touch / last touch 정보가 다 들어있어 multi-touch attribution을 한 SQL로 짤 수 있다는 게 강점입니다.
SKAdNetwork postback 컬럼
iOS 14.5 이후 attribution은 SKAdNetwork(SKAN) 기반 conversion value postback이 표준이 됐습니다. MMP raw에 추가로 들어오는 컬럼들이에요.
| 컬럼 의미 | Appsflyer | Adjust | Branch |
|---|---|---|---|
| Conversion value | conversion_value (0~63) | conversion_value | conversion_value |
| Redownload | redownload | redownload | redownload |
| App version | source_app_id 등 | source_app | app_version |
| Postback 시각 | event_time (postback 도착 시각) | postback_at | postback_received_at |
SKAN 데이터는 다음 두 가지 특성이 있어 raw 처리할 때 주의가 필요해요.
- 24~48시간 지연 후 도착 (lag)
- 일정 수 이하의 install은 privacy threshold로 NULL (k-anonymity)
- conversion value 6비트(0~63)에 자사 정의한 의미 매핑이 필요 (compressed value)
깊은 SKAN 다루는 skan-postback-decoding·ios-att-skadnetwork-aem에서 더 자세히 정리했으니 SKAN 운영하시면 같이 보시면 좋습니다.
Reinstall·Reattribution 컬럼이 가장 헷갈리는 자리
같은 user가 앱을 지웠다가 다시 설치하면 그건 새 install인가, 재설치인가. 이걸 어떻게 카운팅하느냐에 따라 ROAS가 달라집니다.
MMP의 룰:
- 첫 설치 후 24시간 이내 재설치 → reinstall (
is_first_session=true,is_reattributed=false) - 첫 설치 후 24시간 이상 후 재설치 → reattribution (
is_first_session=false,is_reattributed=true) - 둘 다 새 install로 매체에 attribution은 됨
마케터 시선에서는 이걸 분리해서 봐야 해요.
is_first_session=true AND is_reattributed=false→ 진짜 신규is_reattributed=true→ 재유입 (재마케팅 효과)
이걸 안 나누면 reattribution이 신규로 잡혀 ROAS가 부풀려져 보입니다.
환경 노이즈를 거르는 필터
raw export에는 자주 보이는 노이즈가 몇 가지 있습니다. 다음 필터를 기본으로 적용하고 분석을 시작하면 시간이 절약돼요.
attribution_type IS NOT NULL— attribution 실패 row 제외media_source <> 'organic'— 광고 분석 시 organic 제외is_first_session = true— 신규 설치만 본다면app_version >= '최신 버전'— 구버전 데이터의 가짜 attribution 제외event_time BETWEEN install_time AND install_time + INTERVAL '30 days'— 이상치 제외
사내 CDP와 매칭하는 키 우선순위
MMP 데이터를 사내 CDP·DW와 매칭할 때 어느 키를 쓸지 표준화가 필요합니다.
customer_user_id(Appsflyer) /user_id(Adjust) /developer_identity(Branch) — 광고주가 박은 사내 ID. 가장 강함.idfa/gaid— 디바이스 ID. ATT 거부면 NULL.appsflyer_id/adid/branch_id— MMP device ID. 약하지만 유일.idfv— iOS 앱별 ID. 한 앱 안에서만 유효.
CDP를 운영한다면 사내 user_id를 MMP SDK 초기화 때 즉시 박는 게 표준입니다. 이걸 빠뜨리면 attribution은 잡혀도 CDP 매칭이 안 돼서 한 단계 더 분석을 할 수 없어요.
마치며
MMP raw export는 컬럼이 많지만 분류 매핑 한 번 해두면 SQL 짜는 게 단순해집니다. 위 표를 옆에 두고 새 분석을 시작할 때마다 컬럼 매핑 먼저 정리하시면 됩니다.
다음 글에서는 매체 자체 raw data — Meta·Google·TikTok·Naver export의 진짜 컬럼들 raw-data-meta-google-tiktok-naver로 이어집니다.
참고
매체 데이터 알아보기 카테고리의 다른 글
전체 보기 →-
2026·05·16
Organic·Direct·Referral의 진실 — GA4, MMP, Amplitude가 organic을 부르는 4가지 방식
GA4의 organic search, MMP의 Organic, Amplitude의 Direct, GA4의 (direct)/(none). 같은 단어가 도구마다 다른 의미예요. 4가지 정의를 한 글로 정리하고 dark traffic·attribution 누락을 어떻게 분리하는지를 풉니다.
-
2026·05·16
매체 raw data 컬럼 가이드 — Meta, Google, TikTok, Naver의 진짜 컬럼들
Meta·Google·TikTok·Naver 각 매체가 주는 raw export 컬럼을 한 표로 매핑합니다. spend·impression·click·conversion·video view·viewability까지, 같은 의미가 매체마다 어떻게 다른 이름으로 들어오는지 정리합니다.
-
2026·05·08
ATT 프롬프트 최적화 — 동의율을 끌어올리는 카피·타이밍·맥락
iOS App Tracking Transparency 동의율은 카피 한 줄과 띄우는 타이밍에 따라 두 배 차이가 납니다. 마케터가 측정 가능한 데이터를 늘리려면 무엇을 점검해야 하는지 정리.
-
2026·05·08
PyMC-Marketing으로 채널 기여도 직접 모델링 — Bayesian MMM 실전
MMM이 비싸고 느린 분석가용 도구라는 인식은 이제 옛말입니다. PyMC-Marketing으로 마케터가 직접 adstock·saturation·prior를 조정하며 채널 기여도를 추정합니다. 모델 fit·posterior 해석·예산 시나리오까지 한 번에 정리.