비디어스 리뉴얼 이후 GA4 이벤트에 활성사용자 데이터가 사라졌다. 리뉴얼 배포 이전에 테스트 서버에서 이벤트와 파라미터가 전달되는 걸 확인하고 배포했었다. 당연히 문제없다고 판단하고 배포했지만, 혹시 몰라서 A가 지속적으로 모니터링을 했다.
그러다 비보가 들렸다. 사용자 정보가 없다고. 데이터를 확인해보니, 정직하게 내가 넣은 데이터만 들어있었다. 무슨 말인가 하면, 기본적으로 UserAgent, 세션ID 등 정보가 포함되어야 하는데 이러한 정보가 전부 누락되어 있었다.
현재 우리 서비스들은 전부 GTM을 사용하고 있다. GA와 픽셀 등을 한 번에 포함시키고 관리할 수 있어 이렇게 사용하고 있는데, 이번에 리뉴얼하면서 이벤트 트리거 방식을 변경했다.
기존은 다음 단계로 진행했다.
- dataLayer에 이벤트 정보를 푸시한다. 이때 사용하는 이벤트 명은 커스텀으로 지정한다.
- GTM에서 해당 커스텀 이벤트 발생 시 GA4 이벤트를 발생시키도록 구성한다.
- GTM에서 dataLayer의 파라미터 값을 바로 GA4 이벤트에 연결하여 이벤트가 정상적으로 발생하도록 한다.
- 대시보드에서 커스텀 이벤트를 제외한 나머지 이벤트로 구성한다.
물론 모든 이벤트를 커스텀으로 사용한 것은 아니고, 어렵지 않게 트리거를 구성할 수 있는 부분들은 맞춤 이벤트가 아닌, GTM의 트리거 방식을 사용했었다.
이런 방식은 개발자의 도움 없이 적용할 수 있는 장점이 있지만, 코드가 업데이트될 때 영향받을 수 있다. 그래서 이번 기회에 전체를 커스텀 이벤트로 변경했다.
- dataLayer에 이벤트 정보를 푸시한다. 이때 사용하는 이벤트명은 대시보드에서 사용할 이벤트이다.
- 해당 이벤트로 대시보드를 구성한다.
매우 간결해져서 좋아했는데, dataLayer로 직접 발생시킨 이벤트는 아무런 데이터가 포함되어있지 않다. 오히려 dataLayer에 푸시했을 때, GTM이 자동으로 추가하는 gtag에 의해 발생하는 이벤트에 앞서 말한 다양한 정보가 포함된다.
즉, GTM을 사용한다면 GA4로 나가는 이벤트 정의는 GTM에서 이뤄져야 한다는 것이다.
물론 gtag를 직접 사용하는 방법도 있지만, 왜인지 계층을 무시하는 것 같아 그렇게 하진 않았다.
문제와 해결책만 정리하면 아쉬우니, 문제 해결 과정에서 현상을 몇 가지 정리해보려고 한다. (아래 현상이 문제라면 이 방법으로 해결이 될 수도 있기 때문이다)
- page_view 이벤트는 문제없으나 내가 발생시키는 이벤트의 ga_session_id가 (not set) 이다.
- GTM에 발생한 이벤트 정보는 표시되나 Tags Fired가 표시되지 않는다.
- ga_session_id가 없다보니 session_start 이벤트가 호출되지 않는 것으로 오해할 수 있다.
- dataLayer에 추가 시 event키에 이벤트 명을 넣고, event_parameters 에 이벤트 명을 또 넣으면 순환 참조가 일어나서 스택 오버플로우 문제가 발생한다.
아마 초기 설정 시 매뉴얼이나 블로그를 보고 도입한다면 이런 문제가 발생하지 않겠지만, 역시나 또 얕게 이해하고 적용하니, 문제가 발생한다. 안타깝게도 내가 얕게 알고 있다는 것을 확인할 줄 몰라서, 이렇게 문제를 해결해 가며 쌓아가는 것이 최선이다.