api_secret은 대소문자를 구분합니다. Google 애널리틱스 UI의 api_secret이
코드에서 사용 중인 것과 정확하게 동일한지 다시 한번
확인하세요.
advertising_id는 사용하지 마세요.
advertising_id는 유효한 기기 식별자로 지원되지 않습니다. Firebase를
사용 중인 경우 app_instance_id를 사용하고, gtag.js를 사용 중인 경우에는 client_id를
사용하세요.
잘못된 ID
측정 프로토콜은 Firebase용 Google 애널리틱스 SDK 및 gtag.js의 ID를 지원하므로 올바른 ID를 사용해야 합니다. Firebase용 Google 애널리틱스 SDK와 gtag.js 중 무엇을 사용하는지에 따라 사용해야 하는 ID가 달라집니다. 아래에 어떤 ID를 사용해야 하는지 나와 있습니다.
Firebase용 Google 애널리틱스 SDK
Firebase용 Google 애널리틱스 SDK를 사용하는 경우 사용해야 하는 ID는
다음과 같습니다.
firebase_app_id - 요청의 쿼리 매개변수에 이 ID를
포함합니다. 이 ID로 개발자의 Firebase 앱을 고유하게 식별할 수 있습니다. 개발자의 모든 사용자는
동일한 firebase_app_id를 갖습니다. Firebase Console에서 다음과 같이 이동하여
찾을 수 있습니다. 프로젝트 설정 > 일반 > 내 앱 > 앱 ID
app_instance_id - 요청의 POST 본문에 이 ID를 포함합니다. 이
ID로 특정 Firebase 앱 설치를 고유하게 식별할 수 있습니다. 이 값은
앱을 설치할 때마다 다르며, 각 Firebase 플랫폼에 대해
이 값을 요청하는 메서드는 다음과 같습니다.
firebase_instance_id - 이 ID를 요청에 포함하면 안 됩니다.
이 ID는 앱의 특정 인스턴스를 식별하는 데 사용되지만,
Firebase 전용입니다. FCM 메시지와 같은 작업에 사용됩니다.
gtag.js
gtag.js를 사용하는 경우 사용해야 하는 ID는 다음과 같습니다.
measurement_id - 요청의 쿼리 매개변수에 이 ID를
포함합니다. 이 ID로 데이터 스트림을 고유하게 식별할 수 있습니다. 웹사이트의 모든 사용자는
동일한 measurement_id를 갖습니다. Google 애널리틱스 UI에서
다음과 같이 이동하여 찾을 수 있습니다. 관리 > 데이터 스트림 > 스트림 선택 > 측정 ID
client_id - 요청의 POST 본문에 이 ID를 포함합니다. 이 ID로
웹 클라이언트의 특정 사용자 인스턴스를 고유하게 식별할 수 있습니다. 이 값은
앱의 사용자마다 다릅니다. 이 값을 검색하는 방법은 예시를 참고하세요.
서버 측 태그 지정 이벤트 누락
측정 프로토콜 클라이언트가 있는 서버 측 태그 관리자 설치를 사용하면 측정 프로토콜 형식의 이벤트를 컨테이너로 전송할 수 있습니다. 그러면 컨테이너는 다른 모든 SGTM 이벤트와 동일한 메커니즘을 사용하여 이러한 이벤트를 Google 애널리틱스로 전송합니다.
측정 프로토콜의 모든 기능을 사용하려면 컨테이너 대신 측정 프로토콜에 이벤트를 직접 전송하세요.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-26(UTC)"],[[["\u003cp\u003eThis guide helps troubleshoot common Google Analytics 4 Measurement Protocol implementation errors, focusing on missing events and invalid user/device IDs.\u003c/p\u003e\n"],["\u003cp\u003eIf events aren't appearing, ensure your \u003ccode\u003eapi_secret\u003c/code\u003e is correct, valid, accurately copied, and you're using the appropriate device identifier (\u003ccode\u003eapp_instance_id\u003c/code\u003e or \u003ccode\u003eclient_id\u003c/code\u003e, not \u003ccode\u003eadvertising_id\u003c/code\u003e).\u003c/p\u003e\n"],["\u003cp\u003eWhen using the Measurement Protocol, select the correct IDs based on whether you're implementing via Firebase or gtag.js, as outlined in the guide.\u003c/p\u003e\n"],["\u003cp\u003eFor Firebase, utilize \u003ccode\u003efirebase_app_id\u003c/code\u003e and \u003ccode\u003eapp_instance_id\u003c/code\u003e, avoiding \u003ccode\u003efirebase_instance_id\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFor gtag.js, use \u003ccode\u003emeasurement_id\u003c/code\u003e and \u003ccode\u003eclient_id\u003c/code\u003e for proper event tracking.\u003c/p\u003e\n"]]],["To resolve event visibility issues in Google Analytics, verify the correct `api_secret` is used, valid, and copied accurately, and avoid using `advertising_id`. For Firebase, use `firebase_app_id` in query parameters and `app_instance_id` in the POST body; retrieve `app_instance_id` using the appropriate platform's method. For gtag.js, utilize `measurement_id` in query parameters and `client_id` in the POST body. Both `client_id` and `app_instance_id` should differ for each user.\n"],null,[]]