iOS 14.5에 대한 Branch 광고 분석 변경 사항

Alex Bauer

04월 08, 2021

iOS 14.5 출시가 임박했으며, 그와 함께 iOS 모바일 마케팅에 일부 주요 혼란이 발생할 것입니다. 이 블로그 포스트에서는 이러한 변경사항이 여러분의 Branch 데이터에 어떻게 반영되는지를 보여드리고, Branch 앱 설정에 적용할 수 있는 몇 가지 업데이트를 설명하겠습니다.

원하실 경우 이 자료의 영상 설명도 함께 참고하실 수 있습니다.

먼저 오늘 논의 내용의 전반적인 영향에 대해 명확히 설명하겠습니다.

왼쪽에 현재까지의 Branch 어트리뷰션 데이터 예시가 있습니다. 하나의 통합된 데이터 세트로, 전환 크레딧이 모든 채널에서 중복 제거됩니다. 다른 모든 어트리뷰션 시스템과 마찬가지로, 항상 ‘알 수 없는(Unknown)’ 전환 버킷이 있을 것입니다. 이 버킷은 때때로 ‘오가닉’ 또는 ‘어트리뷰션되지 않은’이라고도 불리지만, 다른 한 편으론 ‘마케팅 캠페인으로 어트리뷰션하지 않은 전환’이라는 동일하게 해석될 수 있습니다.

오른쪽은 애플의 새로운 iOS 14 개인정보 보호 정책이 시행된 후 예상되는 Branch 데이터의 모습입니다. 기존에 봐왔던 하나의 통합된 리포트에 이전에 광고 채널에 어트리뷰션된 모든 전환이 이제 ‘알 수 없음(Unknown)’으로 표시됩니다. 그리고 애플의 새 SKAdNetwork 프레임워크를 통해 제공되는 광고에 대한 별도의 어트리뷰션 데이터 풀이 있을 것입니다.

애플이 개발한 SKAdNetwork로 인해 이 광고 데이터는 현재 많이 사용되는 광고 캠페인 유형의 일부에만 사용할 수 있습니다. 이 데이터는 디바이스 레벨의 데이터가 아닙니다. 즉, 여러분이 사용했던 데이터보다 훨씬 덜 세분화되어 있으며 다른 마케팅 채널에 의해 중복 제거될 수 없습니다.

다행히도, 중복 제거된 통합 리포트 내에서 이에 해당하는 세분화된 디바이스 레벨의 광고 데이터를 다시 얻을 수 있는 방법이 있습니다. 바로 유저가 애플의 새로운 AppTrackingTransparency 프레임워크를 통해 옵트인할 수 있도록 하는 것입니다.

본문에 들어가기 전에 앞서 말하자면: iOS14.5 도입 이전과 같은 방식으로 구현될 수 있는 완벽한 대처방안은 없습니다. MMP, 애드 네트워크, 광고주에 이르기까지 이 생태계의 모든 사람들은 애플의 변경 사항에 어떻게 대처해야 할지 고민해야 합니다.

iOS의 광고 어트리뷰션은 iOS 14.5 출시 이후 훨씬 더 복잡해질 것입니다. 이 글에서 다루는 Branch 제품 개선 사항은 이러한 문제에 도움을 드리고자 마련되었습니다. 다만 예전과 같은 상태로 사용하실 수는 없을 것입니다.

Branch 데이터가 어떻게 변경되나요?

먼저 간단한 플로우차트를 통해 어떤 Branch 고객이 이러한 변경 사항의 영향을 받게 될지 설명해보겠습니다. 

만약 여러분이 광고 어트리뷰션에 Branch를 사용 중이고 유저에게 ATT 프롬프트를 표시하려는 경우 브랜치의 이번 변경 사항을 필독하시기 바랍니다.

Branch가 이러한 업데이트를 해야 하는 이유는 무엇일까요? 가장 큰 문제는 ATT의 옵트인 프로세스가 순차적인 문제를 야기한다는 것입니다. 유저는 일반적으로 광고를 클릭하고, App Store에서 앱을 다운로드하고, 앱을 여는 전환 여정을 거칩니다. 여기까지는 문제가 되지 않습니다.

