Unfortunately :(
This is an unresolved issue that seems to receive very little attention or discussion. It's about how the field event_timestamp might have nothing to do with the actual moment of the event.
Wait, what?
Yes, unfortunately, that's the case. Hits from GA4 are sent not one by one but in so-called batches. The field event_timestamp records the batch sending time, not the event time. And this is crucial, primarily for accurate attribution calculations: since in raw data, we first look for the earliest hit - and then extract the source parameters from there.
But how serious is this issue? Calculating it is straightforward:
1. Create a Custom JavaScript variable in GTM that returns the current timestamp and send it to GA4 as an event parameter. Let's call it, for instance, hit_timestamp.
2. No need to create such a custom dimension in GA4!
3. Wait for a few days for the data to accumulate, and then go to BigQuery and compare the event_timestamp and hit_timestamp. Here's an approximate query.
In my comparison attempt, I noticed that only 95% of hits had a timestamp difference of 1 minute or less. Unfortunately, 5% is a significant number. Too many, especially considering that some have differences of more than 10 minutes.
The problem is compounded by the fact that batches are an absolute black box, with no documentation about them. Absolutely none. The only thing I managed to dig up was some insights from Philip Kennedy, which he wrote about in his article:
1. Conversion events are always transmitted immediately, although they may be part of a batch.
2. Containers loaded in debug mode will never batch events.
3. In browser environments that do not support the sendBeacon API, all events are sent as they happen without batching.
So, use the manual transmission of hit_timestamp - hopefully, this way, updating with the real event moment in BigQuery will indeed become a reality. If you have your means of accurately timing events, be sure to mention that in the comments.
You might have liked this post - if so, please leave a like and share it with friends - it means a lot to me.