

MCP(Model Context Protocol)는 AI가 외부 데이터를 활용할 수 있도록 연결해 주는 개방형 표준 프로토콜입니다. 쉽게 말해, AI 도구가 실시간으로 필요한 데이터를 가져와 활용할 수 있게 만드는 기술입니다.
앱스플라이어는 이 기술을 활용해 자연어만으로 마케팅 데이터에 바로 접근 가능한 MCP를 선보였습니다. Claude, ChatGPT 같은 AI 도구와 앱스플라이어를 연결하면, 캠페인 성과 분석부터 오디언스 관리, 딥링크 문제 해결까지 질문만으로 처리할 수 있습니다.
또한 앱스플라이어 MCP는 기술적 배경과 관계없이 누구나 필요한 데이터를 즉시 확인할 수 있도록 지원합니다. 사용자가 직접 질문하든, AI 에이전트에게 작업을 맡기든, 대기 시간 없이 명확한 정보와 실행 결과를 바로 받아볼 수 있습니다.

앱스플라이어 MCP는 Claude(클로드), ChatGPT, Gemini 같은 사용자가 선호하는 LLM(Large Language Model) 도구와 앱스플라이어를 연결합니다. 사용자가 질문을 입력하면 MCP가 자동으로 필요한 데이터를 찾아 이해하기 쉬운 형태로 보여줍니다. 어트리뷰션, 분석, 오디언스, OneLink(원링크) 등 앱스플라이어의 모든 기능을 자연어로 바로 활용할 수 있습니다.
또한 앱스플라이어는 7,000개 이상의 주요 브랜드가 신뢰하는 풍부하고 정확한 데이터를 제공하기 때문에 개인정보 보호를 철저히 준수하며 마케터가 필요한 인사이트를 즉시 확인하고 빠르게 의사결정을 내릴 수 있도록 돕습니다.
앱스플라이어 MCP는 개방형 구조로 설계되어 있어, 원하는 방식으로 커스터마이징할 수 있습니다. 미디어 믹스를 최적화하는 AI를 만들거나, 오디언스를 자동으로 관리하는 시스템을 구축하거나, 내부 도구에 MCP를 연결하는 등 복잡한 설정 없이도 필요한 기능을 유연하고 자유롭게 구현할 수 있습니다.

채널별 ROAS를 확인하고 싶거나, 어떤 캠페인이 가장 높은 LTV를 만드는지 알고 싶을 때 앱스플라이어 MCP를 활용해 보세요. 질문만 입력하면 필요한 데이터를 바로 확인할 수 있습니다.
앱스플라이어 MCP는 사람이 직접 질문하거나 AI 에이전트가 자동으로 작업하는 방식 모두 지원합니다. Growth, CRM, 제품, 마케팅 팀 등 어떤 팀이든 별도의 설정이나 개발 작업 없이 필요한 인사이트를 바로 확인할 수 있습니다.
앱스플라이어 MCP는 앱스플라이어의 어트리뷰션 기술을 기반으로 만들어졌습니다. 모든 데이터는 개인정보 보호 규정을 철저히 준수하며, 설계 단계부터 암호화와 보안을 적용했습니다.

캠페인 성과를 실시간으로 확인하고, ROI를 비교할 수 있습니다. 채팅창에서 직접 확인하거나, AI 에이전트를 활용해 성과 모니터링부터 최적화, 작업 실행까지 자동으로 처리하세요.
오디언스가 어떻게 나뉘고 활용되는지 한눈에 확인할 수 있습니다. 질문만으로 오디언스 현황을 조회하거나 실시간 성과를 분석할 수 있으며, 중복된 오디언스를 찾아내고 개선 방안을 제안하는 AI를 직접 만들 수도 있습니다. 필요하다면 여러 채널의 오디언스 정보를 자동으로 동기화하거나 작업을 실행할 수도 있습니다.
대화형 인터페이스로 OneLink 템플릿과 링크 동작을 간편하게 점검하거나, 에이전트를 활용해 링크 상태를 지속적으로 모니터링할 수 있습니다. 문제가 있는 링크를 자동으로 찾아내고, 모든 캠페인이 올바르게 운영되도록 관리할 수 있습니다.
앱 설정이나 구현 방법이 궁금할 때 질문만으로 바로 확인할 수 있습니다. AI 어시스턴트가 설정 오류를 찾아내 해결 방법을 알려주거나, 상황에 맞는 가이드 문서를 자동으로 보여줍니다.
앱스플라이어 MCP는 AI 기반 마케팅을 향한 중요한 첫걸음입니다. 사람의 창의성과 AI의 분석 능력이 결합되면, 마케터는 더 나은 의사결정을 내릴 수 있습니다.
MCP는 캠페인 분석, 오디언스 확인, 딥링크 관리 같은 마케터들의 핵심 업무를 지원하고 있으며, 추후 예측 분석과 에이전트 기반 자동화까지 확대 될 예정입니다. 데이터 기반으로 더 빠르고 정확한 의사결정을 내리고 싶다면, 지금 바로 앱스플라이어 MCP를 경험해 보세요.
.png)
지난 편에서는 각 솔루션별 데이터 수집 방법(바로가기)에 대해서 알아보았습니다.

1. Third Party 데이터 수집 자동화
2. 수집된 데이터 전처리하기
3. 시각화하기
이번에는 수집된 데이터를 활용하여 어떻게 전처리 해야 되는지 알아보겠습니다.
각 데이터 셋들은 분석하려는 차원(dimension)을 기준으로 집계(group by)를 통해서 동일한 형태로 전처리한 후 조인 연산을 통해 데이터를 통합하는 과정이라고 생각하시면 됩니다.
마케팅 성과를 분석하기 위해서 필요한 데이터 다음과 같습니다.
Dimension : 날짜(일별), 유입소스(GA4 = utm_source, Appsflyer = Media_source), 캠페인
Metric : 구매수, 매출, 인스톨 수
GA4가 웹, 앱 모두 트래킹을 할 수 있지만 WEB은 GA4, APP은 MMP로 성과를 합쳐서 보실 겁니다.
GA4, Firebase는 앱과 웹 내 고객 행동 분석에 주로 쓰이는 툴이고 MMP 는 광고 성과를 측정하는 툴이니깐요
그러면 이렇게 됩니다.
<GA4 데이터 집계> - WEB
Dimension : 날짜(일별), 세션 소스, 캠페인
Metric : 구매수, 매출
<MMP 데이터 집계> - APP
Dimension : 날짜(일별), Media_source, 캠페인
Metric : 구매수, 매출, 인스톨 수
집계된 두개의 테이블을 UNION 다시 한번 집계를 해줍니다.
이렇게 하면 집계된 웹앱 데이터 통합이 되었습니다. (MMP 데이터 전처리 과정은 생략)
Dimension : 날짜(일별), Media_source, 캠페인
Metric : 구매수, 매출, 인스톨 수
브레이즈 커런츠(braze currents)데이터는 유저 인게이지먼트 데이터입니다.
여기에는 유저별로 어떻게 우리 서비스로 참여를 하고있는지를 기록한 데이터들이 기록되어 있으니 메시지 발송 수단별로 노출, 클릭 성과들이 들어있습니다. 하지만 우리는 성과(구매) 판단은 MMP, GA4로 해야 하므로 서로 다른 데이터들을 어떻게 통합해서 볼지를 알아보겠습니다.
커런츠 데이터는 아래와 같이 구성이 되어있습니다.