문제는 다음에 일어납니다. 일단 앱이 처음으로 오픈되면 Branch SDK가 실행되고 설치 어트리뷰션이 발생해야 합니다. 하지만 아직 유저에게 ATT 모달을 표시하지 않은 상태입니다.

여기서 순차적으로 문제가 발생합니다. 처음에 앱을 오픈한 후 얼마 후에 모달을 통해 허용되기 전까지는 iOS 광고 식별자(IDFA)를 확보하지 못하고 디바이스 레벨에서 광고 전환을 어트리뷰션할 수 있는 권한을 갖지 못합니다.

Branch가 도입한 기능 변경은 이 플로우차트에서의 설치에 대한 광고 어트리뷰션을 복구하는 데 도움이 되도록 설계되었습니다. Branch는 다음과 같은 몇 가지 중요한 요구사항을 반영할 필요가 있었습니다.

  1. 새로운 방식이 애플의 ATT 정책을 모두 준수해야 합니다. 일부 다른 MMP는 ATT 프롬프트를 통한 유저 옵트인을 확보하지 않고도 확률적 매칭을 통해 배후에서 ‘속임수’를 사용할 계획이라고 들었습니다. Branch는 애플이 이러한 유형의 행동을 단속할 것이라고 생각하므로, 고객들이 App Store에서 정책 위반으로 차단당하는 것을 방지할 방법을 면밀하게 고민하고 있습니다.
  2. 이미 리포트된 이벤트를 변경하여 ‘해당 전환 이력을 오버라이트(overwrite)’할 수 없습니다. 소급 데이터 업데이트로 인해 문제가 발생하고 워크플로우가 훨씬 복잡해질 수 있습니다.
  3. Branch SDK는 여전히 최초로 앱을 오픈할 때 실행되어야 합니다. 이는 애플의 ATT 정책에 영향을 받지 않는 자체 채널 및 오가닉 채널의 딥링킹(Deep Linking) 및 어트리뷰션에 필요합니다.

여러분은 이처럼 새롭게 발생하는 복잡한 모든 문제를 보면서 ‘유저를 ATT 모달을 통해 옵트인하게 하는 것이 가치 있는 일일까?’라고 생각하실 수 있습니다.

Branch의 조언은 ‘그렇다’입니다. 대부분의 경우에는 그럴 만한 가치가 있습니다. 애플이 시행하는 변경 사항은 여러분의 광고 어트리뷰션에 대한 인사이트 수준을 떨어뜨릴 것입니다. 이는 불가피한 일이고 불편한 현실이지만 모바일 생태계에 있는 모든 광고주들은 이에 대처해야 합니다.

그러나 계속해서 일부 데이터 또는 어떠한 데이터도 가지지 않는 것 중 하나를 선택할 수 있습니다. 심지어 제한적인 디바이스 레벨 인사이트를 활용해도 캠페인 최적화 및 LTV 등에 대해 더 나은 결정을 내릴 수 있을 것입니다.

새 데이터 플로우 예시

Branch가 준비한 변경 사항을 간략하게 설명하면 다음과 같습니다.

지원하는 사항

  • Branch는 ‘두 번째 설치(Second Install)’라고 부르는 추가 분석 이벤트를 트래킹하고 있습니다. 이러한 두 번째 설치 이벤트는 정상 설치와 동일한 방법으로 처리되며 중복 제거를 허용하는 데이터 파라미터를 제공합니다. 두 번째 설치는 ATT를 통한 유저 옵트인이 확인된 후에 광고로 유도된 설치에 대해 트리거됩니다. 이 변경 사항은 모든 Branch iOS SDK 버전에 대해 자동으로 적용되며, SDK를 업데이트할 필요는 없습니다.
  • 필수 사항은 아니지만, iOS SDK v1.39.2+로 업데이트하여 ATT 옵트인/옵트아웃을 새로운 전용 이벤트로 수집하고 모든 이벤트에 대한 ATT 상태를 리포트할 수 있습니다.

