UTM 값 14종을 9종으로: 형제 앱 스무 개의 유입 측정 어휘 정리
듀오랩스 형제 앱 스무 개는 거의 모두 본진으로 가는 "제작 문의" 링크를 달고 있습니다. 어느 앱에서 온 문의가 많은지 보려고 링크의 UTM을 모아 봤습니다. utm_campaign은 대부분 cross_app_cta로 같았습니다. 문제는 utm_medium이었습니다. 값이 14가지였습니다.
header, app_cta, page_end, article_end, doc_end, faq_cta, hero, footer, sidebar… 같은 "글 끝의 상담 카드"가 블로그에서는 article_end, 문서에서는 doc_end, 다른 앱에서는 page_end였습니다. 같은 자리를 세 이름으로 부르니 합쳐서 볼 수가 없었습니다.
UTM은 붙이기만 하면 측정된다는 오해
UTM을 달면 측정이 된다고 생각하기 쉽습니다. 링크에 ?utm_source=...를 붙이는 것은 쉽고, 분석 도구에 값이 쌓이는 것도 바로 보입니다.
그런데 UTM 값은 쌓인 뒤에 묶어서 봐야 의미가 생깁니다. 묶으려면 값이 약속된 어휘여야 합니다. 앱을 만든 시점마다, 만든 사람의 기분마다 이름이 달라지면 데이터는 쌓이는데 질문에는 답하지 못합니다. "글 끝 카드와 머리 버튼 중 어느 쪽이 문의를 더 만드나"라는 가장 기본적인 질문에 답할 수 없었습니다.
자리 이름을 아홉 개로 닫기
utm_medium은 "링크가 놓인 자리의 종류"만 말하게 하고, 값을 아홉 개로 닫았습니다.
| 값 | 자리 |
|---|---|
brand |
로고 |
header |
머리 영역의 버튼 |
hero |
첫 화면 큰 단추 |
page_end |
본문이 끝난 뒤의 카드 |
footer |
바닥 링크 |
sidebar |
업무 화면형 앱의 사이드바 |
watermark |
남의 사이트에 박히는 공유 표식 |
os |
웹 데스크톱 안의 장치 |
inline |
본문 중간 |
옛 값은 버리지 않고 별칭으로 접었습니다. app_cta는 header로, article_end와 doc_end와 faq_cta는 page_end로 읽습니다. 지난 데이터를 새 기준으로 이어 보기 위해서입니다. 이름을 바꾸는 날 과거가 끊기면 개선 전후를 비교할 수 없습니다.
한 가지는 별칭으로 해결되지 않았습니다. FAQ 페이지는 머리 버튼과 끝 섹션이 둘 다 faq_cta를 쓰고 있어서, 쌓인 데이터에서 둘을 가를 방법이 없었습니다. 이것은 새 값으로 나누고 옛 데이터는 한쪽으로 접었습니다. 어휘가 없던 시절의 데이터는 어휘를 만든 뒤에도 일부는 되살릴 수 없습니다.
CTA마다 이름 붙이기
자리 종류만으로는 부족했습니다. 같은 page_end에도 상담 카드가 있고 FAQ 문의 띠가 있습니다. 그래서 CTA마다 <모양>.<의도> 형식의 이름을 붙이고 utm_content에 싣기로 했습니다. pill.consult는 머리의 제작 문의 알약, card.consult는 글 끝 상담 카드, brand.home은 로고입니다.
이름을 붙이자 목록이 생겼습니다. 형제 앱 열여덟 곳의 운영 화면을 돌며 본진으로 가는 링크를 모아 보니 67개, 모양은 열한 가지였습니다. 링크 주소는 사람이 손으로 쓰지 않고 이름을 받아 주소를 만드는 함수 하나로 만들게 했습니다. 손으로 쓴 UTM은 반드시 오타가 납니다.
같은 도메인 링크에는 UTM을 달지 않는다
반대로 UTM을 일부러 빼야 하는 곳도 있었습니다. 블로그와 문서는 duolabs.co.kr/blog, duolabs.co.kr/docs로 본진과 같은 도메인에 있습니다. 여기서 본진 홈으로 가는 로고에 UTM을 달면, 검색으로 블로그에 들어온 방문자의 유입 경로가 "블로그 로고"로 덮어써집니다. 그 사람을 데려온 것은 검색인데 기록에는 내부 링크가 남습니다.
UTM은 외부에서 들어오는 문에 다는 것입니다. 같은 사이트 안의 이동에 달면 측정을 돕는 것이 아니라 망가뜨립니다. 서브도메인에 있는 형제 앱에는 달고, 같은 도메인의 하위 경로에는 달지 않는 것으로 기준을 정했습니다.
첫 유입만 남기면 사라지는 것
받는 쪽에도 구멍이 있었습니다. 본진의 분석은 세션의 첫 유입만 기록합니다. 그래서 방문자가 본진을 보다가 같은 탭에서 데모 앱으로 넘어가 그 안의 제작 문의를 누르고 돌아오면, 그 이동은 기록되지 않습니다. 세션의 첫 유입이 이미 "본진"으로 적혀 있기 때문입니다.
데모를 만져 보고 문의를 결심한 사람이야말로 제가 가장 알고 싶은 경로인데, 그 경로가 정확히 지워지고 있었습니다. 형제 앱의 CTA로 들어온 세션이 본진 자기 자신에서 시작된 세션이라면 첫 유입을 덮어쓰도록 바꾸기로 했습니다. 이것은 기록 방식을 바꾸는 일이라 아직 진행 중입니다.
측정은 링크를 다는 쪽과 받는 쪽이 같은 어휘를 쓸 때만 됩니다. 저는 그 어휘를 스무 개 앱이 생긴 뒤에야 만들었습니다. 앱이 두세 개일 때 만들었다면 별칭도, 되살릴 수 없는 데이터도 없었을 것입니다.
함께 읽기
- 구글·네이버·Bing·다음 웹마스터 도구 비교: 서브도메인이 많을 때 갈리는 것서브도메인 열세 개를 검색엔진에 등록하는 데 구글은 DNS 레코드 한 줄이었고, 네이버는 같은 일을 열세 번 반복해야 했습니다. 두 도구의 기능 목록은 비슷합니다. 사이트맵을 받고, 소유를 확인하고, 수집 현황을 보여 줍니다. 갈리는 것은 무엇을 사이트 하나로 세는가였습니다.
- 네이버 서치어드바이저 서브도메인 등록: 사이트맵·RSS·수집 요청이 하는 일서브도메인 사이트맵을 본진 사이트에 넣었더니 네이버가 받지 않았습니다. https://duolabs.co.kr 로 등록해 둔 사이트의 사이트맵 제출 칸에 https://cdn.duolabs.co.kr/sitemap.xml 을 넣고 확인을 누르자, 화면 아래에 빨간 띠가 떴습니다.
- 형제 서비스 스무 개의 llms.txt: 본진을 허브로, 앱은 가리키기만듀오랩스 본진의 llms.txt를 다시 읽어 봤습니다. AI가 사이트를 이해하도록 요약해 두는 파일입니다. 서비스 상세로는 웹 개발 페이지 하나가 올라 있었습니다. 그런데 듀오랩스 이름으로 돌아가는 형제 앱은 스무 개입니다. 업무 시스템, AI 자동화, 3D, ERP 같은 데모까지, AI가 "듀오랩스는 무엇을 만드나"를…
- JSON-LD @id 하나로 회사가 둘이 되는 문제: #org와 #organization형제 앱 스무 개의 구조화 데이터(JSON-LD)를 모아 보다가 회사가 두 개인 것을 발견했습니다. 여섯 곳은 발행자를 이렇게 가리켰습니다.
- robots.txt의 AI 봇 구분: 학습을 막으려다 ChatGPT 검색에서 빠진 두 앱듀오랩스 이름으로 운영하는 형제 앱 스무 개의 robots.txt를 하나씩 열어 본 적이 있습니다. 그중 두 곳에 이런 줄이 있었습니다.