위와 같은 데이터를 일자, 메세지 발송 타입, 캠페인 or 캔버스별 발송수, 노출수, 클릭수 데이터를 집계를 하기 위해서는 유니크한 ID를 나타내는 차원 데이터를 만들어 줘야 합니다.
동일한 유저라도 캠페인, 캔버스, 베리에이션 등 다양한 형태로 타겟이 될 수 있으므로, 아래와 같이 유니크한 차원 데이터를 만들기 위해 새로운 아이디를 생성합니다. (해당 아이디는 발송 타입별로 카운트하기 위해 활용됩니다.)
차원의 이름은 원하시는대로 명명하시면 되고 저는 user_id_dispatch_id 이렇게 명명하였습니다.
-- 태블로 계산식
IFNULL([User Id],'') + '-' +
IFNULL([Campaign Id],'') + '-' +
IFNULL([Message Variation Id],'') + '-' +
IFNULL([Canvas Id],'') + '-' +
IFNULL([Canvas Variation Id],'') + '-' +
IFNULL([Canvas Step Message Variation Id],'') + '-' +
IFNULL([Dispatch Id],'')
다음으로 캠페인 단위로 성과를 집계할 예정이기 때문에 캠페인 차원을 만들어줘야 합니다.
왜냐하면 브레이즈에는 캠페인과 캠버스로 나뉘는데 campaign_name 값이 존재하면 canvas_name 이 빈값이고 거꾸로 canvas_name 값이 존재하면 campaign_name이 빈값이기 때문입니다.
-- 태블로 계산식
IFNULL([Campaign Name],[Canvas Name])
{send_type}_click 이런 식으로 차원 이름을 명명하고 아래와 같은 태블로 계산식으로 차원을 만들어줍니다.
이렇게 되면 email_click, push_click, in_app_message_click 이벤트별로 ID(user_id_dispatch_id)를 생성됩니다.
-- 태블로 계산식
{ FIXED [user_id_dispatch_id],[Event Type] : COUNTD(IF CONTAINS([Event Type], 'inappmessage_click') THEN [user_id_dispatch_id] END)}
최초에 S3에 적재된 currents 데이터(avro 파일)를 DW에 적재할 때 파일별 Event 구분을 위해 Event_Type 칼럼을 생성하였습니다. (이전 글을 참고해 주세요)
['users.messages.email.Open.avro',
'users.messages.email.Click.avro',
'users.messages.pushnotification.Send.avro',
'users.messages.inappmessage.Click.avro',
'users.messages.email.Delivery.avro',
'users.messages.pushnotification.Open.avro',
'users.messages.inappmessage.Impression.avro']
-- 태블로 계산식
IF CONTAINS([Event_Type], 'email') then 'email'
elseif CONTAINS([Event_Type], 'push') then 'push'
elseif CONTAINS([Event_Type], 'inappmessage') then 'iam' end
이제 집계를 위한 전처리는 완료되었습니다(세세한 전처리 과정은 생략됨)
이제 위에서 만들었던 차원을 가지고 집계를 합니다.
일자별, send_type, campaign/canvas, device_category 별 오픈, 클릭, 노출, delivery 데이터는 아래와 같이 집계되었습니다.

통합된 GA4 / MMP 데이터와 커런츠 데이터를 통합해야 되는 과정이 또 남았습니다.
어떻게 이 두 데이터를 엮어야 될까요?
조인키를 위에서 집계한 차원 데이터로 잡고 Full Outer Join으로 데이터를 조인합니다.
이유는 특정 날짜에 브레이즈 커런츠 데이터는 존재하는데 성과 데이터(GA4, MMP) 데이터가 존재하지 않는다면 매칭될 수 없으니 누락이 되어버립니다. 거꾸로 성과 데이터(GA4, MMP) 데이터가 존재하는데 브레이즈 커런츠 데이터가 존재하지 않을 경우 누락이 되어버리기 때문입니다.
광고 성과 데이터 전처리하는 예시를 통해 Full Outer JOIN 이 어떻게 데이터를 처리되는지 예시를 통해 잠깐 확인해 보겠습니다
2024년 1월 1일 twitter 채널의 e 캠페인에서 비용이 1000원 소진했습니다. 그런데 GA4, MMP 데이터에는 해당 광고 채널의 캠페인에서 전환이 아예 일어나질 않았습니다. 하지만 비용이 발생했기 때문에 이 데이터를 버릴 수는 없겠죠? 무조건 살려야 됩니다.
거꾸로 광고 데이터에서 비용은 발생하지 않았는데 Attribution Window로 인해 전환이 발생했습니다. 이것도 버릴 수 없겠죠?
이 두 데이터에서 LEFT JOIN 또는 RIGHT JOIN을 수행하게 되면 조인키에 대응하지 않은 데이터는 매칭이 안되어 누락이 되어 버립니다. 이를 방지하기 위해서 INNER, LEFT OUTER, RIGHT OUTER 조인 집합을 생성하는 FULL OUTER JOIN을 수행합니다.
결과를 보면 각 테이블의 모든 데이터들이 출력이 되는 걸 알 수 있습니다.

