동의 설정 관리(웹)

이 페이지는 웹사이트에서 Google 애널리틱스를 유지하고 동의 모드를 통합하려는 개발자를 대상으로 합니다. 동의 모드에 대한 소개는 동의 모드 개요를 읽어보세요.

동의 모드의 설정 및 사용 방법은 동의 모드 구현 방식과 사용하는 태그 지정 플랫폼(Google 태그 관리자(GTM) 또는 Google 태그)에 따라 다릅니다.

  • Google 동의 모드를 지원하는 동의 관리 플랫폼(CMP)에서는 다음 기능을 제공합니다.
    • 동의 관리를 위한 태그를 생성하는 데 사용하는 태그 관리자 템플릿(커뮤니티 템플릿 갤러리에서 찾을 수 있음)
    • gtag.js를 이용해 동의를 관리하는 사이트를 위한 JavaScript 코드
  • 동의 모드를 지원하지 않는 맞춤 구현 및 CMP를 이용할 경우에는 다음을 참고하세요.
    • GTM을 사용하는 경우 태그 관리자 동의 API를 이용해 나만의 템플릿을 만드는 것이 좋습니다. 다음 를 참고하여 시작하세요.
    • gtag.js를 사용하는 경우 사이트의 각 페이지에 직접 명령어 또는 맞춤 HTML 스니펫의 형태로 동의 코드를 직접 추가하세요.

이 도움말에서는 권장사항에 대해 간략히 설명하고 API 예를 보여드립니다. 자세한 내용은 관련 링크를 참고하세요.

시작하기 전에

동의 모드를 구현하기 전에 다음 사항을 고려해야 합니다.

  • 기본 동의 설정 범위를 방문자에게 동의 배너를 표시하는 지역으로 설정하는 것이 좋습니다. 이렇게 하면 동의 배너가 필요한 지역에서 측정을 보호하고 Google 태그가 그에 따라 동작을 조정하는 데 도움이 됩니다. 동의 배너가 없거나 동의 배너가 적용되지 않는 곳에서의 측정 손실을 방지할 수도 있습니다. 지역별 동작을 참고하세요.

  • CMP를 사용하는 경우 기본 동의 명령어에 지정된 지역의 방문자를 타겟팅하도록 동의 업데이트 명령어를 구성해야 합니다. 이렇게 하면 동의 상태가 기본적으로 거부됨으로 설정되어 있는 경우 사용자가 동의 상태를 업데이트할 수 있습니다.

  • 나만의 템플릿 또는 맞춤 HTML 태그를 작성하는 경우, 콜백 또는 gtag()를 사용하는 명령에서 실행되는 모든 명령어는 다음 트리거가 실행되기 전에 사용하지 못할 수도 있습니다. 동의 정보를 최대한 빨리 이용할 수 있게 하려면 태그 관리자 동의 API를 사용하여 동의 상태를 설정하는 태그 템플릿을 사용하거나 만드세요.

기본 동의 상태는 조직에 필요한 기본값에 따라 페이지 로드 시 즉시 설정되어야 합니다. 그러면 CMP 또는 맞춤 동의 관리 솔루션에서 방문자에게 관련 동의 유형에 대한 동의를 부여하거나 거부하라는 메시지를 표시해야 합니다. 동의 모드에서 동의 선택 여부를 저장하지 않으므로 동의가 이루어진 후 동의 관리 솔루션은 모든 페이지에서 최대한 빨리 사용자의 동의 여부를 기반으로 동의 모드 업데이트 명령을 해야 합니다.

gtag.js

다음 섹션에서는 gtag.js를 사용하는 예를 보여줍니다.

사용 중인 각 동의 유형의 기본값을 설정하는 것이 좋습니다. 이 도움말에 나온 동의 상태 값은 예입니다. 각 측정 제품의 기본 동의 모드가 조직의 정책과 일치하도록 설정되어 있는지 확인해야 합니다.

기본 측정 기능을 조정하려면 사이트의 모든 페이지에서 측정 데이터를 전송하는 gtag('consent', 'default', ...) 명령어(예: config 또는 event)를 호출하세요. 예를 들어 여러 동의 유형을 기본적으로 거부하려면 consent 매개변수에 다음과 같이 설정을 지정합니다.

gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});

