Update on the Gmail App Prefetching Images
Bird
25 Jan 2022
1 min read

Key Takeaways
Gmail now prefetches images when a user has an active Gmail session on web or mobile, causing false opens before the email is displayed.
Prefetching occurs only when the Gmail app is open and logged in, and happens immediately before the UI renders the email.
These false opens originate from Google IP ranges and always use a specific user-agent string that differs from Google Image Cache.
Prefetching is separate from the Google Image Cache open that happens when a user actually opens the email.
Analysis of 9.8B Gmail opens found false opens account for 1–6% of Gmail opens, potentially inflating reported open rates by up to ~2 percentage points.
Impact is minor compared to Apple Mail Privacy Protection, but it reduces the reliability of open tracking further.
Engagement measurement should shift toward clicks, subject line testing, and downstream behaviors.
SparkPost automatically flags these events with the
is_prefetchedattribute in Events API and Webhooks.Non-SparkPost senders can still detect false opens by filtering for the known Gmail Prefetch Bot user-agent.
Prefetching seems tied to a security scan before rendering emails in Gmail, based on timing and request behavior.
Prefetch happens only once per unread thread; future messages in the same thread won’t trigger additional prefetches unless unread.
Prefetch can briefly continue after closing the Gmail mobile app due to background activity.
Q&A Highlights
What new behavior did Gmail introduce?
Gmail now prefetches images before displaying emails when a user is actively logged into Gmail on web or mobile.
Does Gmail prefetching count as a real email open?
No. These are false opens that occur before the user sees the email.
When does Gmail trigger image prefetching?
Only when the recipient has an active Gmail session open at the moment the email is delivered.
How is Gmail prefetching different from Google Image Cache?
Prefetching happens before the email displays, while Google Image Cache loads images when a user actually opens the email.
What user-agent identifies Gmail prefetch opens?
A specific UA string starting with:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...How significant is the inflation on open rates?
False opens make up about 1–6% of Gmail opens, inflating open rates by up to roughly 2%.
How can senders detect prefetch opens?
Filter open events matching the known Gmail Prefetch Bot user-agent and originating from Google-owned IP ranges.
What has SparkPost done to support detection?
It added an
is_prefetchedflag in Events API and Webhooks to automatically identify these events.Why does Gmail prefetch images?
Evidence suggests it acts as a security scan before showing the email to the user.
Does prefetching happen for every message in a thread?
No. It typically happens only once per unread Gmail thread.
What happens after the prefetch request?
A separate Google Image Cache request still occurs when the user actually opens the email.
What should senders focus on instead of opens?
Clicks, on-site behavior, deliverability quality, list hygiene, and subject line optimization.
Gmail is Prefetching Images, Leading to Marginally Inflated Opens
The recent changes with Apple Mail Privacy Protection had us wondering – where else is prefetching happening? While false opens come as no huge surprise, we have additional details around the limited set of circumstances in which Gmail is prefetching images in emails sent to Gmail users.
The Gmail prefetch opens occur in the following circumstances:
A Gmail recipient is logged into and has an active session open to the Gmail app (either web or mobile app).
An email is sent to the Gmail recipient while their session is active/open.
Gmail prefetches all images immediately before the UI displays the email.
This image prefetch is in addition to (and different from) Google Image Cache opens, which occurs when the user opens the email.
The image prefetch only occurs when the user is logged into the Gmail application, comes from a Google IP address, and is requested using the following user-agent string:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246 Mozilla/5.0
In investigating billions of open events, we can confidently say that these opens are false opens and do not indicate an actual user open event. These open events are independent and distinct from user-initiated open events triggered by Google Image Cache.
Gmail Prefetch Impacts
How to Detect and Ignore Gmail Prefetched Opens
For SparkPost senders, we have you covered. We have already updated our events API and event webhooks to automatically identify these Gmail Prefetch events using the newly introduced is_prefetched flag. We are also actively working to add the ability to distinguish prefetched and proxy opens in our Analytics Report UI and Metrics API. Stay tuned for future updates regarding the Report UI enhancements.
For others, detecting Gmail prefetch opens is still relatively straightforward. For more technical details on analyzing email data, see our guide on reading email headers. For each open event, you will want to ignore (or uniquely tag) any open event that matches the following user agent string:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246 Mozilla/5.0
We have been able to confirm that this string is unique to Google’s Prefetch Bot.
Gmail Prefetch Detailed Analysis
As detailed above, Gmail prefetching only occurs in a limited set of circumstances. Prefetching does not occur with other mail clients. Instead, this behavior is specific to when a Gmail user has the Gmail app open within their web browser or is actively using the mobile app. Our best guess is that it’s a security scan before showing the email to the user in their browser. This prefetching behavior also highlights why email file size optimization is important for faster loading and better user experience.
The full request headers for the image request are detailed below. A few things you will notice:
The referer is set to http://mail.google.com. Interestingly, even though the user is on https://, Gmail still sets the referer to the http:// protocol when making the request.
The request comes from Gmail’s servers and not the user’s browser. The client IP always resolves to a Google-owned IP space.
Unlike Google Image Cache, the user-agent string does not identify that the request is coming from one of Google’s bots. Instead, the user-agent string looks like an actual user image request. However, we have confirmed that this user-agent string does identify the Google prefetch bot.
The open request happens within seconds of the email delivery. Further, the request occurs before the email appears in the user’s Gmail interface. This behavior leads us to believe the request is for security purposes.
The prefetch seems to only happen once per unread Gmail email thread. In our extensive testing, once a message was read by the user, any future emails that went into that thread group did not initiate a prefetch request.
This prefetch is separate from Google Image Cache. Our testing indicates that even after the image is prefetched, a separate Google Image Cache request is made when the user opens the email.
If a user has the Gmail mobile app open, the prefetch will continue to happen for a short period of time, even after closing the mobile app.
Here is an example of what the request headers will look like when an image is requested from the Google Prefetch Bot:
As is the case with Apple’s Mail Privacy Protection, senders should treat all open events with care. Focus on overall email quality, including preventing email address typos and maintaining clean lists for better deliverability metrics. Opens are just one, and often not the best one, of the many engagement metrics that senders should be monitoring and including when making determinations about user engagement.