본론으로 돌아와서!
Full Outer Join을 수행하기 전에 앞서 GA4, MMP 데이터를 합친 후 우리는 CRM 데이터만 필요하기 때문에 CRM 데이터만 필터를 합니다.
이제 Braze Current 데이터와 성과 데이터(GA4, MMP)를 날짜, 유입소스명, 캠페인명을 조인키로 두고 Full Outer Join 을 수행합니다.(분석하고자 하는 차원데이터가 추가로 더 있다면 추가로 필요한 차원도 조인키로 활용하시면 됩니다.)
이와 같은 방식으로 Paid 성과 데이터를 전처리 할 때도 위와 같은 방법으로 수행하면 됩니다.
데이터를 전처리 할 때 중요한 건 분석하고자 하는 결과물을 먼저 그려본 뒤에 결과를 도출하기 위해서 각 테이블을 어떻게 만들어 갈 것인지 생각하면서 만들어가면 됩니다. 실제로 전처리하다 보면 자잘하게 처리해야 되는 부분이 상당히 많습니다.
특히 데이터를 통합하기 위해서는 무엇보다 네이밍 컨벤션이 가장 중요한 점은 강조하지 않을 수 없습니다.
데이터 수집까지 잘했는데 캠페인 네이밍 컨벤션이 서로 다르다?.. 데이터 통합은 불가능합니다..
네이밍 컨벤션은 말 그대로 명명 규칙입니다.
위에서 언급한 대로 우리가 데이터 통합을 위해 차원 데이터를 조인키로 활용한다고 했었는데 캠페인 차원이 MMP, GA4, Braze or 광고 데이터가 모두 다르면 안 되겠죠? 아래와 같이 통일을 시켜야만 데이터를 연결할 수 있습니다.

여기까지 마케팅 데이터 수집부터 전처리 과정까지 알아보았습니다.
다음 글에서는 이 데이터를 활용해서 시각화 하는 방법을 살펴보겠습니다.

업무 시간을 데이터 수집과 데이터 전처리에 시간을 쓰는 마케터와 데이터 수집 자동화된 환경에서 성과 분석과 기획에 더 많은 시간을 쓰는 마케터 누가 더 많이 성장할까요?
답은 알고 계실 거에요. 당연히 성과 분석과 기획에 더 많은 시간을 쏟는 마케터가 장기적으로 많은 성장을 하겠죠
회사 내에서 GA4, MMP(AppsFlyer), Braze를 사용하고 있는데 엑셀로 데이터 수집해서 가공하는 시간을 대부분을 사용하고 있다면.. 하루 빨리 마케팅 데이터 수집 자동화하고 BI 구축을 시도해보세요.
관련 주제는 내용이 많기도 해서 3개로 나눠서 발행할 예정입니다.
이번 편에서는 MMP(AppsFlyer), GA4, Braze 데이터 수집을 자동화 시키는 프로세스를 설명해보려고 합니다.
데이터를 적재하고 시각화까지의 프로세스를 간단하게 도식화하면 아래와 같습니다.

브레이즈 currents 는 유저의 engagement 이벤트의 실시간 데이터 스트림입니다. 이 데이터를 Avro 파일로 제공해서 BI 및 분석 할 수 있게 지원을 해주는 장점이 있습니다. 단점은 가격이..
브레이즈 어드민에서 아래처럼 어떤 데이터를 보낼지 선택해서 어디에 저장할지 S3, Cloud Storage, Azure Blob Storage 중 선택해서 적재를 시작합니다. (가이드 링크)