지원하지 않는 사항

  • 유저가 ATT를 통해 옵트인하지 않는 경우 광고로 유도된 설치에 대해서는 어떠한 디바이스 레벨의 어트리뷰션도 하지 않고 있습니다.다시 말하지만, 이는 애플의 정책을 준수하고 여러분을 보호하기 위한 것입니다.
  • 또한 유저가 옵트인한 후 최초 설치 이벤트에 대한 로그 레벨 데이터도 다시 작성하지 않습니다. 이는 데이터 워크플로우에 대한 단순성 및 예측가능성을 제공하기 위한 것입니다.
  • 마지막으로 무료 소스의 옵트인에 대해서는 ‘두 번째 설치’를 트리거하지 않는데, 이러한 경우 ATT 옵트인 없이도 이미 디바이스 레벨에서 어트리뷰션을 할 수 있기 때문입니다.

이 모든 작동 방식을 이해하는 가장 좋은 방법은 iOS 14.5 이상을 사용하는 유저에 대한 Branch 데이터가 어떻게 나타나는지를 보여주는 실제 예시를 살펴보는 것입니다.

즉각적 옵트인

첫 번째 예시 플로우는 가장 단순한 경우입니다. 유저가 광고 링크를 클릭하고 앱을 설치하고 설치 직후 ATT를 통해 옵트인합니다.

이 플로우는 유저가 트랜잭션의 첫 번째 측면에서 IDFA를 사용할 수 있도록 하는 데 필요한 ATT에 대한 옵트인을 퍼블리셔 앱에서 이미 선택했다고 가정합니다.

유저가 이미 옵트인했기 때문에, 이 유저가 퍼블리셔 앱에서 수행한 광고 클릭에는 IDFA가 포함되어 있을 것입니다.

다음으로는 유저가 여러분의 앱을 설치합니다. 유저가 ATT를 통해 옵트인하지 않았기 때문에 이 설치 이벤트는 광고 클릭으로 인해 발생한 것으로 인정될 수 없으며, 이는 어트리뷰션 데이터가 ‘불완전’할 것이므로 어트리뷰션되지 않은 것으로 리포트될 것임을 의미합니다.

이 시나리오에서, 유저는 설치 직후 다른 인앱 활동이 발생하기 전에 ATT에 대해 옵트인을 하였습니다. 옵트인을 하면 ‘두 번째 설치’가 트리거되며, 이는 다시 광고 클릭으로 인한 것으로 인정될 수 있습니다.

이어서 유저가 구매와 같은 하위 퍼널 전환 이벤트를 수행할 때, 해당 전환 역시 광고 클릭에 다시 어트리뷰션될 수 있습니다.

이제 유저가 이후에 이메일 링크와 같이 다른 Branch 링크를 클릭한다고 가정해보겠습니다. 이 경우에는 유저가 ATT 프롬프트를 통해 이미 옵트인을 했더라도 이메일은 자체 채널이므로 기술적으로 애플의 정책을 따를 필요가 없습니다.

예상한 대로, 이 이메일을 클릭한 후에 발생하는 전환 이벤트는 광고 클릭 대신 이메일 캠페인에 어트리뷰션됩니다. 이는 iOS 14 이전 동작과 동일한 부분입니다.

요약하면, 이 시나리오에서 최초 설치 이벤트는 어트리뷰션되지 않았거나 오가닉인 것으로 리포트됩니다. 유저가 ATT를 사용하여 옵트인할 때 트리거되는 ‘두 번째 설치’는 정상적으로 광고 클릭으로 어트리뷰션됩니다.

구매와 같은 전환 이벤트는 자격을 갖춘 다른 링크 클릭이 발생할 때까지 광고 클릭에 어트리뷰션될 것입니다. 이후에는 예상한 바와 같이 후속 이벤트에 어트리뷰션됩니다.

지연된 옵트인