사용자가 동의 여부를 지정하거나 변경하는 경우 update 명령을 사용하여 측정 상태를 업데이트하세요. 동의 모드에서 동의 선택 여부를 저장하지 않으므로 사용자가 동의 관리 솔루션과 상호작용하는 즉시 동의 상태를 업데이트하세요. 사용자가 동의한 후 이 상태를 유지하고 이후 페이지에서 그에 따라 업데이트 명령어를 호출하세요.

아래 예시에서는 ad_storage 값만 변경되었습니다. analytics_storagedenied로 설정된 경우 이 호출 후에도 계속 거부됩니다. 모든 동의 유형에 대해 올바른 값이 설정되어 있는지 확인하는 것은 사용자의 몫입니다. 지원되는 유형에 대해 자세히 알아보려면 API 참조를 읽어보세요.

다음 코드 예시는 사용자가 광고 쿠키 허용에 동의했을 때 동의 상태를 granted로 업데이트하는 방법을 보여줍니다.

<script>
function consentGrantedAdStorage() {
  gtag('consent', 'update', {
    'ad_storage': 'granted'
  });
  }
</script>
<!-- Invoke your consent function when a user interacts with your banner -->
<body>
  ...
  <button onclick="consentGrantedAdStorage()">Yes</button>
  ...
</body>

비동기 동의 관리 플랫폼과 통합

CMP가 비동기식으로 로드되는 경우 항상 Google 태그보다 먼저 실행되지 않을 수 있습니다. 이러한 상황을 처리하려면 밀리초 값과 함께 wait_for_update를 지정하여 데이터가 전송될 때까지의 대기 시간을 관리하세요.

예를 들어 기본적으로 특정 페이지에서 ad_storage를 거부하지만 CMP가 동의 상태를 업데이트하도록 허용하려면 wait_for_update를 사용하세요. 다음 코드에서 ad_storagedenied로 기본 설정되고 동의 도구는 태그가 실행되기 전 500밀리초 동안 gtag('consent', 'update', ...)를 호출할 수 있습니다.

gtag('consent', 'default', {
'ad_storage': 'denied',
'wait_for_update': 500
});

태그 관리자

태그 관리자 구현의 경우 커뮤니티 템플릿 갤러리의 동의 모드 템플릿을 사용하여 동의를 관리하는 것이 좋습니다. 태그 관리자 동의 API를 사용하여 자체 템플릿을 만드는 방법에 대한 정보는 동의 모드 템플릿 만들기를 참고하세요.

참고:

  • 태그 지정에 GTM을 활용하는 사이트를 위한 동의 모드 구현은 동의 상태 관리를 위해 GTM 관련 API를 사용해야 합니다(setDefaultConsentStateupdateConsentState). gtagSet API를 사용하면 필요에 따라 ads_data_redaction 및 URL 패스 스루 설정을 선택적으로 설정할 수 있습니다.

  • gtag('consent','update',...) 메서드를 updateConsentState 대신 사용하면 안 됩니다. 이 메서드가 대기 중인 다른 모든 메시지 이후의 목록에 추가되고 처리되지 않은 상태에서 다음 이벤트가 시작될 수 있기 때문입니다. 자세한 내용은 데이터 영역 정보 처리 방식을 참고하세요.

구현 예

다음 예에서는 기본적으로 여러 동의 모드 매개변수를 denied로 설정합니다. 사용자가 동의 선택 여부를 표시하면 관련 매개변수가 granted로 업데이트됩니다.

gtag.js

여기에서는 코드의 순서가 중요합니다. 동의 코드가 잘못된 순서로 호출되면 동의 기본값이 작동하지 않습니다. 비즈니스 요구사항에 따라 구체적인 내용이 달라질 수 있지만 일반적으로 코드는 다음과 같은 순서로 실행해야 합니다.

  1. Google 태그를 로드합니다. 이 코드는 기본 스니펫 코드입니다. 기본 스니펫은 gtag('consent', 'default', ...) 호출을 포함하도록 업데이트해야 합니다(아래 참고).

  2. 동의 솔루션을 로드합니다. 동의 솔루션이 비동기식으로 로드되는 경우 이 과정이 올바른 순서로 실행되는지 확인하는 방법은 비동기 동의 관리 플랫폼과 통합을 참고하세요.

  3. 동의 솔루션에 의해 처리되지 않으면 사용자가 동의한다고 명시한 후 gtag('consent', 'update', ...)를 호출하세요.