예를 들어 Amazon S3 적재를 시작하게 되면 아래처럼 이벤트 별로 폴더가 생성되어 분리 적재됩니다.
브레이즈 Currents 는 At-least-once delivery 정책으로 1시간 단위로 데이터를 적재합니다.

각 폴더 안에는 Avro 파일(각 파일의 Schema는 동일한 형태)이 들어 있는데 이 파일 내에는 이벤트를 구분하는 필드가 없습니다.
일단 여기서 필요한 이벤트 데이터들을 지정해서 합쳐야 되는데 여기서 문제가 있습니다.
그래서 파일 안에 어떤 이벤트의 파일인지 지정해줘야 합니다.
아래와 같이 Avro 파일 명을 확인하여 event_type 필드의 key 값을 추가 필요합니다.

앱 데이터를 측정하는 앱스플라이어도 마찬가지로 데일리 리포트를 만드려면 OS별, UA, RT(리타겟팅)별로 csv 파일을 12번 클릭해서 받아 정리해야 되지만 API 를 활용하면 충분히 자동화 할 수 있습니다.

다만 앱스플라이어 데이터를 어떻게 볼지 기준에 대한 합의를 유관 부서와 먼저 하시는 걸 권장드리고 대행사에게도 우리 기준으로 맞춰 달라고 요청을 해야 되겠죠?
이런 기준으로 데이터를 쌓고 있었는데 데이터를 집계하는 기준이 서로 차이가 있다면 .. 다시 작업해야 되는 불상사가 생길 수 있습니다.
이게 무슨 말이냐면 앱스플라이어 Media Source 중 SRN 매체들의 경우 개인정보 보호 이슈로 rawdata에 포함되지 않아서 집약형 데이터를 활용합니다.(가이드 링크)
그래서 SRN 매체를 사용 중이시라면 집약형 데이터를 활용해서 집계를 해야 하는데 집약형 데이터는 LTV 데이터라서 조회 시점마다 Total Revenue 값이 달라집니다. (관련글 보러가기 링크)

1/1 데이터를 1/7일에 조회했을 때랑 1/14일에 조회했을 때의 total revenue가 달라진다는 의미입니다. 이러게 되면 가장 최근에 조회한 일자일 수록 ROAS가 높게 나오겠죠?
또한 skan 리포트도 마찬가지로 SRN 매체 광고를 운영 중에 있다면 해당 리포트도 받아야겠죠? 이것도 마찬가지로 조회시점마다 성과 숫자가 달라질 수 있습니다
앱스플라이어 데이터 자동화 수집을 위해선 크게 3가지 api 가 필요하고 세부적으로는 인스톨과 인앱이벤트 데이터를 가져와야 합니다. (추후에 앱스플라이어 데이터를 전처리하는 방법에 대해서 포스팅 해보겠습니다.)
GA4 빅쿼리는 실무에서 쓰고 있는 조직이 있나 싶을 정도로 .. 사용하기가 좀 꺼려집니다. 원시 데이터라서 데이터 가공의 자유도가 엄청나게 높지만.. 집계를 하는 입장에서는 굉장히 머리 아픕니다. 정합성을 어디다가 맞춰야 되는지..

그래서 광고 데이터 성과를 집계할 때는 특별한 이유가 없다면 GA4 API 데이터를 소싱하는 게 정합성 의심의 여지가 없기 때문에 무조건 낫다고 봅니다.
GA4 데이터를 소싱할 때 진짜 진짜 주의해야 할 점이 바로 샘플링입니다.
샘플링 진짜 …. 데이터량이 많으면 더 심해집니다.

GA4 API 를 14일치만 호출해도 샘플링된 양이 상당합니다.