이제 좀 더 복잡한 예시를 살펴보겠습니다. 이 시나리오에서 유저는 광고를 클릭하고 설치하지만 설치 후 일정 시간이 경과할 때까지 ATT를 통해 옵트인하지 않습니다. 이는 앱 내에서 ATT 프롬프트의 노출 시기를 늦춰 유저에게 옵트인 시의 가치를 먼저 보여주고 유저가 허용할 확률을 높이고자 한 경우에 발생할 수 있습니다.

이전과 마찬가지로, 이 플로우에서도 유저가 퍼블리셔 앱에서 ATT에 이미 옵트인하여 트랜잭션의 첫 번째 측면에서 IDFA를 사용할 수 있다고 가정합니다.

유저가 이미 옵트인했기 때문에, 이 유저가 퍼블리셔 앱에서 수행한 광고 클릭에는 IDFA가 포함되어 있을 것입니다.

그러나 이 시나리오에서는 유저가 즉시 ATT를 통해 옵트인하지 않습니다. 이는 유저의 하위 퍼널 전환 이벤트가 다음과 같이 어트리뷰션되지 않은 것으로 리포될 수도 있음을 의미합니다.

유저가 옵트인을 하면, ‘두 번째 설치’가 트리거되며 이는 해당 광고 클릭으로 어트리뷰션됩니다.

옵트인한 후 후속 전환 이벤트도 다시 정상적으로 광고 클릭에 어트리뷰션됩니다.

요약하면, 이 시나리오에서 최초 설치 이벤트는 어트리뷰션되지 않은 것으로 리포트될 것입니다. 그리고 유저가 ATT를 통해 옵트인하기 전까지는 전환 이벤트 역시 어트리뷰션되지 않을 것입니다.

일단 유저가 옵트인을 하면 두 번째 설치가 트리거되고 광고 클릭에 정상적으로 어트리뷰션됩니다. 이후 전환 이벤트도 정상적으로 광고 클릭에 어트리뷰션됩니다.

Branch 제품 변경 사항

지금까지 일부 유저 플로우 예시를 살펴보았으니 다음으로 이 로우 데이터를 반영하기 위해 저희가 Branch 플랫폼의 다양한 영역을 어떻게 업데이트하고 있는지 알아보겠습니다.

Branch에서 변경하고 있는 카테고리는 크게 두 가지로 나뉩니다.

사전 합산된 리포트. 이 데이터는 보기 또는 요청 시 생성되므로 Branch는 유저가 설치 후 점진적으로 옵트인할 때 동적으로 데이터를 ‘수정’할 수 있습니다. 여기에 포함되는 제품은 다음과 같습니다.

  • Branch 대시보드
  • Query API

로우 데이터 제품. 이들은 로그 레벨 이벤트 데이터를 제공하며, Branch는 이를 소급하여 재저장하지 않습니다. 그러나 사용 사례에 따라 자체 중복 제거 프로세스를 수행하도록 선택할 수 있습니다. 나중에 이를 위한 로직을 설명드리겠습니다. Branch의 로우 데이터 제품은 다음과 같습니다.

  • Webhooks
  • 애드 네트워크 포스트백
  • Custom Export API
  • 데이터 연동

Branch 대시보드 및 Query API ‘정상 작동’

고무적인 점은 당사의 많은 고객들처럼 주로 Branch 대시보드와 Query API를 사용하신다면 두 제품은 추가 조치 없이 ‘정상적으로 작동’할 것입니다.

다시 말해 Branch에서 첫 번째 및 두 번째 설치 이벤트를 자동으로 중복 제거하므로, 유저가 옵트인할 때의 수치와 여러분이 보는 최종 수치가 일치할 것입니다.

Branch는 최초 설치 후 7일까지 발생하는 두 번째 설치 이벤트를 자동으로 중복 제거합니다. 이 기간 이후에 발생하는 두 번째 설치는 중복 제거되지 않습니다.

