쿠키 일치

쿠키 매칭은 크게 보면 광고주나 공급업체가 자체 도메인의 쿠키를 Google 도메인의 쿠키와 연결하는 과정입니다. 이렇게 하면 소유하고 있는 퍼스트 파티 데이터를 (Display & Video 360 및 Campaign Manager 360을 통해 추적한) 동일한 사용자의 Google 광고 데이터와 연결하여 CRM 데이터를 통합하고 사용자 행동을 더 잘 이해할 수 있습니다. 개인 정보 보호 중심의 조인을 통해 이 데이터를 결합하여 다음 작업을 실행할 수 있습니다.

  • 사용자가 광고 및 도메인과 상호작용한 경우 구매를 포기한 장바구니의 특정 상품을 기반으로 잠재고객을 타겟팅
  • 도메인에서 더 긴 세션으로 이어지는 세션 확인
  • 사후 캠페인 데이터에 조인된 구매 내역 분석

제한사항 및 최종 사용자 개인 정보 보호

쿠키 매칭은 강력하지만 다음과 같은 제한사항이 있습니다.

  • *_match 테이블과 비 *_match 테이블 간의 조인은 금지됩니다.
  • 광고주와 Google 모두의 엔지니어링 작업이 필요합니다.
  • 모든 Google 광고 데이터를 일치시킬 수 없을 확률이 높습니다. 일치율은 다양한 요인의 영향을 받으며 사용 사례와 클라이언트 측 설정에 따라 달라집니다. 일치율이 사용자가 기대하는 것보다 낮은 경우가 많습니다. 사용자가 도메인 광고와 상호작용한 경우에만 쿠키 매칭을 사용할 수 있습니다.
  • Google에서는 데이터 이동 색인 설정이 완료되면 데이터 이동 색인을 채우기 시작합니다. 사용자가 사이트를 방문하고 일치하는 픽셀을 수신하는 빈도에 따라 데이터 이동 색인에 사용자에 대한 전체적이고 안정적인 데이터가 포함되기까지 몇 개월이 걸릴 수도 있습니다.
  • 기기 간에 사용자를 연결하는 방법이 없으면 개별 사용자를 여러 기기에 연결할 수 없습니다.
  • 사용자가 쿠키를 지우는 경우처럼 여러 쿠키를 사용하여 단일 사용자를 일치시킬 수 없습니다.
  • 데이터 이동 색인에서 실행되는 작업에는 Ads Data Hub의 다른 작업과 동일한 집계 요구사항이 적용됩니다. 일치율이 낮고 도메인을 자주 방문하지 않는 경우 데이터가 확보되지 않을 수 있습니다. 이는 일치율과 집계 요구사항의 영향을 함께 받기 때문입니다1.
  • 다음과 같은 최종 사용자 개인 정보 보호에 관한 Google 정책을 준수해야 합니다.
    • 특정 사용자의 로그인 데이터 및 로그아웃 데이터와 일치시킬 수 없습니다.
    • 광고 개인 최적화를 선택 해제한 사용자와 데이터를 일치시킬 수 없습니다.
  • iOS 이벤트의 경우 Apple의 앱 추적 투명성 프레임워크에 따라 데이터 수집에 동의한 사용자의 iOS 14.5 이상 앱에서 처음 발생한 데이터만 일치시킬 수 있습니다.

Ads Data Hub에서 퍼스트 파티 데이터를 사용하려면 EU 사용자 동의 정책Ads Data Hub 정책에 따라 데이터를 Google과 공유하기 위해 적절한 동의를 얻었음을 확인해야 합니다. 이 요건은 각 Ads Data Hub 계정에 적용되며, 새로운 퍼스트 파티 데이터를 업로드할 때마다 업데이트해야 합니다. 어느 사용자나 계정 전체를 대신하여 이를 확인할 수 있습니다.

분석 쿼리에 적용되는 것과 동일한 Google 서비스 쿼리 규칙이 쿠키 매칭 쿼리에도 적용됩니다. 예를 들어 데이터 이동 색인을 만들 때 EEA의 사용자에게 교차 서비스 쿼리를 실행할 수 없습니다.

