Google Analytics์ GTM ์ฐ๋์ ํตํ ํ๊ทธ ๊ด๋ฆฌ ๊ฐ์
๊ฐ์
๊ธฐ์กด์ Google Analytics(GA)์์ ์ง์ ๊ด๋ฆฌํ๋ ์ด๋ฒคํธ ์ถ์ ์ Google Tag Manager(GTM)๋ฅผ ํตํด ์ค์์ง์ค์์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ๊ฐ์ ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์์ ์ฝ๋ ์์ ์์ด๋ ๋ง์ผํ ํ์์ ์ง์ ํ๊ทธ๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ผ๋ฉฐ, Next.js ํ๊ฒฝ์์ ์ต์ ํ๋ ๊ตฌํ ๋ฐฉ๋ฒ์ ์ ์ฉํ์ต๋๋ค.
1. Google Analytics ๊ธฐ๋ณธ ์ค์
1.1 ๊ณ์ ๋ฐ ์์ฑ ์ ํ
GA ๋์๋ณด๋ ์ผ์ชฝ ์๋จ์์ ์ ์ ํ GA ๊ณ์ ๊ณผ ์์ฑ์ ์ ํํฉ๋๋ค. ์ด๋ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์์ง ํ๊ฒฝ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ๋๋ค.
1.2 ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ค์
- ์ผ์ชฝ ํ๋จ์ ์ค์ ๋ฒํผ ํด๋ฆญ
- ๋ฐ์ดํฐ ์์ง ๋ฐ ์์ โ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ด๋
- ์ค์ ์ด ํ์ํ ์คํธ๋ฆผ ์ ํ
2. Measurement ID ํ์ธ ๋ฐ GTM ์ฐ๋
2.1 Measurement ID ํ๋
์ ํํ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ธ๋ถ์ ๋ณด์์ Measurement ID๋ฅผ ํ์ธํฉ๋๋ค. ์ด ID๋ GTM์์ GA ํ๊ทธ๋ฅผ ์ค์ ํ ๋ ํ์์ ์ผ๋ก ํ์ํ ์๋ณ์์ ๋๋ค.
์ ์ค์ํ๊ฐ? Measurement ID๋ GTM๊ณผ GA ๊ฐ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ ์ญํ ์ ํ๋ฉฐ, ์ฌ๋ฐ๋ฅธ ์์ฑ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
2.2 GTM์์ ๋ณ์๋ก ๊ด๋ฆฌ
GTM์์ Measurement ID๋ฅผ ์ง์ ์ ๋ ฅํ์ง ์๊ณ ๋ณ์๋ก ์ค์ ํ์ฌ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ ํ๊ฒฝ๋ณ(dev/prod) ๋ค๋ฅธ ์ธก์ ID๋ฅผ ์์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค.
ํจ๊ณผ: ํ๊ฒฝ๋ณ ์ค์ ๋ถ๋ฆฌ๋ก ํ ์คํธ ๋ฐ์ดํฐ์ ์ค์ ๋ฐ์ดํฐ์ ํผ์ฌ๋ฅผ ๋ฐฉ์งํ๊ณ , ๋ฐฐํฌ ์ ์ค์ ์ค๋ฅ๋ฅผ ์ต์ํํ ์ ์์ต๋๋ค.
3. Next.js ํ๊ฒฝ์์์ GTM ๊ตฌํ
3.1 ํ๊ฒฝ ๋ณ์ ์ค์
# .env ํ์ผ
NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID=GTM-XXXXXXX
์ฅ์ : ํ๊ฒฝ๋ณ์๋ฅผ ํตํด ๊ฐ๋ฐ/์คํ ์ด์ง/ํ๋ก๋์ ํ๊ฒฝ๋ณ๋ก ๋ค๋ฅธ GTM ์ปจํ ์ด๋๋ฅผ ์์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
3.2 Next.js Script ์ปดํฌ๋ํธ ํ์ฉ
Next.js์์ ์ ๊ณตํ๋ ์๋ํํฐ ์ต์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ GTM์ ๊ตฌํํฉ๋๋ค:
// googleTagManager.js
import Script from 'next/script'
export default function GoogleTagManager() {
return (
<Script
id="google-tag-manager"
strategy="afterInteractive"
dangerouslySetInnerHTML={{
__html: `
(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','${process.env.NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID}');
`,
}}
/>
)
}
์ ์ด ๋ฐฉ์์ด ํจ๊ณผ์ ์ธ๊ฐ? Next.js์ Script ์ปดํฌ๋ํธ๋ ์ฑ๋ฅ ์ต์ ํ์ ๋ก๋ฉ ์ ๋ต์ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํฉ๋๋ค.
3.3 ์ปค์คํ ์ด๋ฒคํธ ์ ์ก ํจ์
// ๊ธฐ๋ณธ sendGTMEvent ์ปค์คํ
import { sendGTMEvent } from '@next/third-parties/google'
export const trackEvent = (eventName, parameters) => {
sendGTMEvent({
event: eventName,
...parameters
})
}
// ์ฌ์ฉ ์์
const eventConfig = {
purchase: {
currency: 'KRW',
transaction_id: 'T12345',
value: 50000,
items: [...]
}
}
ํ๋ก์ ํธ ๊ตฌ์กฐ: apps/stock/web/src/services/googleTagManager
์์ ์ค์์ง์ค์์ผ๋ก ๊ด๋ฆฌ๋๊ณ ์์ต๋๋ค.
4. ๊ณ ๊ธ ๋ฐ์ดํฐ ์์ง ์ค์
4.1 ์ด๋ฉ์ผ ์ ๋ณด ์์ง ์ค์
์ฌ์ฉ์ ์๋ณ์ด ํ์ํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ ์์ ์น์ ์์ ์ด๋ฉ์ผ ์ ๋ณด ์์ง์ ํ์ฑํํฉ๋๋ค.
ํจ๊ณผ: ์ฌ์ฉ์ ์ฌ์ ์ถ์ ์ ์ ํ๋๊ฐ ํฅ์๋๊ณ , ๊ฐ์ธํ๋ ๋ถ์์ด ๊ฐ๋ฅํด์ง๋๋ค.
4.2 ๋ด๋ถ ํธ๋ํฝ ์ ์ธ ์ค์
๊ฐ๋ฐํ์ ํ ์คํธ ํ๋์ด ์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ์ํฅ์ ์ฃผ์ง ์๋๋ก ๋ด๋ถ IP๋ฅผ ํธ๋ํฝ์์ ์ ์ธํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ:
- ๋ฐ์ดํฐ ์์ง ์ค์ ์์ ํธ๋ํฝ ์ ์ธ ๊ท์น ์ถ๊ฐ
- ํ ์คํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์์๋ก ํด์ ๊ฐ๋ฅ
์ฅ์ : ์ค์ ์ฌ์ฉ์ ํ๋ ๋ฐ์ดํฐ์ ์ ํ์ฑ์ ๋ณด์ฅํ๊ณ , ์๋ฏธ ์๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
5. GTM ํ๊ทธ ์์ฑ ๋ฐ ์ค์
5.1 ๋ณ์ ์์ฑํ๊ธฐ
GTM ์ํฌ์คํ์ด์ค์์ ์๋ก์ด ๋ณ์๋ฅผ ์์ฑํฉ๋๋ค. ํนํ GA ์ธก์ ID๋ฅผ ๋ณ์๋ก ์ค์ ํ์ฌ ํ๊ฒฝ๋ณ ๊ด๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
ํจ๊ณผ: ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋ค์ํ ์ํฉ์ ๋ง๋ ์ ์ฐํ ํ๊ทธ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค.
5.2 ํ๊ทธ ์์ฑํ๊ธฐ
- GTM์์ ์ ํ๊ทธ ์์ฑ
- ํ๊ทธ ์ ํ์ Google ํ๊ทธ ๋๋ GA4 ์ด๋ฒคํธ ์ ํ
- ๋ณ์๋ก ์ค์ ํ GA ์ธก์ ID ์ฌ์ฉ
- ์ด๋ฒคํธ ๋งค๊ฐ๋ณ์ ์ค์
์ ์ด ๋ฐฉ์์ด ํจ๊ณผ์ ์ธ๊ฐ? ๋ณ์ ์ฌ์ฉ์ผ๋ก ํ๊ฒฝ๋ณ ์ธก์ ID ๊ด๋ฆฌ๊ฐ ์๋ํ๋๊ณ , ๋ฐฐํฌ ์ ์ค์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
5.3 ํธ๋ฆฌ๊ฑฐ ์ค์
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค:
- ํ์ด์ง ์กฐํ
- ํด๋ฆญ ์ด๋ฒคํธ
- ํผ ์ ์ถ
- ์ฌ์ฉ์ ์ ์ ์ด๋ฒคํธ
์ค์ํ ์ด์ : ์ ํํ ํธ๋ฆฌ๊ฑฐ ์ค์ ์ ์๋ฏธ ์๋ ๋ฐ์ดํฐ ์์ง์ ํต์ฌ์ด๋ฉฐ, ๋ถํ์ํ ์ด๋ฒคํธ ๋ฐ์์ ๋ฐฉ์งํฉ๋๋ค.
6. ๊ตฌ๋งค ์ด๋ฒคํธ ์ธํ ์์
6.1 purchase ์ด๋ฒคํธ ๊ตฌ์ฑ
eCommerce ์ถ์ ์ ์ํ purchase ์ด๋ฒคํธ๋ฅผ ์ค์ ํ ๋, ๋ง์ผํฐ๊ฐ ์์ฑํ ์ด๋ฒคํธ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ด๋ฒคํธ๋ช ๊ณผ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ์ํฉ๋๋ค:
// GTM์์ ์ค์ ๋๋ ์ด๋ฒคํธ ๋งค๊ฐ๋ณ์
{
"event_name": "purchase",
"currency": "KRW",
"value": "{{Purchase Value}}",
"transaction_id": "{{Transaction ID}}",
"items": [
{
"item_id": "{{Item ID}}",
"item_name": "{{Item Name}}",
"category": "{{Item Category}}",
"quantity": "{{Quantity}}",
"price": "{{Price}}"
}
]
}
์ด ์ค์ ์ ์ฅ์ :
- ์ ์์๊ฑฐ๋ ์ฑ๊ณผ๋ฅผ ์ ํํ ์ธก์ ํ ์ ์์ต๋๋ค
- GA4์ ํฅ์๋ ์ ์์๊ฑฐ๋ ๋ณด๊ณ ์๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค
- ROI ๋ฐ ์ ํ ๋ถ์์ด ๊ฐ๋ฅํด์ง๋๋ค
6.2 ์ด๋ฒคํธ ๋งค๊ฐ๋ณ์ ๋งคํ
GTM ๋ณ์๋ฅผ ํตํด ์น์ฌ์ดํธ์ ๋ฐ์ดํฐ๋ฅผ GA ์ด๋ฒคํธ ๋งค๊ฐ๋ณ์์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ๋ถ์์ ์ ํ๋๋ฅผ ๋์ ๋๋ค.
7. ํ ์คํธ ๋ฐ ๋๋ฒ๊น
7.1 GTM ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ชจ๋
- GTM ์ปจํ ์ด๋ ๋์๋ณด๋ ์ค๋ฅธ์ชฝ ์๋จ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฒํผ ํด๋ฆญ
- Tag Assistant ํ์ฅํ๋ก๊ทธ๋จ ์ค์น ํ์
- ๋๋ฒ๊น ๋ชจ๋์์ ํ๊ทธ ๋์ ์ค์๊ฐ ํ์ธ
ํจ๊ณผ: ์ค์ ๋ฐฐํฌ ์ ์ ํ๊ทธ ๋์์ ๊ฒ์ฆํ์ฌ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
7.2 Tag Assistant ํ์ฉ
Chrome ํ์ฅํ๋ก๊ทธ๋จ์ธ Tag Assistant๋ฅผ ํตํด:
- ์ฐ๊ฒฐ ์ํ ํ์ธ
- ์ด๋ฒคํธ ๋ฐ์ ๋ชจ๋ํฐ๋ง
- ํ๊ทธ ์ค์๋ ์ง๋จ
7.3 GA DebugView๋ก ๊ฒ์ฆ
์ค์ โ ๋ฐ์ดํฐ ํ์ โ DebugView์์ ์ค์๊ฐ์ผ๋ก ์ด๋ฒคํธ ๋ฐ์์ ํ์ธํฉ๋๋ค.
๊ฒ์ฆ ๋ฐฉ๋ฒ:
- ๋ณด๊ณ ์ > ํ๋งค > ์ ์์๊ฑฐ๋
- ํ > ์ด๋ฒคํธ > ์ด๋ฒคํธ ์ ํ
- ์ค์๊ฐ ์ด๋ฒคํธ ํ์ธ
๊ฒ์ฆ์ด ์ค์ํ ์ด์ : ์๋ชป๋ ์ค์ ์ผ๋ก ์ธํ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๊ณ , ๋ง์ผํ ์์ฌ๊ฒฐ์ ์ ์ ํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
8. GTM ๋ณ๊ฒฝ์ฌํญ ๊ด๋ฆฌ ๋ฐ ๋ฐฐํฌ
8.1 ์์ ๊ณต๊ฐ ๋ณ๊ฒฝ์ฌํญ ์ ์ถ
GTM์์ ํ๊ทธ, ํธ๋ฆฌ๊ฑฐ, ๋ณ์, ํด๋ ๋ฑ์ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด ์ ์ถ ๋ฒํผ์ ๋๋ฌ ์ฆ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
์ ์ฆ์ ์ ์ถํด์ผ ํ๋๊ฐ? ์ ๋ฐ์ดํธ๋ฅผ ์ง์ฐํ๋ฉด ๋ค๋ฅธ ํ์์ ๋ณ๊ฒฝ์ฌํญ๊ณผ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ๋ณ๊ฒฝ์ฌํญ์ ์ผ์ผ์ด ์ฒดํฌํ๊ณ ์ ๊ฑฐํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๊น๋๋ค.
8.2 ํ๊ฒฝ๋ณ ๋ฐฐํฌ ์ ๋ต (Dev โ Prod)
- Dev GTM ์ปจํ ์ด๋์์ ํ ์คํธ ์๋ฃ
- ์ปจํ ์ด๋ ๋ด๋ณด๋ด๊ธฐ๋ก dev ์ปจํ ์ด๋ ์ค์ ์ ์ฅ
- Prod GTM์์ ๊ฐ์ ธ์ค๊ธฐ๋ก ์ค์ ์ ์ฉ
- ์ค์: ์ธก์ ID๊ฐ ๋ฎ์ด์์์ง์ง ์๋๋ก ์ฃผ์
์ด ๋ฐฉ์์ ์ฅ์ :
- ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ถฉ๋ถํ ํ ์คํธ ํ ์์ ํ ํ๋ก๋์ ๋ฐฐํฌ
- ํ๊ฒฝ๋ณ ์ธก์ ID ๋ณดํธ๋ก ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ํ๋ณด
- ๋กค๋ฐฑ์ด ์ฉ์ดํ ๋ฐฐํฌ ์ฒด๊ณ
9. ๊ฐ์ ํจ๊ณผ
9.1 ๊ฐ๋ฐ ํจ์จ์ฑ ํฅ์
- ์ฝ๋ ์์กด๋ ๊ฐ์: GA ์คํฌ๋ฆฝํธ ์ง์ ์ฝ์ ๋ถํ์, GTM์ผ๋ก ์ผ์ํ
- Next.js ์ต์ ํ: Script ์ปดํฌ๋ํธ๋ฅผ ํตํ ์ฑ๋ฅ ์ต์ ํ
- ํ๊ฒฝ ๊ด๋ฆฌ: ํ๊ฒฝ๋ณ์๋ฅผ ํตํ ์์ ํ ์ค์ ๊ด๋ฆฌ
9.2 ์ด์ ํจ์จ์ฑ ํฅ์
- ๋ง์ผํ ํ ์์จ์ฑ: ๊ฐ๋ฐ์ ๋์ ์์ด ์ง์ ํ๊ทธ ๊ด๋ฆฌ
- ์ค์๊ฐ ๋ฐฐํฌ: ์ฝ๋ ์์ ์์ด ์ฆ์ ํ๊ทธ ๋ฐฐํฌ ๊ฐ๋ฅ
- ์์ ํ ๋ฐฐํฌ: Dev โ Prod ํ๊ฒฝ๋ณ ๊ฒ์ฆ ์ฒด๊ณ
9.3 ๋ฐ์ดํฐ ํ์ง ๊ฐ์
- ์ ํํ ์ถ์ : ๋ณ์ ๊ธฐ๋ฐ ์ธก์ ID ๊ด๋ฆฌ๋ก ํ๊ฒฝ๋ณ ๋ฐ์ดํฐ ๋ถ๋ฆฌ
- ์ค์๊ฐ ๋ชจ๋ํฐ๋ง: ๋ค์ค ๋๋ฒ๊น ๋๊ตฌ๋ก ์ฆ์ ๊ฒ์ฆ
- ๊นจ๋ํ ๋ฐ์ดํฐ: ๋ด๋ถ ํธ๋ํฝ ์ ์ธ๋ก ์์ํ ์ฌ์ฉ์ ๋ฐ์ดํฐ ํ๋ณด
์ฐธ๊ณ ์๋ฃ
๊ฒฐ๋ก
์ด๋ฒ GA์ GTM ์ฐ๋ ๊ฐ์ ์ ํตํด ๋จ์ํ ํ๊ทธ ๊ด๋ฆฌ ๊ฐ์ ์ ๋์ด์ ๊ฐ๋ฐํ๊ณผ ๋ง์ผํ ํ ๊ฐ์ ํ์ ํจ์จ์ฑ์ด ํฌ๊ฒ ํฅ์๋์์ต๋๋ค. ํนํ Next.js ํ๊ฒฝ์ ์ต์ ํ๋ ๊ตฌํ๊ณผ ํ๊ฒฝ๋ณ ์์ ํ ๋ฐฐํฌ ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํจ์ผ๋ก์จ, ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ ๋ถ์ ์ธํ๋ผ๋ฅผ ํ๋ณดํ์ต๋๋ค.
์์ฝ
- GA์ GTM ์ฐ๋์ ํตํด ์ค์์ง์ค์ ํ๊ทธ ๊ด๋ฆฌ ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํ๊ณ , Next.js ํ๊ฒฝ์์ ์ฑ๋ฅ ์ต์ ํ๋ ๊ตฌํ์ ์ ์ฉํ์ต๋๋ค.
- ๋ณ์ ๊ธฐ๋ฐ ์ธก์ ID ๊ด๋ฆฌ๋ก ํ๊ฒฝ๋ณ ๋ฐ์ดํฐ ๋ถ๋ฆฌ์ ์์ ํ ๋ฐฐํฌ ์ฒด๊ณ๋ฅผ ํ๋ฆฝํ์ต๋๋ค.
- GTM ๋ฏธ๋ฆฌ๋ณด๊ธฐ, Tag Assistant, GA DebugView๋ฅผ ํ์ฉํ ์ผ์ค ๊ฒ์ฆ ์์คํ ์ผ๋ก ํ๊ทธ ์ค์๋์ ์ฌ์ ์ ๋ฐฉ์งํฉ๋๋ค.
- Dev โ Prod ํ๊ฒฝ๋ณ ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ก ์์ ํ๊ณ ์ ๋ขฐํ ์ ์๋ ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ณดํ์ต๋๋ค.
- ๊ฐ๋ฐํ์ ์ฝ๋ ์์กด๋๋ฅผ ์ค์ด๊ณ ๋ง์ผํ ํ์ ์์จ์ฑ์ ๋์ฌ ์ ์ฒด์ ์ธ ์ด์ ํจ์จ์ฑ๊ณผ ๋ฐ์ดํฐ ํ์ง์ด ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค.