App-ads.txt란 무엇이며 왜 중요한가
App-ads.txt는 모바일 앱 퍼블리셔가 자신의 광고 인벤토리를 판매할 수 있는 광고 네트워크, 익스체인지, 리셀러를 공식적으로 선언할 수 있도록 하는 IAB Tech Lab 표준입니다. 이는 웹사이트에서 사용되는 ads.txt 표준의 모바일 앱 버전으로, 앱 인벤토리가 프로그래매틱 방식으로 거래되는 고유한 특성에 맞게 설계되었습니다.
해결하려는 문제는 명확합니다. app-ads.txt가 없으면 사기꾼들이 광고 익스체인지에서 여러분의 앱을 사칭하여 앱 이름으로 가짜 노출을 판매할 수 있습니다. 이를 도메인 스푸핑 또는 앱 스푸핑이라 하며, 광고주 예산을 사기성 인벤토리로 빼돌리는 동시에 합법적인 노출에 대한 eCPM을 떨어뜨립니다.
프로그래매틱 광고를 운영하는 모바일 게임 또는 유틸리티 앱 퍼블리셔라면 app-ads.txt 구현은 선택 사항이 아닙니다. 수익을 직접적으로 보호하는 기본 요건입니다.
App-ads.txt가 광고 사기를 방지하는 방법
메커니즘은 간단하지만 효과적입니다. 광고주 또는 수요측 플랫폼(DSP)이 여러분의 앱에서 발생했다고 주장하는 입찰 요청을 받으면, app-ads.txt 파일을 확인하여 해당 주장을 검증할 수 있습니다. 입찰 요청을 제출한 광고 네트워크가 파일에 등록되어 있지 않으면, DSP는 해당 노출이 승인되지 않은 것임을 알고 거부할 수 있습니다.
검증 체인
- 앱 스토어 등록 정보에는 Google Play 또는 App Store의 개발자 웹사이트 URL이 포함되어 있습니다.
- 개발자 웹사이트는 루트 도메인에 app-ads.txt 파일을 호스팅합니다(예: example.com/app-ads.txt).
- DSP와 익스체인지는 이 파일을 정기적으로 크롤링하여 인증 맵을 구축합니다.
- 입찰 요청은 이 맵과 대조하여 확인됩니다. 승인되지 않은 판매자는 필터링됩니다.
이를 통해 앱 스토어 등록 정보에서 승인된 판매자까지 신뢰 체인이 형성되며, 사기꾼들은 개발자 웹사이트 도메인을 제어하지 못하므로 이를 위조할 수 없습니다.
IAB 사양: 파일에 포함되는 내용
app-ads.txt 파일의 각 줄은 IAB Tech Lab이 정의한 특정 형식을 따릅니다. 형식은 웹 ads.txt와 동일합니다.
줄 형식
각 항목에는 쉼표로 구분된 네 개의 필드가 포함됩니다:
- 도메인: 광고 시스템의 정규 도메인입니다(예: google.com, applovin.com).
- 퍼블리셔 계정 ID: 해당 광고 시스템 내에서의 고유 계정 식별자입니다.
- 관계 유형: DIRECT(직접 계정 보유) 또는 RESELLER(제3자가 해당 시스템을 통해 인벤토리를 재판매)입니다.
- 인증 기관 ID: 광고 시스템을 추가 검증하는 선택적 TAG(Trustworthy Accountability Group) ID입니다. Google의 경우 항상 f08c47fec0942fa0입니다.
예시 항목
여러 미디에이션 파트너와 함께 Google Ad Manager를 사용하는 퍼블리셔의 일반적인 app-ads.txt 파일에는 다음과 같은 줄이 포함될 수 있습니다:
- google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0 — 직접 Google Ad Manager 또는 AdMob 계정입니다.
- applovin.com, XXXXXXXXXX, DIRECT, XXXXXXXXXXXXXXXX — 직접 AppLovin 계정입니다.
- unity.com, XXXXXXX, DIRECT, XXXXXXXXXXXXXXXX — 직접 Unity Ads 계정입니다.
- inmobi.com, XXXXXXXXXX, RESELLER, XXXXXXXXXXXXXXXX — 인벤토리에 간접적으로 접근하는 네트워크의 리셀러 항목입니다.
사용하는 모든 광고 네트워크와 미디에이션 플랫폼에서 해당 app-ads.txt 줄을 제공받아야 합니다. 계정 ID나 관계 유형을 임의로 추측하지 마세요.
App-ads.txt 파일 생성 및 호스팅 방법
1단계: 승인된 판매자 줄 수집
사용 중인 각 광고 네트워크, SSP, 미디에이션 파트너에 연락하세요. 계정에 대한 app-ads.txt 항목을 요청하세요. 대부분의 주요 플랫폼은 퍼블리셔 대시보드에서 이를 제공합니다. Google Ad Manager, AdMob, AppLovin MAX, Unity LevelPlay 등 모두 줄을 복사할 수 있는 전용 섹션이 있습니다.
2단계: 파일 생성
정확히 app-ads.txt(소문자, .txt 이외의 확장자 없음)라는 이름의 일반 텍스트 파일을 생성하세요. 수집한 모든 줄을 한 줄에 하나씩 붙여넣으세요. #으로 시작하는 줄은 주석으로 처리됩니다.
3단계: 개발자 웹사이트 루트에 호스팅
https://yourdomain.com/app-ads.txt에서 접근할 수 있도록 파일을 업로드하세요. 이는 Google Play 또는 App Store 등록 정보에 나열된 개발자 웹사이트와 정확히 동일한 도메인이어야 합니다. 정확히 일치하지 않는 한 서브도메인은 작동하지 않습니다.
4단계: 개발자 웹사이트 URL 확인
Google Play Console에서 개발자 웹사이트 URL이 파일을 호스팅한 도메인과 일치하는지 확인하세요. App Store Connect에서도 개발자 정보에서 동일하게 확인하세요. 이 링크가 검증 시스템이 파일을 찾을 수 있게 해줍니다.
피해야 할 일반적인 실수
개념을 이해하는 퍼블리셔들도 app-ads.txt가 제공하는 보호를 약화시키는 구현 오류를 자주 범합니다.
- 잘못된 도메인: 스토어 등록 정보에 example.com이라고 되어 있는데 www.example.com과 같은 서브도메인에 파일을 호스팅하거나 그 반대의 경우. 도메인은 정확히 일치해야 합니다.
- 누락된 항목: 모든 승인된 판매자를 나열하는 것을 잊는 경우. 합법적인 네트워크가 누락되면 DSP가 실제 노출을 필터링하여 필 레이트와 수익이 직접 감소합니다.
- 오래된 파일: 미디에이션 스택에 새 광고 네트워크를 추가하면서 app-ads.txt 업데이트를 잊는 경우. 수익화 파트너가 변경될 때마다 업데이트해야 하는 살아있는 문서로 취급하세요.
- 잘못된 관계 유형: 리셀러를 DIRECT로 또는 그 반대로 나열하는 경우. 광고 파트너가 지정한 정확한 관계 유형을 사용하세요.
- 파일 인코딩 문제: 파일은 text/plain 콘텐츠 유형으로 제공되는 UTF-8 인코딩 일반 텍스트여야 합니다. HTML 래퍼, BOM 문자 또는 기타 인코딩 아티팩트가 있으면 파싱 오류가 발생합니다.
- HTTPS 요건: 파일은 HTTPS를 통해 접근 가능해야 합니다. HTTP 전용 호스팅은 대부분의 크롤러에서 검증에 실패합니다.
Google 및 AdMob 시행
Google은 app-ads.txt 준수를 가장 적극적으로 시행해 온 기업입니다. 2020년 이후 Google Ad Manager와 AdMob은 유효한 app-ads.txt 파일이 없으면 수익에 상당한 영향을 미칠 수 있을 정도로 시행을 점진적으로 강화해 왔습니다.
App-ads.txt가 없으면 어떻게 되나
- 수요 감소: Google 자체의 DV360을 포함한 많은 DSP가 유효한 app-ads.txt 파일이 없는 앱의 인벤토리에 입찰하지 않습니다. 이는 노출에 대한 경쟁을 직접 줄이고 eCPM을 낮춥니다.
- 정책 경고: Google Play Console에서 적절한 app-ads.txt 구현 없이 광고를 게재하면 수익화 정책 경고가 표시될 수 있습니다.
- 스푸핑으로 인한 수익 손실: 파일이 없으면 사기꾼들이 인벤토리의 가짜 버전을 판매할 수 있습니다. 스푸핑된 노출에 지출된 모든 비용은 실제 노출에 지출되지 않은 비용입니다.
중요 참고: Google은 app-ads.txt 파일을 주기적으로 크롤링하고 캐시합니다. 변경 사항이 전파되는 데 24~48시간이 걸릴 수 있습니다. 새로운 수요 소스를 추가할 때 인증 공백이 생기지 않도록 미리 계획하세요.
등록해야 할 광고 네트워크
인벤토리를 판매하거나 재판매할 수 있도록 승인된 모든 주체를 나열해야 합니다. 일반적으로 다음이 포함됩니다:
- 기본 광고 서버: Google Ad Manager 또는 AdMob(대부분의 퍼블리셔는 최소 하나의 Google 항목을 보유합니다).
- 직접 미디에이션 파트너: 직접 퍼블리셔 계정이 있는 모든 네트워크(AppLovin, Unity, Meta Audience Network, Vungle/Liftoff, ironSource, Chartboost, InMobi 등).
- 리셀러 및 익스체인지: 직접 관계가 아닌 미디에이션 플랫폼이나 SSP를 통해 인벤토리에 접근하는 네트워크.
- 관리형 서비스 제공자: RevenueFlex와 같은 서비스를 사용하여 Google Ad Manager를 통해 광고 워터폴을 관리하는 경우, 해당 GAM 항목이 설정의 일부로 제공됩니다.
구현 검증
app-ads.txt 파일을 게시한 후 다음 방법으로 검증하세요:
- 직접 URL 확인: 브라우저에서 https://yourdomain.com/app-ads.txt로 이동하세요. 모든 항목이 포함된 원시 텍스트 파일이 표시되어야 합니다.
- Google Ads 투명성 센터: Google은 app-ads.txt가 올바르게 크롤링되고 파싱되고 있는지 확인할 수 있는 도구를 제공합니다.
- 타사 검증 도구: AppBrain, Apptica 등의 도구가 파일을 스캔하고 형식 오류나 일반적으로 누락된 항목을 표시할 수 있습니다.
- 네트워크 대시보드: 대부분의 광고 네트워크는 퍼블리셔 대시보드에 app-ads.txt 상태 표시기를 보여줍니다. 각각 확인하여 인증이 인식되는지 확인하세요.
수익에 미치는 영향: 수치로 보기
app-ads.txt를 올바르게 구현한 퍼블리셔는 일반적으로 몇 주 이내에 측정 가능한 수익 개선을 경험합니다. 영향은 두 가지 방향에서 옵니다.
첫째, 이전에 필터링되었던 DSP가 이제 경매에 참여하므로 더 많은 수요가 인벤토리를 놓고 경쟁합니다. 이러한 경쟁 증가는 eCPM을 직접 끌어올립니다.
둘째, 브랜드와 에이전시가 타겟팅 기준에서 app-ads.txt 준수를 점점 더 요구함에 따라 광고주 예산이 검증된 인벤토리로 이동합니다. 가장 높은 CPM을 지불하는 프리미엄 수요는 이러한 표준을 시행하는 광고주에 불균형적으로 집중되어 있습니다.
App-ads.txt는 비용이 들지 않고, 구현에 1시간도 걸리지 않으며, 사용자 경험에 부정적 영향을 미칠 위험이 전혀 없는 몇 안 되는 수익화 최적화 중 하나입니다. 아직 설정하지 않았다면 오늘 바로 하세요. 이미 설정했다면 분기마다 감사하여 최신 상태를 유지하세요. 수익이 이에 달려 있습니다.