<script>
// Define dataLayer and the gtag function.
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

// Set default consent to 'denied' as a placeholder
// Determine actual values based on your own requirements
gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID">
</script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  gtag('js', new Date());
  gtag('config', 'TAG_ID');
</script>

<!-- Create one update function for each consent parameter -->
<script>
  function consentGrantedAdStorage() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
  <button onclick="consentGrantedAdStorage">Yes</button>
  ...
</body>

태그 관리자

태그 관리자를 사용하는 사이트의 경우 CMP를 사용하여 방문자 동의 선택 여부를 업데이트하는 것이 좋습니다. CMP에서는 커뮤니티 템플릿 갤러리를 통해 동의 모드 관리를 위한 태그를 만들 수 있는 템플릿을 제공합니다.

템플릿을 사용할 수 없는 경우 페이지의 코드를 다음과 같이 업데이트할 수 있습니다. 여기에서는 코드의 순서가 중요합니다. 동의 코드가 잘못된 순서로 호출되면 동의 기본값이 작동하지 않습니다.

<script>
  // Define dataLayer and the gtag function.
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  // Set default consent to 'denied' as a placeholder
  // Determine actual values based on your own requirements
  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'analytics_storage': 'denied'
  });
</script>

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

<!-- Create one update function for each consent parameter -->
<script>
  function consentGrantedAdStorage() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
  <button onclick="consentGrantedAdStorage()">Yes</button>
  ...
</body>

개인 정보 보호 중심의 디지털 광고에 대한 지속적인 노력의 일환으로 Google에서는 EU 사용자 동의 정책의 시행을 강화하고 있습니다. 동의 모드 사용자는 ad_storageanalytics_storage 외에 새로운 매개변수 두 개를 전송해야 합니다.

필드 이름 허용되는 값 설명
ad_user_data 'granted' | 'denied' 광고와 관련된 사용자 데이터를 Google에 전송하는 데 대한 동의를 설정합니다.
ad_personalization 'granted' | 'denied' 개인 맞춤 광고에 대한 동의를 설정합니다.

고급 동의 기능에는 다음과 같은 기능이 포함됩니다.

  • 특정 지역의 동작 설정
  • 사용자가 쿠키에 동의하지 않은 경우 URL의 광고 클릭, 클라이언트 ID 및 세션 ID 정보 전달
  • 사용자가 광고 쿠키에 대한 동의를 거부하는 경우 광고 정보를 완전히 수정(삭제)

지역별 동작

특정 지역의 사용자에 대해 태그의 기본 동작을 변경하려면 동의 명령어에 지역을 지정하세요. 지역 값을 제공하면 사용자의 지리적 위치에 따라 기본값을 미세 조정할 수 있습니다. 지역을 식별하는 데 관한 자세한 내용은 지역 ID를 참고하세요.

gtag.js

다음 예에서는 스페인 및 알래스카 사용자에 대해 analytics_storagedenied로 설정하고 모든 사용자에 대해 ad_storagedenied로 설정합니다.

  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'region': ['ES', 'US-AK']
  });

  gtag('consent', 'default', {
    'ad_storage': 'denied'
  });

태그 관리자

템플릿을 사용하여 태그를 만드는 경우 지역별 동작을 설정하는 컨트롤이 있을 수 있습니다. 직접 템플릿 태그를 빌드하는 경우 지역별 동작 설정에 대한 자세한 내용은 동의 모드 템플릿 만들기를 참고하세요.

가장 구체적인 매개변수가 우선 적용됨

지역 및 하위 지역 값이 나타나는 동일한 페이지에서 두 개의 기본 동의 명령어가 실행되면 더 구체적인 지역이 포함된 명령어가 적용됩니다. 예를 들어 US 지역의 경우 ad_storagegranted로 설정하고 US-CA 지역의 경우 ad_storagedenied로 설정한 경우 캘리포니아에서 온 방문자에게는 더 구체적인 US-CA 설정이 적용됩니다. 이 예에서 US-CA의 방문자는 ad_storagedenied로 설정됩니다.

지역 ad_storage 동작
US 'granted' US에 있지만 CA에 없는 사용자에게 적용됩니다.
US-CA 'denied' US-CA 사용자에게 적용됩니다.
미지정 'granted' 기본값 'granted'를 사용합니다. 이 예에서는 US 또는 US-CA에 거주하지 않는 방문자에게 적용됩니다.