Ads Data Hub에서 동의를 확인하는 방법은 유럽 경제 지역의 동의 요건을 참고하세요.

Google에서 데이터 이동 색인을 채우기 위해서는 광고 데이터를 매칭하고자 하는 도메인의 모든 페이지에 일치 태그를 제공해야 합니다. 픽셀을 배치하는 위치는 광고 목표에 따라 다릅니다. 예를 들어 도메인을 방문하는 모든 사용자와 일치시키려고 시도하거나(거의 모든 페이지에 픽셀 필요) 전환 사용자를 일치시킬 수 있습니다(전환 페이지에 픽셀 필요). 일반적으로 픽셀이 광범위할수록 일치율이 높아집니다.

일치 태그는 쿠키 매칭 프로필 ID와 인코딩된 사용자 또는 쿠키 ID가 포함된 투명한 1x1 픽셀입니다.

<img src="https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm=Q29va2llIG51bWJlciAxIQ" />

이 일치 태그는 광고주와 Google 쿠키 매칭 서비스 간에 통신을 시작하는 태그입니다.

단계별 개요

  1. 사용자가 일치 태그가 있는 페이지를 방문합니다.
  2. 일치 태그에서 Google Marketing Platform, Google Ads, YouTube 매칭 서비스로 리디렉션을 시작합니다. 요청에는 웹사이트의 사용자 ID 또는 쿠키 및 일치하는 각 서비스의 ID 공간에 있는 Google 쿠키가 포함됩니다.
  3. 투명한 1x1 픽셀이 브라우저에 반환되어 요청이 처리되었음을 확인합니다.

아래 다이어그램이 이 과정을 보여줍니다.

브라우저와 일치하는 서비스 간의 리디렉션을 보여주는 이미지

설정

Ads Data Hub에서 쿠키 매칭을 설정하는 과정은 다음과 같습니다.

  1. 계정 담당자에게 연락하여 쿠키 매칭에 관심이 있다고 알립니다. 계정 담당자가 광고 목표에 대해 논의하고 도메인에 추적 픽셀을 배포하는 방법을 자세히 설명합니다.
  2. Ads Data Hub 전문가가 기술 요구사항 및 사용 사례에 대해 논의하기 위해 다른 대화를 시작합니다.
  3. 추적 픽셀 및 오류 엔드포인트를 배포하는 동안 Google에서 데이터 이동 색인을 만듭니다.

이 단계를 완료한 후에는 즉각적인 조치가 필요하지 않습니다. Google에서 데이터 이동 색인을 매일2 채우므로 테이블에 의미 있는 일치 항목을 제공하고 집계 요구사항을 충족할 수 있을 만큼 데이터가 포함될 때까지 충분히 기다려야 합니다. 기간은 사용자의 사이트 방문 빈도에 따라 달라집니다. 일일 방문자가 있는 사이트가 월간 방문자가 있는 사이트보다 훨씬 빨리 이 시점에 도달합니다. 새로운 순 일치 항목 수가 감소하므로 데이터 이동 색인에 더 포괄적인 데이터가 포함됩니다.

데이터 이동 색인 쿼리

데이터 이동 색인에 개인 정보 보호 검사를 충족하기에 충분한 데이터가 포함되어 있으면 테이블에 대해 쿼리를 실행할 수 있습니다.

user_id 필드가 포함된 Ads Data Hub 스키마의 각 테이블에 *_match 테이블이 함께 제공됩니다. 예를 들어 adh.google_ads_impressions 테이블의 경우 Ads Data Hub는 사용자 ID가 포함된 adh.google_ads_impressions_match라는 데이터 이동 색인도 생성합니다. 정책에 따라 격리된 테이블의 경우 별도의 데이터 이동 색인이 생성됩니다. 예를 들어 adh.google_ads_impressions_policy_isolated_youtube 테이블의 경우 Ads Data Hub는 사용자 ID가 포함된 adh.google_ads_impressions_policy_isolated_youtube_match라는 데이터 이동 색인도 생성합니다.

