In short. GA4 event_date uses the property time zone, while event_timestamp records the receipt time in UTC microseconds.
Definition: No. In the GA4 BigQuery export,
event_dateis a calendar date in the registered time zone of the app or property, whileevent_timestampis the event receipt time in UTC, expressed in microseconds. Use the timestamp and an explicit log offset when comparing GA4 data with access logs.
Key facts
- Google's BigQuery Export schema defines
event_dateas aSTRINGinYYYYMMDDformat and assigns it to the registered time zone of the app. - The same schema defines
event_timestampas anINTEGERcontaining the time in microseconds, UTC, when Google Analytics received the event. - Several events can have the same
event_timestampwhen they are sent in one request. - Google creates an
events_YYYYMMDDtable each day when the Daily export option is enabled. - Google's GA4 setup documentation says that the property reporting time zone determines the day on which a visit is recorded.
Which value should anchor a comparison with an access log?
Use event_timestamp as the time value for cross-system ordering. It is an absolute UTC instant once the microsecond value is converted to a UTC date-time. Use event_date as the GA4 calendar label and as a clue to the daily export table that contains the event. Around a local midnight, the same instant can belong to one property date and a different UTC date.
The field records when Google Analytics received the event. It is therefore a collection timestamp, while an access log records a request at the web server. The two observations can describe the same visit without representing the same processing moment. Equal timestamps also do not identify one event uniquely because the schema allows several events to share a timestamp when they arrive in one request.
How should the log time be read?
Apache's mod_log_config documentation defines %t as the time the request was received and includes the numeric offset from GMT. A standard common log format contains that field:
%h %l %u %t "%r" %>s %b
An entry such as [18/Sep/2011:19:18:28 -0400] carries both a wall-clock time and its offset. Parse that offset to obtain a UTC instant, then compare it with event_timestamp after converting the GA4 value from microseconds. Keep the raw log value and the raw GA4 fields alongside the normalized values so the comparison can be checked later.
The comparison needs a common event identity as well as a time. A timestamp match alone is weak because the GA4 schema permits repeated timestamps, and a server request can produce more than one analytics event. Use fields available in the export and the log, such as the request path and the event name, when the collection design makes those fields comparable.
What changes when the property time zone changes?
Google's setup instructions require a reporting time zone when a property is created. Google also gives a boundary example: a visit that is Tuesday in the visitor's time zone can be recorded as Monday when Monday is the selected property day. A time zone that observes daylight saving time is adjusted automatically.
Changing the property time zone affects data going forward. Google says reports can refer to the old time zone for a short period while Analytics processes the setting, and recommends changing a property time zone no more than once per day. Record the property setting used for each reporting period before grouping event_date values.
How do late events affect the date comparison?
Google says Analytics can update daily tables with events for their event dates for up to three days after those dates. It also says late events retain the correct time stamp, while events arriving after that three-day window are not recorded. A recent events_YYYYMMDD table can therefore change after its calendar day, so a log reconciliation should state when the GA4 export was queried.
Related terms
- Why can a GA4 daily BigQuery table change after export?
- How do GA4 daily and streaming exports differ?
- Server log analysis
FAQ
Which GA4 field is in UTC?
event_timestamp is in UTC and uses microseconds. event_date uses the registered time zone of the app or property.
Why can an event date differ from the UTC date?
The property reporting time zone determines the calendar day used for event_date, while event_timestamp stays in UTC. Events near midnight can therefore carry different calendar dates after conversion.
Should an access-log report group requests by event_date?
Use the explicit offset in the log to normalize request times to UTC, and use event_timestamp for time ordering. Use event_date for the GA4 property-day view and daily export table selection.
Sources
- Google Analytics Help, "BigQuery Export schema", undated
- Google Analytics Help, "[GA4] Set up Analytics for a website and/or app", undated
- Apache HTTP Server, "mod_log_config", undated
Check how a page reads to answer engines. Open the GEO score analyzer