URL의 광고 클릭, 클라이언트 ID, 세션 ID 정보 전달

사용자가 광고를 클릭한 후 웹사이트를 방문하면 광고에 대한 정보가 방문 페이지 URL에 쿼리 매개변수로 추가될 수도 있습니다. 전환 정확성을 개선하기 위해 일반적으로 이 정보는 도메인의 퍼스트 파티 쿠키에 저장됩니다.

하지만 ad_storagedenied로 설정된 경우에는 이 정보가 로컬로 저장되지 않습니다. ad_storagedenied일 때 광고 클릭 측정 품질을 개선하기 위해 URL 패스 스루를 사용하여 여러 페이지에서 URL 매개변수를 통해 광고 클릭에 대한 정보를 전달할 수도 있습니다.

마찬가지로 analytics_storagedenied로 설정된 경우 URL 패스 스루를 사용하여 여러 페이지에서 쿠키 없이 이벤트 및 세션 기반 분석 정보(전환 포함)를 전송할 수 있습니다.

URL 패스 스루를 사용하려면 다음 조건을 충족해야 합니다.

  • Google 태그가 동의 여부를 확인하며 페이지에 있어야 합니다.
  • 광고주가 URL 패스 스루 기능을 사용 설정했어야 합니다.
  • 페이지에 동의 모드가 구현되어 있어야 합니다.
  • 발신 링크는 현재 페이지의 도메인과 동일한 도메인을 참조해야 합니다.
  • URL에 GCLID 또는 DCLID가 있어야 합니다(Google Ads 및 플러드라이트 태그만 해당).

gtag.js

이 기능을 사용 설정하려면 url_passthrough 매개변수를 true로 설정하세요.

gtag('set', 'url_passthrough', true);

태그 관리자

템플릿을 사용하여 태그를 만드는 경우 URL 패스 스루를 설정하는 컨트롤이 있을 수 있습니다. 직접 템플릿 태그를 빌드하는 경우 동의 모드 템플릿 만들기에서 gtagSet 맞춤 템플릿 API를 사용하여 URL 패스 스루를 설정하는 방법을 자세히 알아보세요.

또는 전환 링커나 애널리틱스 태그에서 다음 옵션을 사용하여 설정할 수도 있습니다.

Google Ads플러드라이트 태그의 경우:

이 기능을 사용 설정하려면 전환 링커 태그를 만들거나 기존 전환 링커 태그를 사용하고 모든 페이지 URL에서 연결 사용 설정을 선택하세요. 전환 링커 태그를 만드는 방법은 기본 설정을 참고하세요.

Google 애널리틱스 태그의 경우:

  1. 태그 관리자에서 설정할 필드로 이동합니다.
  2. 설정할 필드 섹션이 펼쳐지면 행 추가를 클릭합니다.
  3. 필드 이름에 적절한 값을 입력합니다.
    • Google 애널리틱스: GA4 구성 태그에 url_passthrough를 입력합니다.
    • Google 애널리틱스 설정 변수를 사용하는 Google 애널리틱스: 유니버설 애널리틱스 태그에 urlPassthrough를 입력합니다.
  4. 에 'true'를 입력합니다.
  5. 태그를 저장하고 게시합니다.

또는 사이트의 모든 페이지에서 GTM 설치 스니펫 앞에 url_passthrough 매개변수를 true로 설정할 수 있습니다.

window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('set', 'url_passthrough', true);

URL 패스 스루를 사용하는 경우 사용자가 웹사이트의 페이지 간에 이동할 때 쿼리 매개변수가 링크에 추가될 수도 있습니다.

  • gclid
  • dclid
  • gclsrc
  • _gl
  • wbraid

최상의 결과를 얻으려면 다음 사항을 확인하세요.

  1. 사이트의 리디렉션을 통해 위의 모든 쿼리 매개변수가 전달됩니다.
  2. 분석 도구가 페이지 URL에서 이 매개변수를 무시합니다.
  3. 이 매개변수가 사이트 동작을 방해하지 않습니다.

광고 데이터 수정

