Google Analytics 4 — data contract (compatible with GA4’s documented BigQuery export schema; not affiliated with Google)
GA4 BigQuery Export events — core scalar columns of the daily events_ table. Compatible with Google Analytics 4's documented BigQuery export schema; not affiliated with Google. Nested RECORD columns (event_params, user_properties, items) are omitted from this core contract.
Validate a client's Google Analytics 4 export at ingest into your warehouse, or with POST /egress before sending the same shape to a partner, reverse ETL, or an AI agent.
Also available: ODCS v3.1.0 YAML. “Use this contract” forks it into your org, then opens the validation playground so you can upload the client file.
Fields
| Name | Type | Required | Rule | Description |
|---|---|---|---|---|
| event_date | string | required | pattern /^[0-9]{8}$/ | The date on which the event was logged (YYYYMMDD, in the property's reporting time zone). |
| event_timestamp | integer | required | ≥ 0 | The time (in microseconds, UTC) at which the event was logged on the client. |
| event_name | string | required | — | — |
| event_previous_timestamp | integer | optional | ≥ 0 | — |
| event_bundle_sequence_id | integer | optional | — | — |
| user_pseudo_id | string | optional | — | Client id for this stream. A web stream uses the cookie-style id (two numbers separated by a dot). An app stream uses its own app-instance id and never shares the web cookie id. |
| user_id | string | optional | — | — |
| platform | string | optional | one of: WEB, ANDROID, IOS | The data stream platform the event came from. |
| stream_id | string | optional | — | — |
Sample rows
Three synthetic rows we wrote. They validate against this contract with zero violations. No real customer data.
[
{
"event_bundle_sequence_id": 1,
"event_date": "20260115",
"event_name": "page_view",
"event_timestamp": 1768491000000000,
"platform": "WEB",
"stream_id": "1234567",
"user_pseudo_id": "1234567890.0987654321"
},
{
"event_date": "20260115",
"event_name": "session_start",
"event_previous_timestamp": 1768500240000000,
"event_timestamp": 1768500300000000,
"platform": "ANDROID",
"stream_id": "7654321",
"user_id": "user_0001",
"user_pseudo_id": "a1b2c3d4-e5f6-4789-a012-3456789abcde"
},
{
"event_date": "20260116",
"event_name": "purchase",
"event_timestamp": 1768579800000000,
"platform": "IOS",
"stream_id": "8901234",
"user_pseudo_id": "f0e1d2c3-b4a5-4678-9012-3456789abcdf"
}
]Provenance
- Verified against
- https://support.google.com/analytics/answer/7029846
- Checked
- 2026-11-06
- Version
- v1.0
- Author
- DataContractGate
- License
- MIT
Spotted a mismatch with the vendor’s current schema? Report an issue.
Stripe, Shopify, QuickBooks, Xero, HubSpot, Salesforce, Google Analytics and Square are trademarks of their respective owners. DataContractGate is not affiliated with or endorsed by them. These contracts describe data shaped like these vendors’ documented schemas; they are not official and are not certified by any vendor.