Why do offline events seem like a clean solution?

GA4 supports offline event collection through the Measurement Protocol. Events get queued when there's no connection and sent when connectivity returns. In theory, you get complete data even from offline sessions.

What breaks in BigQuery?

The problem is timestamp. Offline events carry the timestamp of when they occurred, not when they were sent. An event that happened on Monday gets uploaded on Thursday - and lands in Monday's data. In BigQuery, this creates events from the "past" that appear in already-processed partitions.

The effects:

  • Session timelines get disrupted — events appear before the session start
  • Funnel steps fire out of order
  • Conversion attribution assigns credit to wrong sessions

How do you catch this?

Compare event_timestamp with custom added timestamp when available. Look for events where the gap between creation and upload exceeds a few hours - those are your offline candidates. Process them separately or filter them for time-sensitive funnel logic.

Why is this an attribution problem, not just a cosmetic one?

If a user completes an in-store action offline and the event appears retroactively in BigQuery, it might get credited to a campaign that ran days earlier. I've seen offline events completely distort path-to-purchase data. Knowing they exist — and handling them explicitly - is the difference between usable and misleading attribution.

How GA4 Records Offline Events

Want to get all my top Linkedin content? I regularly upload it to one Notion doc.

Go here to download it for FREE