참고로 유료 광고로 유도된 유저가 옵트인을 하지 않는다면 두 번째 설치는 발생하지 않습니다. 따라서 이러한 유저는 어트리뷰션되지 않은 데이터에서 삭제할 수 없게 됩니다.

‘오가닉 체크박스’

특별히 주목할 만한 Branch 대시보드의 또 다른 기능으로는 ‘오가닉 체크박스’가 있습니다.

기본적으로 Branch 대시보드의 대부분의 리포트는 어트리뷰션된 데이터만 표시합니다. 이는 광고 캠페인 성과와 같은 리포트를 보고 있는 경우, 일반적으로 광고 캠페인에 어트리뷰션된 전환만 보고자 하기 때문에 의미가 있습니다.

이전에는 오가닉 체크박스가 선택되었을 때 리포트에 어트리뷰션되지 않은 (또는 ‘오가닉’) 전환에 대한 별도 세그먼트가 표시되었습니다.

하지만 iOS 14.5 이후에는 이 기능이 예전처럼 작동하지 않을 것입니다. 이는 어트리뷰션되지 않은 세그먼트에 ATT를 통해 옵트인한 유저가 아직 완료하지 않은 유료 광고 전환도 포함되기 때문입니다.

이 때문에 오가닉 체크박스가 여러 리포트에 유용하지 않을 것이므로 Branch는 혼란을 피하기 위해 이를 일부 대시보드 페이지에서 삭제하고 있습니다.

다음 위치에서는 오가닉 체크박스를 사용할 수 없게 됩니다.

  • Summary page
    • Journeys tab
    • Quick Links tab
    • Universal Email tab
  • Journeys → Activity tab
  • Email → Activity tab

다음 위치에서는 계속해서 오가닉 체크박스를 사용할 수 있습니다.

  • Summary page
    • All Data tab
    • Universal Ads tab
  • Ads Analytics → Activity tab

대부분의 고객은 캠페인 성과를 캠페인을 진행하지 않은 경우의 성과 기준선과 비교하기 위한 방법으로 오가닉 체크박스를 사용했습니다.

대안으로, 저희는 ‘전체 앱 트래픽 표시(Show Total App Traffic)’라 불리는 대시보드 리포트에 새 체크박스를 추가할 예정입니다. 이렇게 하면 모든 트래픽(어트리뷰션된 것과 어트리뷰션되지 않은 것 모두 포함)에 대한 리포트에 추가 세그먼트가 표시됩니다. 이는 성과 비교에 대한 비슷한 기준선을 제공합니다.

로우 데이터 제품

이러한 변경 사항과 더불어 다음과 같은 몇 가지 데이터 스키마 업데이트가 있습니다.

첫 번째 및 두 번째 설치 이벤트는 모두 설치로 리포트되며 각 이벤트에 user_data_opted_indays_from_install_to_opt_in라는 두 개의 새로운 필드가 있습니다. 

user_data_opted_in 필드는 사용자의 ATT 옵트인 상태를 반영하며, 이는 첫 번째 설치에 대해 false, 두 번째 설치에 대해 true임을 의미합니다. days_from_install_to_opt_in 필드는 첫 번째 설치와 두 번째 설치 이벤트 사이의 일수를 나타냅니다.

timestamp 필드는 각 이벤트가 발생한 시간을 반영합니다 (첫 번째 설치의 경우 이는 설치 자체가 시스템에 수신된 시점이고, 두 번째 설치의 경우 유저의 옵트인이 수신된 시점입니다). 또한 두 번째 설치에서 event_timestamp 필드는 대응하는 첫 번째 설치가 처음으로 발생한 날짜를 반영합니다.

다음 표에는 Branch 제품별로 구분된 광고로 유도된 설치에 대한 예상 동작이 나타나 있습니다.

필요한 조치

Branch 대시보드만 사용하는 경우, 상황은 매우 간단합니다: 더 많은 유저들이 app 내부를 트래킹하기 위해 옵트인하면 리포트 데이터가 매일 약간씩 변경될 수 있다는 것을 기억해야 한다는 점을 제외하고는 아무것도 할 필요가 없습니다.