이러한 테이블에는 user_id에 일치하는 항목이 있는 원본 테이블에서 사용 가능한 사용자의 하위 집합이 포함됩니다. 예를 들어 원본 테이블에 사용자 A와 사용자 B의 데이터가 포함되어 있지만 사용자 A만 일치하는 경우 사용자 B는 데이터 이동 색인에 포함되지 않습니다.

데이터 이동 색인에는 쿠키를 BYTES로 저장하는 external_cookie라는 추가 열이 포함됩니다.

쿼리를 작성할 때 필드 유형을 고려해야 합니다. SQL 비교 연산자는 동일한 유형의 리터럴을 비교한다고 예상합니다. user_id가 퍼스트 파티 데이터 테이블에 저장되는 방식에 따라 데이터를 일치시키기 전에 테이블의 값을 인코딩해야 할 수도 있습니다. 매칭에 성공하려면 조인 키를 BYTES로 변환해야 합니다.

JOIN ON
  adh.google_ads_impressions_match.external_cookie = CAST(my_data.user_id AS BYTES)

또한 SQL의 문자열 비교에서는 대소문자가 구분되므로 정확하게 비교할 수 있도록 양쪽의 문자열을 인코딩해야 할 수도 있습니다.

사용자 ID 인코딩

클라이언트 측 사용자 ID 인코딩

다른 ID 형식을 URL을 통해 안전하게 전송하려면 모든 ID를 전송하기 전에 URL 보안 Base64로 인코딩해야 합니다. URL 보안 Base64 디코딩된 ID는 Ads Data Hub의 external_cookie 필드에서 사용할 수 있으므로 인코딩 전에 적용한 모든 변환을 실행취소해야 원래 ID를 가져올 수 있습니다.

ID가 항상 24자(영문 기준) 또는 24바이트 이하인 경우 예 1과 같이 URL 보안 Base64로 인코딩된 ID를 픽셀에 포함할 수 있습니다. ID가 24자(영문 기준) 또는 24바이트보다 크면 24바이트 이하의 표현으로 변환해야 합니다. 어떤 경우에는(예: 예 2의 GUID) 바이트 표현으로 변환해야 합니다. 그 외의 경우에는 Google에 ID의 하위 집합(또는 해시)을 전송해야 할 수도 있습니다. 어떤 경우든 퍼스트 파티 테이블의 ID를 동일한 방식으로 변환하는 SQL JOIN을 작성할 수 있는지 확인해야 합니다.

예 1

사용자 ID 값이 항상 24바이트 길이 제한을 넘지 않습니다. Ads Data Hub에서는 사용자 ID를 직접 ADH로 보내는 것이 좋습니다(URL 전송 목적으로 URL 보안 Base64로 인코딩한 후).

var userId = 'abcdef123456789';
// Encode the string (or number) in normal base64.
var userIdBase64 = btoa(userId);