ad_storagedenied이면 광고 목적으로 새로운 쿠키가 설정되지 않습니다. 또한 이전에 google.com 및 doubleclick.net에 설정된 서드 파티 쿠키는 스팸 및 사기 관련 목적을 제외하고는 사용되지 않습니다. Google로 전송되는 데이터에는 URL 매개변수의 모든 광고 클릭 정보를 포함한 전체 페이지 URL이 계속 포함됩니다.

gtag.js

ad_storagedenied일 때 광고 데이터를 추가로 수정하려면 ads_data_redactiontrue로 설정하세요.

gtag('set', 'ads_data_redaction', true);

ads_data_redactiontrue이고 ad_storagedenied이면 Google Ads 및 플러드라이트 태그의 네트워크 요청에 전송된 광고 클릭 식별자가 수정됩니다. 네트워크 요청은 쿠키가 없는 도메인을 통해서도 전송됩니다.

태그 관리자

템플릿을 사용하여 태그를 만드는 경우 광고 데이터를 추가로 수정하기 위한 컨트롤이 있을 수 있습니다. 직접 템플릿 태그를 빌드하는 경우 동의 모드 템플릿 만들기에서 광고 데이터 수정에 대한 자세한 내용을 참고하세요.

태그 관리자에는 동의 설정에 대한 응답으로 태그가 작동하는 방식을 관리할 때 함께 사용하면 도움이 되는 여러 기능이 있습니다. 동의 초기화 트리거, 동의 관리를 위한 태그 설정, 동의 개요 페이지가 그 대표적인 기능입니다. 동의 모드를 자사 제품에 통합한 제3자 동의 관리 솔루션 제공업체도 있습니다. 태그 관리자 동의 기능에 대해 자세히 알아보기

동의 모드 구성을 확인하고 디버그하려면 Tag Assistant를 사용하는 것이 좋습니다. Tag Assistant를 사용하면 동의 상태의 설정 및 업데이트 여부와 방법을 확인할 수 있습니다. Tag Assistant는 다음을 지원합니다.

Tag Assistant 동의 모드 디버깅에 대해 자세히 알아보세요.

동의 모드 템플릿을 사용하지 않는 경우 브라우저의 개발자 도구를 사용하여 동의 설정을 분석할 수 있습니다.

동의 설정을 분석하려면 다음 단계를 따르세요.

  1. 요소 탭에서 검색창에 dataLayer를 입력합니다. 다음 사항을 확인하세요.

    • default 명령어가 다른 모든 Google 이벤트보다 먼저 나옵니다.
    • 동의 상태가 사용자의 상호작용에 따라 설정되며 update 명령어를 사용하여 설정됩니다.
    • 필수 동의 설정이 충족된 경우에만 태그가 실행됩니다.
    • ads_data_redactionurl_passthrough가 모두 사용자가 제공한 설정에 따라 설정됩니다.
    1. 네트워크 탭에서 다음을 실행합니다.
    • URL에서 동의 상태에 대한 gcs= 매개변수를 확인합니다. gcs 매개변수의 형식은 다음과 같습니다. gcs=G1 [ad_storage][analytics_storage]
    • 제공된 동의를 기반으로 올바른 gcs= 매개변수 값을 확인합니다. ad_storageanalytics_storage 값은 다음 중 하나입니다.
    의미
    G100 ad_storageanalytics_storage에 대한 동의가 거부되었습니다.
    G110 ad_storage에 대한 동의가 부여되고 analytics_storage에 대한 동의가 거부되었습니다.
    G101 ad_storage에 대한 동의가 거부되고 analytics_storage에 대한 동의가 부여되었습니다.
    G111 ad_storageanalytics_storage에 대한 동의가 부여되었습니다.
    G1-- 사이트에서 ad_storage 또는 analytics_storage에 대한 동의가 필요하지 않았습니다.
    • ads_data_redactiontrue로 설정된 경우 쿠키 없는 도메인(예: googlesyndication.com)이 사용되는지 확인합니다.
    • url_passthroughtrue로 설정된 경우 gclid/dclid가 발신 URL에 추가되고 _gl 링커 매개변수가 있는지(예: https://www.example.com/?_gl=1*abcde5*) 확인합니다.

기존 태그 관리

ga.js, analytics.js 또는 conversion.js와 같은 기존 태그를 사용하는 경우 gtag.js 또는 Google 태그 관리자로 업데이트해야 합니다.

다른 기존 태그의 개인 정보 보호 설정에 대한 자세한 내용은 다음 문서를 참고하세요.