Query API를 사용하여 사전 집계된 데이터를 가져오는 경우, 여러분이 쿼리를 만드는 시점에 유저가 아직 옵트인을 하지 않은 경우 리포트에 불완전한 어트리뷰션 데이터가 반영될 수 있습니다. 이 문제를 해결하려면 여러분이 최초 요청을 한 이후에 유저가 옵트인을 했을 수도 있는 이전 날짜의 데이터를 다시 가져와야 합니다.

예시: 오늘이 4월 15일이고 4월 1일부터 14일까지 쿼리 API(Query API)를 호출했음에도 앱은 유저들에게 설치 후 6일까지의 ATT 프롬프트를 보여줄 수 있습니다. 이 경우 데이터를 4월 21일에 다시 가져와 “최종” 수치를 보유할 수 있도록 합니다.

Custom Export API를 사용하는 경우, 두 번째 설치에 대한 레코드를 리턴할 시 데이터 내 동일한 유저에 대해 불완전한 (즉 어트리뷰션되지 않았거나 “오가닉”한) 초기 설치가 이미 완료되었음을 알아야 합니다. 아래에서 설명하는 중복 제거 로직을 사용하여 이를 조정할 수 있습니다.

또한 설치 후 7일 이내에 데이터를 계속해서 가져와야 합니다. 이는 Branch가 7일 후 원시 데이터의 디바이스 식별자를 해시 처리하기 때문입니다.

Webhooks를 사용하는 경우 webhook 본문에 IDFV 필드를 포함하는 것이 좋습니다. 앞으로는 IDFA를 경우에 따라 사용하지 못할 수도 있기 때문입니다. 선택적으로, 아래에서 설명하는 중복 제거 로직을 구현할 수도 있습니다.

광고 파트너 포스트백 및 데이터 연동의 경우, 어트리뷰션된 이벤트만 전송하도록 설정되었을 때는 변경이 필요하지 않습니다. 모든 이벤트를 전송하도록 설정된 경우, 파트너와 함께 작업하여 선호되는 경로를 판별하도록 할 수 있습니다.

ATT 옵트인 및 옵트아웃을 개별 분석 이벤트로 캡처하려는 경우, Branch iOS SDK 연동을 v1.4 이상으로 업데이트하십시오. 이러한 전용 분석 이벤트를 측정하지 않고 “두 번째 설치” 트래킹만 필요한 경우에는 SDK 업데이트가 필요하지 않습니다.

첫 번째 및 두 번째 설치를 중복 제거하는 방법

Branch 대시보드와 Query API는 이러한 이벤트를 자동으로 중복 제거하여 계속해서 정확한 리포팅을 제공하지만, Branch의 로우 데이터 제품((Webhooks, Data Integrations, Custom Export API, 어트리뷰션된 설치뿐 아니라 모든 이벤트(All Event)를 전송하도록 구현된 애드네트워크 포스트백 등))을 사용하는 경우 시스템을 업데이트할 수도 있습니다.

이를 수행하려면 API pull 또는 Webhook 본문에서 event_timestamp 필드 및 다른 디바이스 식별자(예: IDFV)를 참조해야 합니다. 이 두 필드는 두 이벤트 모두에 대해 동일하며, 어트리뷰션되지 않은 설치를 해당하는 두 번째 설치로 오버라이트(overwrite)하는데 사용할 수 있습니다.

IDFV를 사용하여 최초 설치와 두 번째 설치 사이에 발생한 모든 하위 퍼널 이벤트를 재지정할 수도 있습니다.

요약

저희는 iOS 14와 애플의 새로운 사생활 보호 정책에 관해 처리해야 할 일이 많다는 것을 알고 있습니다. Branch 팀이 도움을 드릴 수 있습니다 — 질문이 있으실 경우 여러분의 Branch 담당자 또는 저희 서포트 팀에 연락하십시오!

모바일 성장 팁, 업계 업데이트 및 제품 발표가 포함 된 주간 블로그 다이제스트를 지금 구독하십시오!