Skip to main content

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

FieldTypeRequiredDescription
event_typestringYesOne of the 26 supported event types
event_idstringAutoUUID v4, auto-generated by the SDK
timestampstringAutoISO 8601 timestamp, auto-generated
game_idstringYesYour game's UUID from the Platform
environmentstringYesdevelopment, staging, or production
sdk_versionstringAutoSDK version string
platformstringAutoios, 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"
}
}
FieldSourceNotes
player_idSet by your gamePersistent cross-device player identity
device_idAuto-generatedPer-device UUID, persisted across sessions
idfaiOS onlyRequires ATT consent
gaidAndroid onlyGoogle Advertising ID
idfviOS onlyVendor identifier
ipServer-sideCaptured 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.