Update time: April 7, 2026
In this article, I’ll walk through some of the most common issues encountered when using the GA4 Measurement Protocol, along with their causes.
No Events Showing in GA4
You may notice that requests are sent successfully (returning a 204 status code), but no events appear in GA4’s Realtime report.
Common reasons include:
- Invalid or missing api_secret: such as missing api_secret, or api_secret error, invalid.
- Events sent after 72 hours: GA4 only processes events within a 72-hour window. Any data sent beyond this timeframe will be ignored.
Missing engagement_time_msec
Some people may find that events appear in Realtime, but engagement-related metrics are always 0.
This is because the engagement_time_msec parameter is missing.
Measurement Protocol does not automatically calculate engagement time, so if it is not sent, GA4 will treat the session as having no engagement.
Duplicate Events
Some people may encounter duplicated events, especially in setups that use both:
- Client-side tracking (Web GTM)
- Server-side tracking or Measurement Protocol
This can cause the same event (e.g., purchase) to be sent twice.
Incorrect Timestamp
Some events may appear at the wrong time, or not appear at all.
This is usually caused by an incorrect timestamp_micros value.
There are the following common issues:
- Using seconds instead of microseconds
- Using milliseconds instead of microseconds
- Incorrect timestamp format
GA4 requires timestamps in microseconds, otherwise the event may be ignored or misaligned.
Missing Geo or Device Information
Some people may notice that dimensions such as country, city, or device category are (not set).
This is because Measurement Protocol does not automatically collect:
- IP-based location
- Device or browser information
If these values are not provided, GA4 cannot populate the related dimensions.
Traffic Assigned to “Unassigned” Channels
In some cases, events sent via Measurement Protocol are grouped under “Unassigned” in GA4’s traffic acquisition reports, as follows:
This usually happens because: Missing ga_session_id parameter
If ga_session_id is not included in the Measurement Protocol request, GA4 cannot properly attribute the session, and the traffic will default to Unassigned.
The ga_session_id is typically stored in the _ga_<container-id> cookie. Make sure to extract and pass this value correctly when sending events. learn more: Explanation of Cookie Values used by Google Analytics 4
Missing or Unset Dimensions
If certain dimensions appear as (not set) in GA4, it usually means:
- The corresponding parameters were not included in the Measurement Protocol request.
To fix this, ensure that all required event parameters and custom dimensions are explicitly sent with each request.
