함수는 있었고, 호출하는 곳이 하나 빠져 있었습니다
제 쇼츠 파이프라인에는 생성기가 두 개 있습니다. 하나는 성향 주제를 다루는 쇼츠를 만들고, 다른 하나는 두 대상을 짝지어 비교하는 매치형 쇼츠를 만듭니다. 두 생성기 모두 영상 설명란에 앱 랜딩 링크를 넣습니다.
성향 쇼츠 쪽 링크는 공용 헬퍼 _tagged_url을 거쳐 나갔습니다. 이 함수가 링크에 UTM 파라미터를 붙여 주기 때문에 분석 도구에서 "이 방문은 쇼츠에서 왔다"는 구분이 됩니다. 매치형 생성기는 이 함수를 부르지 않았고, 맨 링크를 그대로 붙이고 있었습니다.
그래서 매치형 쇼츠로 들어온 방문은 출처가 기록되지 않았습니다. 유입이 0이었다는 뜻이 아니라, 들어왔더라도 어느 생성기 덕분인지 구분할 수 없었다는 뜻입니다.
당신의 파이프라인에서 같은 일을 하는 코드 경로가 둘 이상일 때, 측정 코드가 그중 몇 곳에 붙어 있는지 세어 본 적이 있으신가요?
왜 안 보였나
태깅을 "이미 해 둔 일"로 기억하고 있었던 게 문제였습니다. 헬퍼 함수가 있었고 성향 쇼츠 링크에는 실제로 태그가 붙어 있었습니다. 그러니 머릿속에서는 "쇼츠 링크는 태깅된다"로 정리돼 있었습니다. 정확한 표현은 "쇼츠 생성기 하나의 링크는 태깅된다"였습니다.
이런 누락은 에러를 내지 않습니다. 태그 없는 링크도 정상적으로 열리고, 영상도 정상적으로 올라가고, 분석 화면에도 방문은 찍힙니다. 다만 출처가 다른 유입과 뭉개질 뿐입니다. 실패라고 부를 만한 신호가 아예 없었습니다.
고친 것
당신이라면 어떻게 하시겠습니까? 두 생성기의 링크 생성 코드를 하나로 합치는 리팩터링을 하시겠습니까, 아니면 빠진 쪽이 기존 헬퍼를 부르게만 하시겠습니까?
저는 후자를 골랐습니다. 매치형 생성기도 랜딩 링크를 _tagged_url로 감싸도록 바꿨고, 파라미터는 campaign=app, content=match_<lang>으로 넣었습니다. 성향 쇼츠와 같은 규칙을 쓰되 content 값으로 매치형과 언어를 구분할 수 있게 한 것입니다. 변경은 파일 하나, 2줄 추가에 1줄 삭제였습니다.
이걸로 두 쇼츠 생성기 모두 UTM이 붙게 됐습니다. 수정 자체는 작았습니다. 오래 걸린 건 빠져 있다는 걸 알아차리기까지였습니다.
자가진단 체크리스트
- 측정용 헬퍼 함수가 있다면, 그 함수를 호출해야 하는 경로를 전부 나열하고 실제 호출 위치와 대조해 봤습니까?
- 같은 종류의 산출물(영상, 게시물, 이메일)을 만드는 생성기가 여러 개일 때, 각각이 내보낸 링크 샘플을 하나씩 직접 열어 파라미터를 확인했습니까?
- 태그 값만 보고 어느 생성기의 어느 언어 버전에서 온 유입인지 구분할 수 있습니까?
솔직한 부분
이 수정으로 매치형 쇼츠가 실제로 유입을 얼마나 만드는지는 아직 모릅니다. 커밋은 "앞으로 출처가 보인다"까지만 보장하고, 그 숫자가 의미 있는 크기일지는 데이터가 쌓여야 알 수 있습니다. 태그가 없던 기간에 이 생성기가 보낸 유입은 지금도 구분할 방법이 없습니다. 그리고 생성기가 두 개라서 이번에는 눈으로 대조할 수 있었지만, 세 번째 생성기가 생기면 같은 누락을 막아 줄 장치는 아직 없습니다.