// Ensure that the uploaded user IDs use web-safe Base64 encoding.
userIdBase64 = userIdBase64.replace(/\+/g, '-').replace(/\//g, '_')
    .replace(/=+$/, '');

// After encoding the UUID correctly, you can create the request tag and
// insert it into the DOM.
var imgElement = Document.createElement('img');
imgElement.src =
    'https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm='
    + userIdBase64;
document.body.appendChild(imgElement);
예 2

범용 고유 식별자(UUID) 값을 사용자 ID로 할당합니다(예: 123e4567-e89b-12d3-a456-426655440000).

Ads Data Hub에서는 매칭 시 다음과 같은 변환이 권장됩니다.

  1. UUID는 36자(영문 기준) 문자열 형식으로 지정됩니다.
  2. 16진수 디코딩 UUID
  3. UUID는 바이트 형식으로 지정됩니다.
  4. URL 보안 Base64 인코딩 바이트
  5. UUID는 문자열 형식으로 지정됩니다.

다음 코드로 구현할 수 있습니다.

JavaScript

var userId = '123e4567-e89b-12d3-a456-426655440000';

// A helper function for converting a hex string to a byte array.
function strToBytes(str) {
        for (var bytes = [], i = 0; i < str.length; i += 2) {
          bytes.push(parseInt(str.substr(i, 2), 16));
        }
        return bytes;
}

// Remove the formatting dashes from the UUID.
userId = userId.replace(/-/g, '');

// Encode the hex string as a byte array.
var userIdBytes = strToBytes(userId);

// Encode the byte array in normal base64.
var userIdBase64 = btoa(String.fromCharCode(...new Uint8Array(userIdBytes)));

// Ensure that the uploaded user IDs use web-safe Base64 encoding.
userIdBase64 = userIdBase64.replace(/\+/g, '-').replace(/\//g, '_').replace(
    /=+$/, '');

// After encoding the UUID correctly, you can create the request tag and
// insert it into the DOM.
var imgElement = Document.createElement('img');
imgElement.src =
    'https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm='
    + userIdBase64;
document.body.appendChild(imgElement);

Python

import base64

user_id = '123e4567-e89b-12d3-a456-426655440000'
user_id_as_bytes = bytes.fromhex(user_id.replace('-', ''))
base64.urlsafe_b64encode(user_id_as_bytes)

Google 사용자 ID와 일치하는 항목이 있으면 external_cookie 필드에 ID가 바이트 값으로 포함됩니다. 원래 ID를 재구성하려면 다음과 같은 변환이 필요합니다.

  1. external_cookie는 바이트 형식으로 지정됩니다.
  2. 16진수 인코딩 external_cookie
  3. external_cookie는 문자열 형식으로 지정됩니다.

Ads Data Hub에서 사용자 ID 인코딩

퍼스트 파티 데이터의 필드에 UUID 문자열을 저장하는 경우 데이터를 조인하려면 위 예와 같이 문자열을 바이트로 변환해야 합니다.

다음 예에서는 UUID를 인코딩하고 외부 쿠키 필드에 조인하는 방법을 보여줍니다.

JOIN my_data ON imp.external_cookie = FROM_HEX(REPLACE(my_data.uuid, '-', ''))

정수는 바이트로 변환할 수 없습니다. 사용자 ID가 정수이면(예: 위의 예 1) 다음과 같이 먼저 문자열로 변환해야 합니다.

JOIN my_data ON imp.external_cookie = CAST(CAST(my_data.user_id AS STRING) AS BYTES)

데이터를 일치시키는 데 필요한 인코딩은 데이터를 저장하는 방법, 데이터를 Ads Data Hub에 보내기 전에 인코딩한 방법에 따라 달라집니다.

BigQuery SQL의 문자열 함수에 대해 자세히 알아보기

샘플 쿼리

다음 예에서는 퍼스트 파티 데이터를 google_ads_impressions_match와 조인한 다음 이 결과를 두 번째 쿼리에서 adh_google_ads_impressions와 조인합니다.

SELECT
  imp.campaign_id as campaign_id,
  sum(my_data.recent_orders) as orders,
  average(my_data.lifetime_value) as ltv
FROM
  adh.google_ads_impressions_match as imp
LEFT JOIN
  my_data ON imp.external_cookie = my_data.company_guest_id_bytes
GROUP BY
  campaign_id

이전 쿼리의 결과가 previous_results로 저장되었으므로 이제 google_ads_impressions를 조인할 수 있습니다. 이렇게 하면 노출수가 0인 캠페인의 데이터가 결과에 추가됩니다.

SELECT
  campaign_id,
  COALESCE(orders, 0) as orders,
  COALESCE(ltv, 0) as ltv,
FROM (SELECT DISTINCT campaign_id
   FROM adh.google_ads_impressions)
LEFT JOIN previous_results USING (campaign_id)

  1. 예: 일치율이 20%이면 50 / 0.2 = 250이므로 50명의 사용자 집계 기준점을 충족하려면 행당 250명의 사용자가 필요합니다. 

  2. 특정일의 일치 항목은 테이블에 표시되기까지 최대 48시간이 걸릴 수도 있습니다.