웹사이트에서 동의 모드 설정하기

이 페이지는 웹사이트에서 자체 동의 솔루션을 유지하고 동의 모드를 통합하려는 개발자를 대상으로 합니다. 동의 모드에 대한 소개는 동의 모드 개요를 읽어보세요. 동의 관리 플랫폼 (CMP)을 사용하여 사용자 동의를 얻는 경우 CMP로 동의 모드를 설정하는 방법을 자세히 알아보세요.

기본 또는 고급 방식으로 동의 모드를 구현할 수 있습니다. 회사 가이드라인을 확인하여 구현 방법과 설정할 기본값을 선택하세요. 기본 동의 모드와 고급 동의 모드에 대해 자세히 알아보세요.

시작하기 전에

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

  • 태그 관리자를 사용하고 자체 배너를 유지하려는 경우 태그 관리자 컨테이너를 통해 배너를 로드하는 것이 좋습니다. 이렇게 하려면 동의 모드 템플릿을 만들어야 합니다. 또는 커뮤니티 템플릿 갤러리의 동의 모드 템플릿을 사용할 수 있습니다.

  • gtag.js를 사용하는 경우 웹사이트의 모든 페이지에 Google 태그를 설치해야 합니다. 동의 모드 코드가 웹사이트의 각 페이지에 추가됩니다.

동의 모드를 설정하려면 다음 작업을 실행해야 합니다.
  1. 사용자가 동의를 부여하기 전: 기본 동의 상태를 설정합니다.
  2. 동의 설정과의 사용자 상호작용을 기반으로 동의 상태 업데이트

사용 중인 각 동의 유형의 기본값을 설정합니다. 기본적으로 동의 모드 값이 설정되지 않습니다.

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

gtag.js

기본 측정 기능을 조정하려면 사이트의 모든 페이지에서 측정 데이터를 전송하는 명령어 (예: config 또는 event) 전에 gtag('consent', 'default', ...) 명령어를 호출하세요.

예를 들어 기본적으로 모든 매개변수에 대한 모든 동의 거부를 설정하려면 다음 단계를 따르세요.

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

선택사항: 비동기 동의 관리 플랫폼과 통합

배너가 비동기식으로 로드되는 경우 항상 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
  });

태그 관리자

Google 태그 관리자를 사용하는 경우 태그 관리자 동의 API를 사용하여 자체 템플릿을 만드세요. 다음 를 참고하여 시작하세요.

동의 상태 관리를 위해 태그 관리자 관련 API setDefaultConsentStateupdateConsentState를 사용합니다. gtagSet API를 사용하면 필요에 따라 ads_data_redaction 및 URL 패스 스루 설정을 선택적으로 설정할 수 있습니다.

gtag.js

사용자의 동의 상태를 전송하려면 update 명령어를 사용합니다. 동의 모드에서 동의 선택 여부를 저장하지 않으므로 사용자가 동의 관리 솔루션과 상호작용하는 즉시 동의 상태를 업데이트하세요. 사용자가 동의한 후 이 상태를 유지하고 이후 페이지에서 그에 따라 업데이트 명령어를 호출하세요.

모든 동의 유형에 올바른 값이 설정되어 있는지 확인하는 것은 사용자의 몫입니다. 지원되는 유형에 대해 자세히 알아보려면 API 참조를 읽어보세요.

다음 코드 예시는 사용자가 모든 옵션에 동의했을 때 동의 상태를 granted로 업데이트하는 방법을 보여줍니다.

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

태그 관리자

동의 모드 템플릿을 사용하면 사용자가 배너와 상호작용할 때 사용자 동의가 자동으로 업데이트됩니다.

동의 모드 템플릿을 직접 빌드하는 경우 동의 상태 관리를 위해 태그 관리자 관련 API setDefaultConsentStateupdateConsentState를 사용하세요. gtagSet API를 사용하면 필요에 따라 ads_data_redaction 및 URL 패스 스루 설정을 선택적으로 설정할 수 있습니다.

구현 예

다음 예에서는 기본적으로 여러 동의 모드 매개변수를 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 사용자 동의 정책의 시행을 강화하고 있습니다.

Google의 유럽 경제 지역 (EEA)의 트래픽에 대한 동의 모드 업데이트에 대해 자세히 알아보세요.

동의 모드 사용자는 ad_storageanalytics_storage 외에 새로운 매개변수 두 개를 전송해야 합니다.

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

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

  • Google 태그 UI를 사용하여 데이터를 공유할 Google 서비스 설정
  • 특정 지역의 동작 설정
  • 사용자가 쿠키에 동의하지 않은 경우 URL의 광고 클릭, 클라이언트 ID 및 세션 ID 정보 전달
  • 사용자가 광고 쿠키에 대한 동의를 거부하는 경우 광고 정보를 완전히 수정(삭제)

지역별 동작

특정 지역의 방문자에게 적용되는 기본 동의 상태를 설정하려면 gtag 동의 기본 명령어에 (ISO 3166-2에 따라) 지역을 지정하세요. 지역 값을 사용하면 지역 규정을 준수할 수 있습니다.

특정 지역의 기본값을 설정한 다음 다른 모든 지역의 기본값을 다르게 설정할 수 있습니다. 지역 매개변수가 없는 gtag 동의 기본값 명령어는 다른 지역별 명령어에 포함되지 않는 모든 방문자의 기본값을 설정합니다.

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로 설정하세요. config 명령어 전에 기본 스니펫에 다음 명령어를 추가합니다.

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

태그 관리자

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

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

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

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

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

  1. 태그 관리자에서 설정할 필드로 이동하여 **태그 구성

    설정할 필드**.

    1. 설정할 필드 섹션이 펼쳐지면 행 추가를 클릭합니다.
    2. 필드 이름url_passthrough를 입력합니다.
    3. 에 'true'를 입력합니다.
    4. 태그를 저장하고 게시합니다.

    또는 사이트의 모든 페이지에서 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 및 플러드라이트 태그의 네트워크 요청에 전송된 광고 클릭 식별자가 수정됩니다. 네트워크 요청은 쿠키가 없는 도메인을 통해서도 전송됩니다.

태그 관리자

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

일반적인 문제

고급 동의 모드를 구현할 때는 사용자가 동의를 부여하는 페이지에서 업데이트 명령어를 호출해야 합니다.

동의가 거부된 상태로 페이지가 로드된 후 동의가 변경되어 동의가 허용된 상태로 다시 로드되면 Google 태그에서 원래 페이지의 주요 데이터 포인트를 잃을 수 있습니다. 이후 보고서는 불완전할 수 있습니다.

예를 들어 Google 애널리틱스에서 동의가 있는 많은 세션에 session_start 이벤트가 누락될 수 있습니다.

이 문제를 방지하려면 사용자의 동의 상태가 변경될 때마다 업데이트 명령어를 호출하세요.

동의 유형이 거부에서 허용으로 업데이트되는 경우 Google 태그가 이 업데이트를 기반으로 측정을 전송할 수 있습니다. 페이지가 언로드될 때 업데이트 명령어가 호출되면 브라우저가 완료되기 전에 이 네트워크 트래픽을 취소할 수 있습니다. 이후 보고서는 불완전할 수 있습니다.

가능한 경우 페이지가 언로드되기 훨씬 전에 업데이트 명령어가 로깅되도록 합니다.

다음 단계

기존 태그 관리

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

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