GA4 Query Explorer 에서도 조회해도 어드민이랑 큰 차이가 있어서 구글 측에 문의를 해보니 여기도 데이터 조회 일자 범위가 넓으면 샘플링이 적용된다고 합니다. 추후에 해당 이슈 해소하겠다고 합니다.

일단 우리는 샘플링 되지 않을 정도의 날짜 범위로 api 를 호출해서 적재를 하는 것이 좋습니다.
이번 편은 마케팅 데이터 수집 자동화에 대해서 알아보았고 다음 편에서는 인사이트 도출을 위한 데이터 전처리 방법에 대해서 알아보겠습니다!

앱 마케팅의 성과 측정을 위한 방식과 데이터의 해석은 쉽지 않습니다.아마 경험이 있으시다면 내가 성과를 제대로 측정하고 있는지 다른 데서도 이렇게 하는지 앱 성과 측정을 잘하는 곳은 어떻게 하는지 많이 궁금해하실 겁니다.
특히 개인정보보호 이슈로인해 앱 마케터들이 필요한 성과 측정 지표에 구멍이 뚫리기 시작했었죠.
이를 위해 MMP들은 이를 보정하기 위해 굉장히 많은 기술로 앱 성과를 측정할 수 있도록 보완해주고 있습니다.하지만 이를 제대로 사용해야만 데이터 사각지대를 피할 수 있습니다.
데이터 사각지대는 마치 안개가 짙은 도로에서 운전하는 것에 비유할 수 있을 것 같습니다.안개가 짙으면 운전자는 도로의 일부만 볼 수 있으며, 나머지는 안개에 가려져 보이지 않습니다.
마찬가지로, AppsFlyer의 로우데이터 리포트에서는 일부 데이터가 제한되거나 가려져 있어 전체적인 상황을 완전히 파악하기 어려운데 이를 데이터 사각지대라고 표현합니다.
모바일 앱 성과를 측정할 때는 플랫폼 및 매체사의 개인 정보 보호 및 그에 따른 데이터 공유 정책에 기반한 로데이터 리포트 제한으로 인해 데이터를 제공받지 못하는 현상이 발생합니다.
전환(설치 및 재참여) 및 제한 광고 네트워크가 기여한 관련 인앱 이벤트가 제한되어 앱스플라이어에서 데이터를 내려받으면Media Source 필드는 restricted 로 채워지고 어트리뷰션 필드는 비어 있거나 null로 채워집니다.

또한 데이터 보존 및 삭제 정책에 따라 유저 레벨의 데이터는 AppsFlyer에 의해 제한된 기간 동안 보존되고 보존 기간이 끝나면 사용자 이벤트는 원래 미디어 소스 대신 유기적(organic) 소스로 변경됩니다.
이외에도 여러 제약 조건이 있어서 공식문서를 살펴보시길 권장드립니다.
리타겟팅 어트리뷰션과 UA 어트리뷰션 데이터를 통합할 때인앱 이벤트 성과 중복이 생길 수 있는 점

인앱 이벤트 성과 중복이 된다는 개념을 살펴보자면
아래 이미지 처럼 리타겟팅 캠페인으로 유입된 유저의 데이터는 UA, RT(retargeting) 리포트에 중복으로 기록됩니다.

데이터를 다운 받으시면 아래 이미지와 같은 컬럼을 확인할 수 있습니다.

위와 같은 현상을 보완할 수 있는 앱스플라이어의 기능으로는 무료로 사용 가능한 데이터 락커의 코호트 애널리틱스 입니다.


하지만 단점도 물론 존재합니다.
이번 글은 앱스플라이어를 사용하면서 데이터 사각지대에 빠지지 않기 위한 방법으로 데이터 락커 코호트 분석 기능을 소개해드렸습니다.
다음번에도 앱스플라이어를 제대로 사용할 수 있게 도움을 드릴 수 있는 글을 작성해보려 합니다.
앱스플라이어(AppsFlyer) MMP 제대로 사용하고 있는걸까? 데이터 사각지대 대응 솔루션 ft. 데이터 락커
https://www.linkedin.com/company/martinee