Game & Table Events
These events track gameplay activity at cash tables, including hand outcomes, player seating, and table lifecycle.
- Use Card Codes to decode card values
- Use Game Type Codes to identify game variants
- Use Combination Codes to interpret hand rankings
OnGameDone
Triggered before ShowResults when a hand is completed. Contains the full hand outcome including all participant data.
When it fires:
- Every completed hand at cash tables
- Every completed hand at tournament tables
| Field | Type | Description |
|---|---|---|
gameId | integer | Internal game/hand ID |
tableId | integer | Table ID |
tournamentId | integer | Tournament ID (0 for cash games) |
totalRake | integer | Total rake collected (in cents) |
gameStart | string | Hand start timestamp (YYYY-MM-DD HH:MM:SS) |
gameEnd | string | Hand end timestamp |
tableCards | string | Community cards (semicolon-separated card codes) |
tableCardsLowerRow | string | Lower row cards (Run It Twice mode only) |
rakePart | decimal | Rake percentage (e.g., 0.025 = 2.5%) |
rakeCap | integer | Maximum rake amount (in cents) |
numPlayersOnFlop | integer | Players remaining at flop |
numPlayersOnTurn | integer | Players remaining at turn |
numPlayersOnRiver | integer | Players remaining at river |
numPlayersOnShowDown | integer | Players at showdown |
gameType | integer | Game type code |
unclaimedPot | integer | Unclaimed pot amount (in cents) |
moneyType | integer | Currency code |
smallBlind | integer | Small blind amount (in cents) |
bigBlind | integer | Big blind amount (in cents) |
ante | integer | Ante amount (in cents) |
participations | array | Array of participant objects (see below) |
Participant Object
Each entry in the participations array contains:
| Field | Type | Description |
|---|---|---|
playerId | integer | Internal player ID |
skinId | integer | Player's skin ID |
externalId | string | External system player ID |
externalSystemCode | string | External system code |
bet | integer | Total amount bet (in cents) |
pot | integer | Player's pot contribution |
rake | integer | Rake paid by player |
isOut | boolean | true if player folded or mucked before showdown |
outRound | integer | Round player exited: 0/1 = preflop, 2 = flop, 3 = turn, 4 = river, 5 = showdown |
isWin | boolean | true if player won the hand |
isAway | boolean | true if player was Away at hand start |
isSB | boolean | true if player posted small blind |
isBB | boolean | true if player posted big blind |
isStraddle | boolean | true if player posted straddle |
pocketCards | string | Player's hole cards (semicolon-separated codes) |
highCombination | string | Cards in player's high hand |
highCombinationCode | string | Encoded high hand: [combo type].[cards].[game type].[mode H/L] |
lowCombinationCode | string | Encoded low hand (Hi/Lo games only) |
stackAtHandBegin | integer | Stack at hand start (in cents) |
stackAtHandEnd | integer | Stack at hand end (in cents) |
betOnPreflop | integer | Amount bet preflop |
betOnFlop | integer | Amount bet on flop |
betOnTurn | integer | Amount bet on turn |
betOnRiver | integer | Amount bet on river |
insuranceFee | integer | Insurance premium paid |
insuranceClaim | integer | Insurance payout received |
playerOnTableId | integer | Table session ID |
playerInTournamentId | integer | Tournament session ID |
scorePoints | integer | Points scored (Rummy, Chinese Poker, Big2, Callbreak) |
wonPoints | integer | Points won |
totalPoints | integer | Total accumulated points |
rank | integer | Player's finishing rank in the hand |
externalSessionId | string | External session identifier |
Example:
{
"gameId": 236645,
"tableId": 242487,
"tournamentId": 0,
"totalRake": 180,
"gameStart": "2020-08-14 03:50:19",
"gameEnd": "2020-08-14 03:51:49",
"tableCards": "3;28;1;2;3",
"gameType": 72,
"smallBlind": 100,
"bigBlind": 200,
"participations": [
{
"playerId": 47830,
"externalId": "751632",
"bet": 5000,
"isWin": true,
"pocketCards": "3;28",
"stackAtHandBegin": 90000,
"stackAtHandEnd": 95000
}
]
}
OnGameHistoryDone
Triggered after ShowResults with the complete hand history containing all game actions.
When it fires:
- After every completed hand (following
OnGameDone)
| Field | Type | Description |
|---|---|---|
gameId | integer | Game/hand identifier |
tableId | integer | Table identifier |
chunkStart | string | Timestamp of events chunk |
events | string | Encoded hand history events |
Example:
{
"gameId": 236645,
"tableId": 242487,
"chunkStart": "2020-08-14 03:50:19",
"events": "GS 236645 wsi|DL 1 4 5|SB 4 100|BB 5 200|..."
}
The events field contains pipe-separated mnemonic codes. See Mnemonic Codes for Hand History Events for the complete reference.
OnPlayerSeatedDown
Triggered when a player takes a seat at a cash table.
When it fires:
- Player sits down at a cash game table
- Player tops up their stack (with
isTopUp: true)
| Field | Type | Description |
|---|---|---|
objectId | integer | User ID |
playerId | integer | User ID |
tableId | integer | Table identifier |
playerOnTableId | integer | Table session ID |
externalId | string | External system player ID |
externalSystemCode | string | External system code |
entryCnt | integer | Entry number (for multi-entry) |
skinId | integer | User's skin ID |
numActivePlayers | integer | Current active players at table |
isTopUp | boolean | true if this is a stack top-up |
rakeCap | integer | Table rake cap (in cents) |
rakePart | decimal | Table rake percentage |
maxPlayers | integer | Maximum seats at table |
seatAmount | integer | Buy-in amount (in cents) |
externalSessionId | string | External session identifier |
Example:
{
"params": {
"objectId": 81622,
"playerId": 81622,
"tableId": 34534,
"playerOnTableId": 10351,
"externalId": "234324",
"externalSystemCode": "default",
"entryCnt": 1,
"numActivePlayers": 2,
"isTopUp": false,
"seatAmount": 5000,
"maxPlayers": 6
}
}
OnPlayerEntrySeatedDown
Triggered when a player is seated at a fast-fold (Zoom/Rush) table.
When it fires:
- Player joins a fast-fold poker pool
| Field | Type | Description |
|---|---|---|
playerId | integer | User ID |
objectId | integer | User ID |
tableId | integer | Table identifier |
playerEntryIdx | integer | Entry number |
skinId | integer | User's skin ID |
externalId | string | External system player ID |
externalSystemCode | string | External system code |
playerOnTableId | integer | Table session ID |
seatAmount | integer | Buy-in amount (in cents) |
externalSessionId | string | External session identifier |
Example:
{
"playerId": 6121,
"tableId": 25291772,
"playerEntryIdx": 1,
"skinId": 0,
"externalId": "999",
"externalSystemCode": "A",
"playerOnTableId": 36120986,
"seatAmount": 5000
}
OnPlayerLeaveTable
Triggered when a player leaves a table. For cash tables, fires when funds are returned to balance. For tournaments, fires on elimination or table balancing.
When it fires:
- Player stands up from cash table
- Player eliminated from tournament
- Player moved during tournament table balancing
| Field | Type | Description |
|---|---|---|
objectId | integer | User ID |
playerId | integer | User ID |
tableId | integer | Table identifier |
amount | integer | Chips returned (in cents) |
externalId | string | External system player ID |
externalSystemCode | string | External system code |
skinId | integer | User's skin ID |
templateTableId | integer | Template table ID (0 = no template) |
sessionTime | decimal | Time spent at table (seconds) |
playerEntryIdx | integer | Entry number |
standUpCause | integer | Reason code (see below) |
externalSessionId | string | External session identifier |
Stand Up Cause Codes
| Code | Reason | Description |
|---|---|---|
| 0 | Unknown | Reason not known |
| 1 | FFRealTableDestroy | Fast-fold table destroyed |
| 2 | FFPlayerDisconnect | Disconnected during fast-fold |
| 3 | FFPlayerEntryDestroy | Fast-fold entry destroyed |
| 4 | FFPlayerEntryFastFolded | Player quick-folded |
| 5 | FFPlayerEntrySitOut | Sit-out timer expired (fast-fold) |
| 6 | FFPlayerEntryLeaveTable | Player left fast-fold table |
| 7 | TableClosed | Table closed (tournament end, admin action, balancing) |
| 8 | CrashRecovery | System crash recovery |
| 9 | FictitiousGameStateReset | Fast-fold logic reset |
| 10 | Kick | Player kicked/banned |
| 11 | DefaultAction | Auto stand-up (e.g., Rummy drop) |
| 12 | UnauthorizeSession | Session invalidated |
| 13 | ReservedSeatTimeout | Didn't buy in after reserving seat |
| 14 | DisconnectTimeout | Disconnected too long |
| 15 | SitoutTimeout | Sat out too long |
| 16 | NoCashTimeout | Insufficient funds timeout |
| 17 | SafeBlockTimeOut | Block grace period expired |
| 18 | ManualLeaveTable | Player chose to leave |
| 19 | NoCash | Insufficient funds for minimum |
| 20 | UnreserveSeat | Cancelled seat reservation |
| 21 | UnjoinControlList | Left waiting list |
| 22 | MovePlayer | Moved during table balancing |
| 23 | TourKnockOut | Knocked out of tournament |
| 24 | UnregisterPlayer | Unregistered from tournament |
| 25 | TourWinner | Tournament winner (eliminated with prize) |
| 26 | TourFinalStage | Moved to final table |
| 27 | UnionStage | Multi-entry merged |
| 30 | Eliminated | Eliminated after points added (Big2, Rummy) |
Example:
{
"params": {
"objectId": 105,
"playerId": 105,
"tableId": 1166896,
"amount": 8000,
"externalId": "123412344",
"externalSystemCode": "434",
"standUpCause": 18,
"sessionTime": 1250.5,
"playerEntryIdx": 0
}
}
OnTableCreated
Triggered when a new table is created in the system.
When it fires:
- New cash table created
- New club table created
- Tournament table created during balancing
| Field | Type | Description |
|---|---|---|
tableId | integer | New table ID |
objectId | integer | New table ID |
templateTableId | integer | Parent/template table ID (0 = no template) |
Example:
{
"tableId": 955897,
"objectId": 955897,
"templateTableId": 0
}
Related Events
- Tournament Events — For tournament-specific seating and table events
- Financial Events — For
OnGetCashandOnReturnCashtriggered by table actions