Event Structure
Every event sent to GameRebellion follows a consistent envelope structure. Understanding this structure helps you debug issues and build correct S2S integrations.
Event Envelope
All events are wrapped in a standard envelope:
{
"event_type": "transaction",
"event_id": "uuid-v4",
"timestamp": "2026-03-19T14:30:00.000Z",
"game_id": "your-game-uuid",
"environment": "production",
"sdk_version": "1.2.0",
"platform": "android",
"identifiers": { ... },
"utm": { ... },
"payload": { ... }
}
Top-Level Fields
| Field | Type | Required | Description |
|---|---|---|---|
event_type | string | Yes | One of the 26 supported event types |
event_id | string | Auto | UUID v4, auto-generated by the SDK |
timestamp | string | Auto | ISO 8601 timestamp, auto-generated |
game_id | string | Yes | Your game's UUID from the Platform |
environment | string | Yes | development, staging, or production |
sdk_version | string | Auto | SDK version string |
platform | string | Auto | ios, android, windows, macos, linux, webgl |
Identifiers Block
Player and device identification:
{
"identifiers": {
"player_id": "custom-player-id",
"device_id": "auto-generated-device-uuid",
"idfa": "ios-advertising-id",
"gaid": "google-advertising-id",
"idfv": "ios-vendor-id",
"ip": "auto-captured"
}
}
| Field | Source | Notes |
|---|---|---|
player_id | Set by your game | Persistent cross-device player identity |
device_id | Auto-generated | Per-device UUID, persisted across sessions |
idfa | iOS only | Requires ATT consent |
gaid | Android only | Google Advertising ID |
idfv | iOS only | Vendor identifier |
ip | Server-side | Captured on ingestion, used for GeoIP |
UTM Block
Marketing attribution data, attached automatically when available:
{
"utm": {
"source": "facebook",
"medium": "cpc",
"campaign": "summer_2026",
"term": "rpg+game",
"content": "video_ad_v2"
}
}
Payload
The event-specific data. Structure varies by event type — see the Event Reference for complete schemas per event type.