GTM이 쇼피파이에서 왜 필요한가
쇼피파이 기본 추적만 쓰고 있는 광고주분들, 솔직히 꽤 많이 만나봤어요. “쇼피파이에서 알아서 전환 잡아주는 거 아니에요?”라고 물으시는데, 반은 맞고 반은 틀려요. 쇼피파이 자체 픽셀은 기본적인 구매 추적은 되지만, 구글 Ads에서 필요한 세밀한 전환 데이터 — 예를 들어 장바구니 추가, 결제 시작, 특정 금액 이상 구매 같은 마이크로 컨버전까지는 제대로 못 잡거든요.
우리 테라그로스에서 쇼피파이 쓰는 클라이언트 20곳 정도 관리하는데, GTM(Google Tag Manager) 없이 운영하다가 전환 데이터 누락으로 ROAS가 실제보다 30~40% 낮게 찍히는 케이스를 여러 번 봤어요. 광고비는 쓰는데 성과가 안 보이니까 예산을 줄이고, 줄이니까 더 안 되는 악순환이죠.
GTM을 제대로 세팅하면 구글 Ads 전환 태그, GA4 이벤트, 리마케팅 태그를 한 곳에서 관리할 수 있고, 쇼피파이 코드를 직접 건드리지 않아도 돼서 개발자 없이도 마케터가 독립적으로 운영 가능해요. 사실 이게 GTM의 가장 큰 장점이에요.
쇼피파이에 GTM 컨테이너 설치하는 법
먼저 GTM 계정이 없으면 tagmanager.google.com에서 만들어야 해요. 계정 만들고 컨테이너 생성할 때 타겟 플랫폼은 “웹”을 선택하면 됩니다.
컨테이너를 만들면 GTM-XXXXXXX 형태의 코드 두 개가 나오는데, 하나는 <head>에, 하나는 <body> 바로 뒤에 넣으라고 안내가 뜹니다. 근데 쇼피파이에서는 이걸 넣는 방식이 좀 달라요.
방법 1 – 쇼피파이 기본 설정 활용
2023년 하반기부터 쇼피파이에서 고객 이벤트(Customer Events) 기능을 추가했어요. 쇼피파이 관리자 → Settings → Customer events로 가면 커스텀 픽셀을 추가할 수 있는데, 여기에 GTM 스니펫을 넣는 게 공식 권장 방식이에요.
근데 솔직히 말하면, 이 방식은 샌드박스 환경에서 돌아가기 때문에 일부 태그가 정상 작동 안 하는 경우가 있어요. 특히 구글 Ads 리마케팅 태그에서 간헐적으로 쿠키 문제 생기는 걸 우리가 직접 겪었거든요.
방법 2 – theme.liquid 직접 수정
쇼피파이 관리자 → Online Store → Themes → 현재 테마 Edit code → theme.liquid 파일을 열어요. <head> 태그 바로 아래에 GTM 첫 번째 스니펫, <body> 태그 바로 아래에 두 번째 스니펫을 붙여넣으면 끝이에요.
우리는 대부분의 클라이언트에게 방법 2를 권하고 있어요. 안정성 면에서 확실히 낫고, 체크아웃 페이지 추적까지 커버하려면 추가 설정이 필요하긴 하지만 기본 페이지 추적은 이걸로 충분합니다.
주의할 점 — 쇼피파이 Plus가 아닌 일반 플랜에서는 체크아웃 페이지(checkout.liquid)를 수정할 수 없어요. 이 경우 체크아웃 단계 추적은 Additional Scripts 영역을 활용해야 합니다.
구글 Ads 전환 태그 – GTM에서 설정하기
GTM에 컨테이너 올렸으면 이제 진짜 중요한 작업이에요. 구글 Ads에서 전환 액션을 만들고 그걸 GTM으로 쏴주는 과정.
1단계 – 구글 Ads에서 전환 액션 생성
구글 Ads 로그인 → 도구 → 측정 → 전환 → 새 전환 액션 → 웹사이트 선택. 여기서 전환 카테고리는 “구매”로, 전환 이름은 알아보기 쉽게 “Shopify Purchase” 같이 넣어주세요. 전환 가치는 “각 전환마다 다른 가치 사용”을 선택해야 주문 금액이 동적으로 들어가요.
이걸 설정 안 하고 고정 가치로 넣어두면 10만 원짜리 주문이든 100만 원짜리 주문이든 같은 가치로 잡혀서 ROAS 계산이 완전히 틀어져요. 우리가 신규 클라이언트 인수할 때 이 실수가 되어 있는 경우가 한 60%는 되는 것 같아요.
2단계 – GTM에서 태그 만들기
전환 액션을 만들면 전환 ID와 전환 라벨이 나와요. 이 두 개를 GTM에서 써야 합니다.
GTM 워크스페이스 → 태그 → 새로 만들기 → 태그 유형 “Google Ads 전환 추적” 선택. 전환 ID, 전환 라벨 입력하고, 전환 가치와 거래 ID는 변수로 받아야 하는데 — 여기가 쇼피파이에서 제일 까다로운 부분이에요.
3단계 – 데이터 레이어(dataLayer) 푸시 설정
쇼피파이 체크아웃 완료 페이지에서 주문 데이터를 GTM으로 넘기려면 dataLayer.push를 써야 해요. 쇼피파이 관리자 → Settings → Checkout → Additional Scripts에 아래 코드를 넣습니다.
Additional Scripts에 넣을 코드 예시
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event': 'purchase',
'transaction_id': '{{ order.name }}',
'value': {{ total_price | money_without_currency | remove: ',' }},
'currency': '{{ shop.currency }}'
});
</script>
Liquid 변수 {{ order.name }}은 주문번호, {{ total_price }}는 결제 금액을 자동으로 가져옵니다. 근데 여기서 remove: ‘,’ 필터를 빼먹으면 1,000 이상 금액에서 콤마 때문에 값이 깨져요. 실제로 이거 때문에 전환 가치가 0원으로 찍히는 사고를 두 번 정도 처리한 적 있어요.
GTM으로 돌아가서, 변수 → 사용자 정의 변수 → 데이터 영역 변수로 transaction_id, value, currency를 각각 만들어주고, 아까 만든 구글 Ads 전환 태그에서 이 변수들을 매핑해줘요.
트리거는 “맞춤 이벤트”로 만들되, 이벤트 이름은 dataLayer.push에서 넣은 ‘purchase’와 정확히 일치해야 합니다.
🔍 GTM 설정이 처음이라 막막하신가요?
테라그로스에서 쇼피파이 전환 추적 세팅을 무료로 진단해드립니다. 현재 어떤 데이터가 누락되고 있는지 리포트로 받아보세요.
GA4 이벤트도 같이 잡아야 하는 이유
구글 Ads 전환만 세팅하고 GA4는 안 하는 분들이 있는데, 이러면 절반만 한 거예요. GA4에서 전자상거래 이벤트를 제대로 세팅해두면 사용자 행동 퍼널을 볼 수 있거든요 — 상품 조회 → 장바구니 추가 → 결제 시작 → 구매 완료까지 각 단계별 이탈률을 파악할 수 있어요.
우리 클라이언트 중 뷰티 쇼피파이 몰 하나가 있었는데, GA4 퍼널 분석해보니까 장바구니에서 결제 시작으로 넘어가는 단계에서 72%가 이탈하고 있었어요. 원인을 파보니 배송비가 결제 직전에야 표시되는 구조였던 거죠. 상품 페이지에 배송비 미리 노출하는 것만으로 해당 구간 이탈률이 72%에서 51%로 떨어졌고, 월 매출이 약 1,800만 원 늘었습니다.
이런 분석은 구글 Ads 전환 데이터만으로는 절대 못 해요. GA4 전자상거래 이벤트 — view_item, add_to_cart, begin_checkout, purchase — 이 네 개는 최소한 세팅해두셔야 합니다.
GTM에서 GA4 전자상거래 이벤트 설정
GA4 설정 태그가 이미 GTM에 있다는 전제 하에, 새 태그를 만들어요. 태그 유형 “Google 애널리틱스 – GA4 이벤트” 선택, 이벤트 이름 purchase 입력. 매개변수에 transaction_id, value, currency를 아까 만든 데이터 영역 변수와 동일하게 매핑하면 됩니다.
근데 GA4는 items 배열도 받을 수 있거든요. 어떤 상품이 얼마에 몇 개 팔렸는지까지 보려면 dataLayer.push에서 items 데이터도 같이 넘겨야 해요. 쇼피파이 Liquid에서는 {% for item in line_items %}로 루프 돌려서 상품 데이터를 배열로 만들 수 있어요.
Enhanced Conversions 설정 – 2026년 필수
구글이 서드파티 쿠키 정책을 계속 바꾸고 있잖아요. Chrome에서의 쿠키 제한은 당장은 유예됐지만, Safari나 Firefox에서는 이미 막혀 있어서 전환 추적 누락이 실제로 발생하고 있어요. 우리 데이터 기준으로, Safari 사용자 전환의 약 25~30%가 기존 방식으로는 잡히지 않고 있었거든요.
이걸 보완하는 게 향상된 전환(Enhanced Conversions)이에요. 사용자가 구매할 때 입력한 이메일, 전화번호 같은 퍼스트파티 데이터를 해시 처리해서 구글에 보내는 방식이죠. 구글 공식 문서(support.google.com/google-ads/answer/9888656)에서 자세한 스펙을 확인할 수 있어요.
GTM에서 향상된 전환 켜기
아까 만든 구글 Ads 전환 태그 열어서, “향상된 전환 포함” 체크박스를 켜요. 그리고 사용자 제공 데이터 변수를 새로 만들어야 하는데, 쇼피파이 체크아웃 페이지에서 이메일과 주소 정보를 dataLayer로 넘기면 됩니다.
향상된 전환용 추가 dataLayer 코드
dataLayer.push({
'event': 'purchase',
'enhanced_conversion_data': {
'email': '{{ customer.email }}',
'phone_number': '{{ billing_address.phone }}',
'first_name': '{{ billing_address.first_name }}',
'last_name': '{{ billing_address.last_name }}',
'street': '{{ billing_address.street }}',
'city': '{{ billing_address.city }}',
'region': '{{ billing_address.province }}',
'postal_code': '{{ billing_address.zip }}',
'country': '{{ billing_address.country_code }}'
}
});
이 데이터는 구글 서버로 전송되기 전에 자동으로 SHA-256 해시 처리되기 때문에 개인정보가 평문으로 노출되지 않아요. 그래도 개인정보처리방침에 구글 Ads 전환 추적 관련 내용은 반드시 포함시켜야 합니다.
디버깅과 검증 – 안 하면 다 소용없어요
세팅만 하고 검증 안 하는 게 제일 위험해요. “다 했어요”라고 했는데 실제로는 태그가 안 쏘이고 있는 경우가 정말 많거든요.
GTM 미리보기 모드 활용
GTM 워크스페이스에서 “미리보기” 버튼 누르면 Tag Assistant가 열려요. 여기서 쇼피파이 사이트에 접속해서 실제 구매 과정을 테스트하면 어떤 태그가 언제 발동되는지 실시간으로 볼 수 있어요.
체크해야 할 것들 — purchase 이벤트가 체크아웃 완료 시점에 정확히 한 번만 발생하는지, 전환 가치가 실제 결제 금액과 일치하는지, transaction_id가 고유한지. 특히 “한 번만”이 중요해요. 페이지 새로고침할 때마다 purchase 이벤트가 중복 발생하면 전환 수가 부풀려지거든요.
중복 전환 방지
쇼피파이 thank you 페이지는 사용자가 새로고침하면 같은 페이지가 다시 로드돼요. 이때 dataLayer.push가 또 실행되면 같은 주문이 두 번 세 번 잡힙니다. 이걸 막으려면 Liquid의 first_time_accessed 변수를 활용해야 해요.
{% if first_time_accessed %}
<script>
dataLayer.push({
'event': 'purchase',
'transaction_id': '{{ order.name }}',
'value': {{ total_price | money_without_currency | remove: ',' }},
'currency': '{{ shop.currency }}'
});
</script>
{% endif %}
{% if first_time_accessed %}로 감싸면 첫 번째 로드에서만 실행돼요. 이 한 줄이 전환 데이터 정확도에 엄청난 차이를 만들어요. 우리가 한 클라이언트에서 이거 적용 전후를 비교해봤는데, 전환 수가 약 18% 줄었어요. 그만큼 중복으로 잡히고 있었던 거죠.
구글 Ads 전환 진단 도구
구글 Ads 안에서도 전환 액션 상태를 확인할 수 있어요. 도구 → 측정 → 전환에서 해당 전환 액션 클릭하면 “진단” 탭이 있는데, 여기서 태그가 제대로 설치되었는지, 최근 전환이 기록되었는지 확인 가능합니다. “확인되지 않음” 상태가 며칠 지속되면 세팅에 문제가 있는 거예요.
실전 체크리스트 – 쇼피파이 GTM 전환 추적
우리가 내부적으로 쓰는 체크리스트를 공유할게요. 새 클라이언트 온보딩할 때 이 순서대로 검증하고 있어요.
GTM 컨테이너가 전체 페이지에서 로드되는지 확인하는 게 첫 번째예요. 크롬 개발자 도구 → Network 탭에서 “gtm.js” 검색하면 바로 보입니다. 두 번째로 dataLayer 변수가 체크아웃 완료 시점에 정확한 값으로 채워지는지 — 콘솔에서 dataLayer 찍어보면 바로 확인 가능해요. 세 번째, GTM 미리보기에서 모든 태그 발동 확인. 네 번째, 구글 Ads 전환 상태가 “기록 중”으로 바뀌는지 확인 — 보통 테스트 전환 후 24~48시간 내에 바뀝니다. 다섯 번째, GA4 실시간 보고서에서 purchase 이벤트와 매개변수 확인. 여섯 번째, 향상된 전환 데이터가 정상 전송되는지 Tag Assistant에서 체크.
이 여섯 단계를 다 통과해야 “세팅 완료”라고 말할 수 있어요. 하나라도 빠지면 나중에 반드시 문제가 터집니다.
🎯 쇼피파이 전환 추적, 제대로 되고 있는지 확신이 없으신가요?
테라그로스는 구글 Ads 공식 파트너로서 300개 이상의 쇼핑몰 전환 추적을 세팅한 경험이 있습니다. 현재 세팅 상태를 무료로 점검받아보세요.
자주 묻는 질문
쇼피파이 기본 픽셀이 있는데 GTM을 왜 따로 써야 하나요?
쇼피파이 기본 픽셀은 단순 구매 추적만 해요. GTM을 쓰면 장바구니 추가, 결제 시작 같은 마이크로 전환까지 추적할 수 있고, 구글 Ads 전환 태그와 GA4 이벤트를 한 곳에서 관리할 수 있어요. 거기다 향상된 전환도 GTM을 통해야 제대로 설정 가능합니다. 코드 수정 없이 마케터가 직접 태그를 추가하거나 수정할 수 있는 것도 큰 장점이에요.
GTM 설치하면 쇼피파이 사이트 속도가 느려지나요?
GTM 컨테이너 자체는 비동기로 로드되기 때문에 페이지 렌더링을 막지 않아요. 다만 GTM 안에 태그를 30개, 40개씩 넣으면 당연히 느려지겠죠. 우리 경험상 필수 태그 5~8개 정도면 사이트 속도에 체감할 수 있는 영향은 거의 없어요. Core Web Vitals 기준으로 LCP가 0.1초 미만으로 늘어나는 정도입니다.
쇼피파이 Plus가 아닌 일반 플랜에서도 전환 추적이 되나요?
네, 됩니다. 다만 일반 플랜에서는 checkout.liquid를 직접 수정할 수 없어서 체크아웃 페이지에 GTM 컨테이너를 넣는 게 제한돼요. 대신 Settings → Checkout → Additional Scripts에 dataLayer.push 코드를 넣는 방식으로 구매 완료 전환은 정상적으로 추적 가능합니다. 체크아웃 단계별 추적(begin_checkout, add_shipping_info 등)까지 하려면 Plus 플랜이 필요해요.
전환 가치가 0원으로 찍히는데 어떻게 고치나요?
이 문제 정말 자주 봐요. 원인은 대부분 두 가지 중 하나예요. 첫째, dataLayer.push에서 total_price 값에 콤마(,)가 포함되어 있어서 숫자로 인식이 안 되는 경우 — Liquid 필터에 | remove: ','를 추가하면 해결돼요. 둘째, GTM에서 데이터 영역 변수 이름이 dataLayer.push의 키와 정확히 일치하지 않는 경우 — 대소문자까지 동일해야 합니다. GTM 미리보기 모드에서 Variables 탭을 확인하면 어디서 값이 빠지는지 바로 보여요.
향상된 전환을 꼭 설정해야 하나요?
2026년 현재 시점에서는 거의 필수라고 봐야 해요. Safari에서 ITP(Intelligent Tracking Prevention) 때문에 쿠키 기반 추적이 크게 제한되고 있고, 한국 모바일 사용자의 약 20~25%가 Safari를 쓰고 있거든요. 향상된 전환을 설정하면 이 사용자들의 전환 데이터도 퍼스트파티 데이터 매칭을 통해 복원할 수 있어요. 우리 클라이언트 평균 기준으로 향상된 전환 적용 후 측정되는 전환 수가 약 15~20% 증가했습니다.


















