Google Tag Manager (GTM) 템플릿을 통해 Dable 픽셀 추적 코드를 손쉽게 설치하고 관리할 수 있습니다.
Purchase 이벤트 사용 시 반드시 GTM에서 변수를 먼저 생성해야 합니다.
템플릿에서 {{purchase_value}}나 {{purchase_currency}}를 입력하면 GTM이 "알 수 없는 변수"라는 경고를 표시할 수 있습니다. 이는 정상적인 동작이며, 해당 변수를 GTM에서 생성하지 않았기 때문입니다.
해결 방법:
- GTM에서 변수 먼저 생성
- 템플릿에서
{{변수명}}사용 - 경고 자동 해결
- GTM 컨테이너에서 태그 > 새로 만들기 선택
- 태그 구성 > 커뮤니티 템플릿 갤러리 선택
- "Dable Conversion" 검색 및 선택
- 필수 설정 완료 후 저장
- PageView: 페이지 조회 추적
- ViewContent: 콘텐츠 조회 추적
- Search: 검색 이벤트 추적
- Lead: 리드 생성 추적
- CompleteRegistration: 회원가입 완료 추적
- AddToCart: 장바구니 추가 추적
- InitiateCheckout: 결제 시작 추적
- Purchase: 구매 완료 추적 (value, currency 파라미터 필수)
- Custom Event: 사용자 정의 이벤트 (event1, event2, event3)
Purchase 이벤트를 사용하기 전에 반드시 다음 변수들을 생성해야 합니다.
purchase_value 변수 생성:
- GTM에서 변수 > 새로 만들기 클릭
- 변수 구성 > 데이터 영역 변수 선택
- 변수 이름:
purchase_value - 데이터 영역 변수 이름:
purchase_value - 저장
purchase_currency 변수 생성:
- 변수 > 새로 만들기 클릭
- 변수 구성 > 데이터 영역 변수 선택
- 변수 이름:
purchase_currency - 데이터 영역 변수 이름:
purchase_currency - 저장
// 결제 완료 페이지에서 실행
dataLayer.push({
'purchase_value': 15000, // 실제 구매 금액
'purchase_currency': 'KRW', // 통화 코드
'event': 'purchase_completed' // 트리거용 이벤트
});- 태그 > 새로 만들기 > Dable Conversion 선택
- Service ID: 본인의 Dable Service ID 입력
- Event Type: Purchase 선택
- Transaction Value:
{{purchase_value}} - Currency:
{{purchase_currency}}
- 트리거 > 새로 만들기 > 사용자 정의 이벤트
- 이벤트 이름:
purchase_completed - 태그에 이 트리거 연결
- GTM에서
purchase_value변수 생성 - GTM에서
purchase_currency변수 생성 - 웹페이지에 dataLayer.push() 코드 추가
- 태그에서
{{purchase_value}},{{purchase_currency}}사용 - 트리거 설정 완료
- GTM Preview 모드에서 테스트
// 웹페이지에서 실행
dataLayer.push({
'purchase_value': orderData.totalAmount,
'purchase_currency': orderData.currency,
'transaction_id': orderData.orderId,
'event': 'purchase_completed'
});DOM 요소나 JavaScript 객체에서 값을 동적으로 가져올 수 있습니다.
// GTM의 사용자 정의 JavaScript 변수
function() {
var priceElement = document.querySelector('.total-price');
return priceElement ? priceElement.textContent.replace(/[^0-9]/g, '') : '';
}<!-- HTML 예시 -->
<span id="order-total" data-value="15000">₩15,000</span>
<input type="hidden" id="currency" value="KRW">GTM 설정:
- 변수 > DOM 요소 선택
- 선택 방법: CSS 선택기
- 요소 선택기:
#order-total - 속성 이름:
data-value
- GTM에서 미리보기 클릭
- 웹사이트에서 Purchase 이벤트 발생시키기
- GTM Preview 창에서 확인:
- Variables 탭에서 변수 값 확인
- Tags 탭에서 Dable Conversion 태그 실행 확인
- Data Layer 탭에서 데이터 푸시 확인
// 콘솔에서 실행
console.log(dataLayer); // data layer 내용 확인
console.log(window.dablena); // dablena 객체 확인
console.log('{{purchase_value}}'); // 변수 값 확인 (GTM Preview에서만)A: 정상입니다. GTM에서 해당 변수를 먼저 생성하세요. 변수 생성 후 경고가 사라집니다.
A: 다음을 확인하세요:
- dataLayer.push() 코드가 태그 실행 전에 실행되는지
- 변수 이름 대소문자가 정확한지
- GTM Preview 모드에서 Variables 탭 확인
A: 필수 사항을 확인하세요:
- value와 currency 변수가 모두 설정되었는지
- 트리거가 정상 작동하는지
- 네트워크 탭에서 Dable 스크립트 로드 확인
A: 네, 가능합니다. {{purchase_value}} 대신 15000 같은 고정 값을 직접 입력할 수 있습니다.
A: Purchase 이벤트만 value와 currency 파라미터를 지원합니다. 다른 이벤트는 추가 파라미터가 필요하지 않습니다.
-
변수 값이 빈 문자열인 경우
// dataLayer 푸시 타이밍 확인 window.addEventListener('load', function() { dataLayer.push({ 'purchase_value': getPurchaseValue(), 'purchase_currency': 'KRW' }); });
-
디버깅 활성화
- 태그 설정에서 Enable Debug Mode 체크
- 브라우저 콘솔에서 상세 로그 확인
-
네트워크 확인
- 개발자 도구 > Network 탭
dablena.min.js로드 확인- 추적 요청 확인
examples/ 폴더에서 테스트용 HTML 파일들을 제공합니다.
Purchase 이벤트 테스트용 간단한 페이지입니다.
- 버튼 클릭으로 Purchase 이벤트 발생
- KRW, USD 테스트 케이스 포함
- DataLayer 로그 실시간 확인
사용법:
GTM-XXXXXXX를 실제 GTM 컨테이너 ID로 변경- GTM에서
purchase_value,purchase_currency변수 생성 - Dable Conversion 태그 설정 후 테스트
기본 이벤트들을 테스트할 수 있는 페이지입니다.
- PageView, ViewContent, Search, Lead 등
- 각 이벤트별 개별 테스트 가능
커스텀 이벤트(event1, event2, event3) 테스트 페이지입니다.
- 템플릿에서 선택 가능한 커스텀 이벤트 테스트
이 GTM 템플릿은 다음과 같은 권한을 요청합니다:
dablena: Dable 픽셀 메인 객체 (읽기/쓰기/실행)__dablena_gtm_loaded: 로딩 상태 플래그 (읽기/쓰기)dablena.q: 명령 큐 배열 (읽기/쓰기)
https://static.dable.io/dist/*: Dable 픽셀 스크립트 로딩
- 환경: debug 모드에서만 활성화
템플릿 코드에서 다음 GTM API들을 사용할 수 있습니다:
// 기본 GTM API
const copyFromWindow = require('copyFromWindow');
const setInWindow = require('setInWindow');
const injectScript = require('injectScript');
const makeTableMap = require('makeTableMap');
const log = require('logToConsole');
const createArgumentsQueue = require('createArgumentsQueue');- 모든 권한은 최소 필요 범위로만 제한됨
- 외부 스크립트는 Dable 도메인으로만 제한됨
- 로깅은 디버그 모드에서만 활성화됨
- 권한 추가: 새로운 API 사용 시 해당 권한을
___WEB_PERMISSIONS___섹션에 추가 - 테스트 업데이트: 코드 변경 시
___TESTS___섹션의 테스트 케이스도 함께 업데이트 - 보안 검토: 추가 권한이 최소 필요 범위인지 확인
이 템플릿은 GitHub Actions를 통해 자동으로 릴리즈됩니다.
-
GitHub Actions 페이지로 이동
- Repository > Actions > "Release GTM Template" 워크플로우 선택
-
Run workflow 클릭
- Branch:
main선택 - 다음 정보 입력:
- Version: 버전 번호 (예:
v1.0.6)- 형식:
v[major].[minor].[patch](예:v1.0.0,v1.2.3)
- 형식:
- Release notes: 릴리즈 노트 내용
- Version: 버전 번호 (예:
- Branch:
-
자동 처리 내용
워크플로우가 다음 작업을 자동으로 수행합니다:
✅ 버전 검증
- 버전 형식 확인 (
v[숫자].[숫자].[숫자]) - 중복 태그 체크
✅ 파일 업데이트
template.tpl: 타임스탬프 갱신metadata.yaml: 새 버전 SHA 추가CHANGELOG.md: 릴리즈 노트 추가
✅ Git 작업
- 변경사항 커밋
- Git 태그 생성 및 푸시
- GitHub Release 생성
✅ GTM 커뮤니티 갤러리 연동
metadata.yaml의 SHA를 통해 GTM 갤러리 자동 업데이트
- 버전 형식 확인 (
이 프로젝트는 Semantic Versioning을 따릅니다:
- Major (v2.0.0): Breaking changes (호환성 깨지는 변경)
- Minor (v1.1.0): 새 기능 추가 (하위 호환성 유지)
- Patch (v1.0.1): 버그 수정
Version: v1.0.6
Release notes: |
### 개선사항
- 타이머 트리거 이슈 수정
- callInWindow 사용으로 변경하여 안정성 향상
### 버그 수정
- 스크립트 로드 후 이벤트 전송 문제 해결-
GitHub Release 페이지 확인
-
GTM 커뮤니티 갤러리 확인
- GTM에서 "Dable Conversion" 검색
- 새 버전이 표시되는지 확인 (최대 24시간 소요)
-
metadata.yaml 검증
- SHA가 올바른 커밋을 가리키는지 확인
- 버전 히스토리가 올바르게 보존되었는지 확인
문제 발생 시:
# 1. 태그 삭제
git tag -d v1.0.6
git push origin :refs/tags/v1.0.6
# 2. 커밋 되돌리기
git revert HEAD~3 # 최근 3개 커밋 되돌리기
# 3. metadata.yaml 수동 수정
# 이전 버전의 SHA로 복구
# 4. 푸시
git push origin main- 릴리즈 후에는 태그를 수정하거나 삭제하지 마세요
- GTM 갤러리에 배포된 후에는 롤백이 어렵습니다
- 릴리즈 전에 반드시 테스트를 완료하세요
- GTM Data Layer 가이드
- GTM 변수 문서
- GTM 사용자 정의 변수
- GTM 전자상거래 추적
- GTM Custom Templates
- GTM Sandboxed JavaScript
문의사항이나 기술적 문제가 있으시면 Dable 고객지원팀에 연락주세요.