1. Overview
When a Google Cloud customer and its users (such as administrators) use the Google Cloud Console (Console) to set up, configure, deploy and manage their Google Cloud services, Google collects "telemetry data".
Telemetry data is technical information about the use, performance, stability, and overall health of the Console. It is automatically transmitted to Google when users interact with the Console, and includes both data from the user's browser or device, and data generated by the UI serving stack's servers.
We categorize telemetry data as "Service Data" under the Google Cloud Privacy Notice (GCPN)—specifically, it is "Technical and operational details of your usage of Cloud Services." For clarity, telemetry data excludes what we categorize as "Customer Data" under your organization's agreement for Google Cloud services (for example, object data in Cloud Storage; data contained within BigQuery tables; or container images in Compute Engine).
This page—designed for Google Cloud customers and its users—expands upon the information provided in the GCPN, detailing the collection, usage, and retention of telemetry data by the Console. Specifically, it covers telemetry data sent to Google via region1.analytics.google.com and cloud.google.com/log.
2. How Google uses Telemetry Data
Under the GCPN, Google may use Service Data for the purposes described in that notice. In practice, telemetry data is used for the following reasons:
-
Reliability, Stability, & Optimization
-
Stability Monitoring: Since telemetry data tracks performance metrics like latency, error rates, and resource utilization, it provides early warnings for performance issues, which can help Google prevent widespread breakages and outages that impact customers and users.
-
Debugging & Troubleshooting: Telemetry data such as error codes, event sequences and system state enables rapid diagnosis and fixes for technical issues, reducing service downtime. Without the use of telemetry data, troubleshooting would be inefficient, costly, and manual, leading to potential downtime for customers.
-
Capacity Planning & Optimization: Telemetry data is essential for understanding how Google's infrastructure is being used, and helps Google scale that infrastructure to meet demand (e.g. by adding servers) and ensure predictable performance for users.
-
-
User Experience & Product Rollout
-
User Experience: Aggregated telemetry data can reveal insightful friction points in the UI/UX (e.g. about user journey completion rates). By addressing these friction points, Google can make the service more efficient and easier to use.
-
Feature Rollout: New features in Google Cloud are rarely rolled out to all users at once. Telemetry data allows Google to gauge the stability and performance impact of a new feature on a small subset of users before a wider launch. Telemetry data like Experiment IDs are logged for aggregation to check for success metrics relative to an experimental feature.
-
Effective Customer Support: When a Google Cloud customer reports an issue, our Cloud Support team may, in rare cases, need to use telemetry data to confirm the sequence of events and understand the root cause. Without it, issue resolution would be drastically slowed down, leading to customer disruption, poor support outcomes and potential security risks.
-
-
Security
-
Security Posture: Telemetry data contributes to Google Cloud's overall security model by monitoring for unusual usage patterns, attempted unauthorized access, or internal system anomalies that could indicate a security threat.
-
3. Telemetry Events
Telemetry data is sent from the client (the user's browser) and web servers to the logging endpoint within Google Cloud's infrastructure. The following examples are broadly representative of the key types of telemetry data collected:
General Event Structure
- Session and Identification IDs:
clientSessionId: A randomly generated Universally Unique Identifier (UUID) that is refreshed on every browser window load.webSessionId: A randomly generated UUID that persists across refreshing the page or "hard loads" without leaving the domain, but is refreshed when the user navigates away from the application.browserWindowId: A randomly generated UUID that persists in browser session storage as long as the particular tab is open, but does not survive closing the browser window.pageViewId: A random integer used to aggregate analytics events within the same logical "page view" on the Console.
- Contextual Data:
pagePath: The URL where the user triggered the event. The path value is "templatized," meaning sensitive identifiers are masked (e.g.,/storage/buckets/my_secret_bucketis logged as/storage/buckets/:bucketid).releaseVersion: The version of the deployed JavaScript running in the user's browser.displayInfo: Information about the user's browser window display, including screen and window resolution.pageHidden: Records whether the current browser tab has been minimized or sent to the background.
- Metadata Lists:
eventMetadataList: Contains information attributed to the Google Tag Manager analytics "campaign" by which the user accessed the Console (e.g. direct access).subEventLatencyMsList: Contains sub measurements for analytic events recording time spent on an interaction, such as "time spent rendering" versus "time spent retrieving data".
Additional Event Types
The general event structure is supplemented by specific events that relate to each user's activity:
- Page Navigation: Events are recorded as the user navigates through the Console, registering each logical "page" view (list or detail pages). Examples include recording user flow or "meta" navigation events like the user restoring a tab to the foreground (e.g., event Name is
activeTab). - On-Page Interactions: Interactions such as clicks on annotated elements are recorded. These elements are identified by numeric identifiers, and the hierarchy of the element is recorded. This data is used to calculate user journey completion rates, which is a measure of effectiveness of the user interface.
- Information about Data Requests (Xhr Events): Which data endpoints a page communicates with, along with timing data, is recorded, but without any payload. These events capture server timings (latency), an
interactionId(for tracking serial data requests tied to the same user interaction), and specifics about the HTTP request (method, response code, and body size). - Experiment Exposure: When a user interacts with an experimental feature (i.e. a feature that is made available only to a fraction of users), the numeric ID for that experiment is recorded. This is used for aggregation to check success metrics or increased error rates relative to an experiment launch.
Event Records
Key examples of specific event records, including their structure, are set out in this section in JSON format.
Here is the generic structure for an event. This structure will be part of any telemetry event and there will be additional information depending on the event type. Note that this structure does not contain information that specifically relates to the user (e.g. ID and IP address). This information is contained in the auth cookies stored on the server, after a successful authentication, and gets appended to the event record by the server.
{
"consoleType": "CLOUD_CONSOLE",
"pageHidden": false,
"isSecure": true,
"pageHostname": "console.cloud.google.com",
"referer": "https://accounts.google.com/",
"pagePath": "pan-unresolved-page-path",
"eventMetadataList": [
{
"key": "source",
"value": "(direct)"
},
{
"key": "medium",
"value": "(none)"
},
{
"key": "campaign",
"value": "(direct)"
},
{
"key": "term",
"value": ""
},
{
"key": "content",
"value": ""
}
],
"clientSessionId": "8A34CFC3-D2CD-4F4D-AE89-1E52DF22E1BC",
"isGoogler": true,
"releaseVersion": "pantheon.pangular_20250918.06_p0",
"servedLanguage": "en",
"subEventLatencyMsList": [],
"pageViewId": "5900742431117578",
"webSessionId": "D4DA2EF4-58D1-415B-9768-99396DAD71F5",
"displayInfo": {
"screenResolution": {
"width": 1728,
"height": 1117
},
"screenColorDepthBits": 30,
"windowResolution": {
"width": 1728,
"height": 882
}
},
"browserWindowId": "5ECAF85B-555F-432D-8BA7-C4DAD0AB3C5E",
"monarchRequestIdList": [],
"etiList": [],
"taskInfoList": [],
"jsModulePrefetchInfoList": [],
"jsModulePrefetchHitInfoList": [],
"migratingVmIdList": []
}
The example below is an event record that results from the user changing the project selection in the picker.
{
"pagePath": "/welcome",
"eventType": "purviewService",
"eventName": "purviewChanged",
"eventKind": 29,
"eventMetadataList": [
{
"key": "resourceType",
"value": "0"
}
],
"projectNumber": "1074210990484",
}
The example below is an event record that results from the user navigating to a different page in the Console.
{
"pagePath": "pan-unresolved-page-path",
"eventType": "Navigation",
"eventName": "activeTab",
"eventKind": 29,
}
The example below is an event record that results from the user interacting with any element of a page.
{
"eventType": "impression",
"eventName": "client-interaction-start",
"eventKind": 15,
"eventMetadataList": [
{
"key": "aveBubbleIndex",
"value": "0"
}
],
"visualElementEntry": {
"ancestryVisualElement": {
"elementId": 72669,
"pathToRootElementIdList": [
54818,
54818,
54818,
54818
]
},
"visualElementMetadata": {
"p2020StructuredMetadataList": [],
"eventMetadataList": []
}
},
}
The example below doesn't hold any specific metadata, but rather records various technical information about a data request from the Console to a Google Cloud API, for example Compute Engine API. This information is used for performance and reliability tracking and analysis.
{
"eventType": "xhr",
"eventName": "cloudusersettings_pa.settings.update",
"eventKind": 4,
"eventMetadataList": [
{
"key": "originAccurate",
"value": "false"
},
{
"key": "latencyUntracked",
"value": "true"
}
],
"latencyMs": 459,
"projectNumber": "1074210990484",
"subEventLatencyMsList": [
{
"key": "request-start",
"latencyMs": 1758235579676
},
{
"key": "server-timing l2gfet4t7_dur",
"latencyMs": 109
},
{
"key": "server-timing gfet4t7_dur",
"latencyMs": 110
}
],
"interactionId": "79A7B519-8F56-4B0C-BF94-4570BE5D780F",
"interactionQualityErrorWise": 1,
"platformMetadata": {
"platformType": 2
},
"subMetricList": [],
"webSessionId": "D4DA2EF4-58D1-415B-9768-99396DAD71F5",
"xhr": {
"method": "PUT",
"url": "autopush-cloudusersettings-pa-googleapis.sandbox.google.com",
"normalizedPath": "cloudusersettings_pa.settings.update",
"responseStatus": 200,
"responseSizeBytes": 148,
"requestId": "6710724563968594001",
"requestSampled": false
},
}
This event record explicitly logs the window dimensions of the user's browser. These are important parameters for rendering the page correctly while adhering to accessibility requirements.
{
"eventType": "window",
"eventName": "dimensions",
"eventKind": 29,
"eventMetadataList": [
{
"key": "width",
"value": "1728"
},
{
"key": "height",
"value": "882"
}
],
}
This event logs an exposure to a specific experiment. The Console has a built in experimentation capability that allows Google to test new functionality with limited impact and gradually roll out new capabilities.
{
"eventType": "experimentExposure",
"eventName": "13828573",
"eventKind": 29,
}
The record below contains basic JavaScript package loading information and is used to monitor and analyze the performance of the Console.
{
"eventType": "jsModuleLoad",
"eventName": "jsModuleLoad",
"eventKind": 14,
"subMetricList": [
{
"key": 1,
"startTimeMs": 0,
"latencyMs": 206,
"jsModuleList": [
"pm_survey_service",
"pm_learning_panel",
"pm_rur_visibility_service",
"pm_new_badge_store",
"pm_operation_drawer_bootstrap",
"pm_navigation_error_generic",
"pm_page_meta_service_host",
"pm_easyapis_redirect_service",
"pm_easyapis_tos_service_host_listener"
],
"resourceSize": 1811398
},
{
"key": 1,
"startTimeMs": 6,
"latencyMs": 226,
"jsModuleList": [
"pm_feedback_service"
],
"resourceSize": 86737
},
{
"key": 1,
"startTimeMs": 7,
"latencyMs": 252,
"jsModuleList": [
"pm_assurant_intercept_service"
],
"resourceSize": 3364911
},
{
"key": 1,
"startTimeMs": 8,
"latencyMs": 284,
"jsModuleList": [
"pm_navigation_error_permissions"
],
"resourceSize": 3631897
},
{
"key": 1,
"startTimeMs": 171,
"latencyMs": 524,
"jsModuleList": [
"pm_abuse_banner",
"pm_aml_global_banner",
"pm_cameo_wrapper",
"pm_debug_panel_ng2",
"pm_deferred_router_outlet_redirector",
"pm_emergency_banner",
"pm_first_charge_banner",
"pm_kyc_global_banner",
"pm_mobile_app_banner",
"pm_product_attach_banner",
"pm_survey_service"
],
"resourceSize": 5852504
},
{
"key": 1,
"startTimeMs": 318,
"latencyMs": 388,
"jsModuleList": [
"pm_precommit_service_host_listener"
],
"resourceSize": 8362
},
{
"key": 1,
"startTimeMs": 815,
"latencyMs": 26,
"jsModuleList": [
"pm_targeted_new_badge"
],
"resourceSize": 295
},
{
"key": 1,
"startTimeMs": 934,
"latencyMs": 74,
"jsModuleList": [
"pm_walkthrough_message_handler"
],
"resourceSize": 1341608
}
],
}
4. Internal Access Controls for Telemetry Data
At Google Cloud, we take the security of telemetry data extremely seriously, and implement robust internal access controls to protect it:
- Google personnel access to telemetry data is granted only when absolutely necessary for at least one of the purposes described above.
- Access rights and levels are based on an employee's job function and role, using the principles of least privilege and need-to-know that match access privileges to defined responsibilities.
- Google personnel must submit a detailed internal request justifying the need for access, including why it would not be possible to fulfill the purpose without using the data (or using it in e.g. anonymized form).
- Each request undergoes a rigorous multi-stage review process. This includes scrutiny from direct management as well as specialized privacy and legal reviewers. Approvals are contingent on a clear demonstration of need, adherence to Google's internal data handling policies, and an assessment of potential risks.
- Access is always time-bound. Google personnel do not have persistent, ongoing access rights to telemetry data.
- If approved, both the approval and access to the data is logged. Our dedicated security teams, privacy teams, and internal audit teams monitor and audit personnel access to ensure accountability and compliance with internal policies. Technical controls are in place to enforce these access restrictions.
5. Retention of Telemetry Data
In line with the GCPN, the maximum period that Google may retain telemetry data that identifies a user is 180 days. However, in practice, telemetry data is retained for up to 63 days, with the data then being anonymized or deleted. Telemetry data may be anonymized pursuant to the purposes described on this page.