Personalize Game Session
ootb_game_session is an optional Gaming event for Optimove Personalize. Send it after an identified customer’s game session has ended and the session totals are final.
Game Launch is the minimum event required for Gaming recommendations. Game Session adds stakes, GGR, bet count and session-level value signals for Personalize methods configured to use financial or engagement intensity data.
Send this event using the Server-Side Events API.
Before you begin
- Implement the required Game Launch event first.
- The game must exist in Gaming Inventory.
context.ootb_game_codemust exactly match the game’s Inventorygame_code.- If the related Game Launch contained
ootb_game_session_reference, reuse that exact value here. customermust identify the customer who completed the session.
Example
{
"tenant": "your_tenant_id",
"timestamp": "2026-07-09T14:43:03Z",
"event": "ootb_game_session",
"customer": "customer_12345",
"context": {
"ootb_session_start_timestamp": "2026-07-09T14:22:00Z",
"ootb_session_end_timestamp": "2026-07-09T14:43:00Z",
"ootb_game_code": "SLOT001",
"ootb_game_name": "Mega Fortune Slots",
"ootb_game_category": "Slots",
"ootb_stakes": 40,
"ootb_gross_gaming_revenue": 10,
"ootb_number_of_bets": 24,
"ootb_game_session_reference": "session_7f31c9",
"ootb_country": "UK",
"ootb_platform": "Web",
"ootb_channel": "Desktop"
}
}Context fields
| Field | Required | Type | Personalize use | Notes |
|---|---|---|---|---|
ootb_session_start_timestamp | Yes | String (date-time) | Establishes when the session began and anchors the session interaction | Send an ISO 8601 UTC timestamp. It should normally equal the launch time for the linked session. |
ootb_session_end_timestamp | Yes | String (date-time) | Required by the public event schema; the current Personalize mapper does not retain it | Send an ISO 8601 UTC timestamp later than or equal to the start timestamp. Do not assume this field currently enables duration-based recommendations. |
ootb_game_code | Yes | String or number | Joins the session to Gaming Inventory | It must exactly match Inventory game_code. A string is recommended. |
ootb_stakes | Yes | Number | Supplies the real-money amount wagered for value-aware methods | Must be zero or greater. Use a JSON number without a currency symbol. |
ootb_gross_gaming_revenue | Yes | Number | Supplies the session’s GGR for financial-aware methods | May be negative. Use the same GGR definition consistently across all sessions. |
ootb_number_of_bets | Yes | Number | Measures the amount of activity within the session | Must be zero or greater. Send a whole number. |
ootb_game_session_reference | Yes | String | Links the session summary to its related events | Reuse the reference from Game Launch when one was sent. Do not reuse a session reference for unrelated sessions. |
ootb_game_name | No | String | Provides readable game context for analysis | Use the same name supplied in Gaming Inventory where possible. |
ootb_game_category | No | String | Supplies category context for value and engagement analysis | Use a stable category vocabulary consistent with Gaming Inventory. |
ootb_start_balance | No | Number | Accepted by the event schema but not currently retained by the Personalize Game Session mapper | Must be zero or greater. Use the same monetary unit as the other values in the event. |
ootb_end_balance | No | Number | Accepted by the event schema but not currently retained by the Personalize Game Session mapper | Must be zero or greater. |
ootb_real_win_amount | No | Number | Accepted by the event schema but not currently retained by the Personalize Game Session mapper | Must be zero or greater. |
ootb_bonus_used | No | Number | Accepted by the event schema but not currently retained by the Personalize Game Session mapper | Must be zero or greater. |
ootb_bonus_win_amount | No | Number | Accepted by the event schema but not currently retained by the Personalize Game Session mapper | Must be zero or greater. |
ootb_language | No | String | Supplies language context for configured analysis | Use a stable language naming convention. |
ootb_country | No | String | Supplies geographic context for configured analysis | Use one stable country convention across all Gaming events. |
ootb_platform | No | String | Supports platform-specific analysis | Examples include iOS, Android and Web. |
ootb_launch_location | No | String | Identifies the container from which the linked game session began | Use the same placement name as the related launch where possible. |
ootb_launch_location_index | No | Number | Records the game’s position inside the launch container | Must be zero or greater. Keep indexing consistently zero-based or one-based. |
ootb_channel | No | String | Supplies access-channel context | Examples include Mobile, Desktop and Tablet. |
ootb_brand | No | String | Not currently retained by the Personalize Game Session mapper | The top-level tenant and Optimove configuration determine routing. |
ootb_license | No | String | Supplies regulatory or jurisdiction context where configured | Use the same license identifiers across Gaming events. |
Linking launch and session data
The following fields connect the session to the customer journey and Inventory:
Game Session customer = related Game Launch customer
Game Session context.ootb_game_code = Gaming Inventory game_code
Game Session context.ootb_game_session_reference = related Game Launch session referenceDo not replace the Inventory game code with a provider name, display name or internal session identifier.
When this event is needed
Implement Game Session when your selected Personalize methods use one or more of these signals:
- total stakes;
- gross gaming revenue;
- number of bets.
If your implementation only requires customer-to-game history and standard game affinity, Game Launch remains the required event.
Validation checklist
- The wrapper contains
tenant,timestamp,event,customerandcontext. eventis exactlyootb_game_session.- The session start is not later than the session end.
ootb_game_codeexists in the latest successfully processed Gaming Inventory.- All seven required context fields are present.
ootb_number_of_betsis a non-negative whole number.- Monetary fields are JSON numbers and use one consistent monetary unit.
- The session reference is stable across related events and unique to the intended session.
Updated about 2 hours ago
