Skip to content

iGaming events

Audience: Engineers, technical integrators for iGaming products

iGaming events (the igaming preset) cover the gaming vertical: extended user lifecycle, KYC & account status, financial, gaming, and bonus lifecycle.

IMPORTANT

iGaming is an industry preset enabled by subscription. Your product must be subscribed (the RevoSurge team enables it) before these events are accepted — otherwise they are rejected as 422 EVENT_DISABLED. See Event catalog & validation.

Every event also carries the base properties (event, timestamp, identity.client_user_id, context.ip_address). The tables below list only the fields specific to each event. Monetary fields (amount, bet_result_amount, …) are converted using the accompanying currency and is_crypto fields.

Interactive explorer

Pick an event to see its fields and a ready-to-send envelope. Toggle "Required only", then copy as JSON or cURL.

POST/v3/s2s/eventsession_ended
FieldTypeKeyDescription
eventStringRequiredFixed `session_ended`. Must be a registered event name.
timestampNumberRequiredUTC epoch milliseconds (13 digits).
identity.client_user_idStringRequiredUnique user ID in your system. Identity needs at least one of client_user_id / anonymous_id.
identity.click_idStringSuggestedAd click ID for attribution.
context.ip_addressStringRequiredEnd-user IP (IPv4 or IPv6).
context.session_idStringRequiredUnique session ID.
context.session_start_atNumberRequiredSession start, UTC ms.
context.duration_minutesNumberRequiredTotal session length (minutes).
Request envelope
{
  "event": "session_ended",
  "timestamp": 1718280000000,
  "identity": {
    "client_user_id": "user_001",
    "click_id": "RS_clk_998877"
  },
  "context": {
    "ip_address": "203.0.113.1",
    "session_id": "sess_001",
    "session_start_at": 1718276400000,
    "duration_minutes": 60
  }
}

User Lifecycle

session_ended

Session length is a strong player-level churn predictor.

FieldTypeRequirementDescription
context.session_idStringRequiredUnique session ID.
context.session_start_atNumberRequiredSession start, UTC ms.
context.duration_minutesNumberRequiredTotal session length (minutes).

vip_tier_changed

A downgrade is a strong churn signal. For an initial tier, use direction: upgrade.

FieldTypeRequirementDescription
context.new_tierStringRequiredCurrent tier (e.g. gold, vip_1).
context.directionStringRequiredOne of upgrade · downgrade · lateral.
context.triggerStringSuggestedOne of lifetime_deposits · monthly_wagering · loyalty_points · manual_admin · tier_review · other.

kyc_completed

Fire once per level for multi-level KYC.

FieldTypeRequirementDescription
context.kyc_levelStringRequiredOne of basic · enhanced · full.
context.jurisdictionStringRequiredISO 3166-1 country code (e.g. BR, IN, PH).
context.verification_methodStringRequiredOne of id_document · video · sms_otp · address_proof · bank_verification.
context.time_to_complete_minutesNumberSuggestedMinutes from register to this event.

kyc_rejected

Counterpart to kyc_completed; for KYC funnel / rejection-rate diagnostics.

FieldTypeRequirementDescription
context.kyc_levelStringRequiredOne of basic · enhanced · full.
context.jurisdictionStringRequiredISO 3166-1 country code.
context.rejection_reasonStringRequiredOne of document_invalid · face_mismatch · sanctions_hit · underage · duplicate · other.
context.verification_methodStringSuggestedVerification method attempted.

account_blocked

Exclude blocked accounts from LTV / churn models.

FieldTypeRequirementDescription
context.block_reasonStringRequiredOne of fraud · bonus_abuse · multi_account · self_exclusion · compliance · payment_chargeback · other.
context.block_durationStringSuggestedOne of permanent · temporary · under_review.
context.expected_unblock_atNumberSuggestedUTC ms; for temporary blocks.

account_unblocked

FieldTypeRequirementDescription
context.unblock_reasonStringRequiredOne of review_passed · appeal_approved · temporary_expired · manual_admin · other.
context.previous_block_reasonStringSuggestedReason of the block being lifted.

Financial

deposit

FieldTypeRequirementDescription
context.transaction_idStringRequiredUnique transaction ID (PK).
context.amountNumberRequiredDeposit amount (monetary).
context.currencyStringRequiredISO 4217 (fiat) or crypto symbol.
context.is_cryptoBooleanSuggestedtrue for crypto.
context.payment_methodStringSuggestede.g. card_visa · usdt_trc20 · pix.

deposit_failed

Total deposit attempts = deposit + deposit_failed.

FieldTypeRequirementDescription
context.transaction_idStringRequiredAttempt ID (PK, for dedup).
context.attempted_amountNumberRequiredAttempted deposit amount (monetary).
context.currencyStringRequiredISO 4217 or crypto symbol.
context.payment_methodStringRequiredPayment method attempted.
context.failure_reasonStringRequiredOne of insufficient_funds · declined_by_issuer · network_error · fraud_blocked · amount_limit · unknown.
context.is_cryptoBooleanSuggestedtrue for crypto attempt.

withdraw

FieldTypeRequirementDescription
context.transaction_idStringRequiredUnique transaction ID (PK).
context.amountNumberRequiredWithdrawal amount (monetary).
context.currencyStringRequiredISO 4217 or crypto symbol.
context.is_cryptoBooleanSuggestedtrue for crypto.

Gaming

bet

A single settled-bet event — the stake and its outcome are reported together via bet_result / bet_result_amount.

NOTE

For bet, context.ip_address is downgraded to Suggested, since bets often arrive from a game server without the end-user IP.

FieldTypeRequirementDescription
context.transaction_idStringRequiredUnique bet / ticket ID (PK).
context.game_typeStringRequiredOne of slot · live_casino · crash · sportsbook.
context.game_providerStringRequirede.g. Pragmatic Play, Evolution Gaming.
context.game_nameStringSuggestedSpecific game title (e.g. Sweet Bonanza).
context.amountNumberRequiredTotal stake (monetary).
context.currencyStringRequiredISO 4217 or crypto symbol.
context.cash_bet_amountNumberSuggestedCash portion of stake (for NGR / bonus-abuse).
context.bonus_bet_amountNumberSuggestedBonus portion of stake.
context.bet_resultStringRequiredOne of win · loss.
context.bet_result_amountNumberRequiredNet outcome — positive = win, negative = loss (monetary).
context.ticket_typeStringSuggestedSportsbook: single · multi · system.
context.is_liveBooleanSuggestedSportsbook in-play bet.
context.is_freeBooleanSuggestedFree-bet token (excluded from LTV).
context.is_cryptoBooleanSuggestedtrue for crypto.

Bonus Lifecycle

The four bonus events must share one consistent bonus_id, fired in order: bonus_offeredbonus_claimedbonus_completedbonus_cashed_out.

bonus_offered

FieldTypeRequirementDescription
context.bonus_idStringRequiredUnique bonus instance ID (PK; consistent across lifecycle).
context.bonus_typeStringRequiredOne of welcome · reload · cashback · freespin · promo_code · tournament · other.
context.bonus_value_maxNumberRequiredMax grantable amount.
context.currencyStringRequiredCurrency.
context.wagering_multiplierNumberRequiredWagering multiplier (30 = 30x; 0 = none).
context.valid_untilNumberRequiredUTC ms, offer expiry.
context.delivery_channelStringRequiredOne of auto_grant · email · in_app · push · promo_code · sms.
context.is_cryptoBooleanSuggestedtrue for crypto.

bonus_claimed

For auto_grant, fire immediately after bonus_offered.

FieldTypeRequirementDescription
context.bonus_idStringRequiredMatches bonus_offered (FK).
context.bonus_value_grantedNumberRequiredActual amount granted (≤ bonus_value_max).
context.currencyStringRequiredMust match offered.
context.wagering_requirementNumberRequired= bonus_value_granted × wagering_multiplier.
context.is_cryptoBooleanSuggestedtrue for crypto.

bonus_completed

FieldTypeRequirementDescription
context.bonus_idStringRequiredFK.
context.total_wageredNumberRequiredFinal wagered at completion.
context.wagering_requirementNumberRequiredSame as claimed.
context.currencyStringRequiredMust match claimed.
context.time_to_complete_minutesNumberRequiredMinutes from bonus_claimed.
context.is_cryptoBooleanSuggestedtrue for crypto.

bonus_cashed_out

May fire multiple times per bonus_id; DataPulse sums them.

FieldTypeRequirementDescription
context.bonus_idStringRequiredFK.
context.cashout_amountNumberRequiredAmount moved to real-money wallet.
context.original_bonus_valueNumberRequiredbonus_value_granted from claim.
context.currencyStringRequiredMust match claimed.
context.time_to_cashout_minutesNumberRequiredMinutes from bonus_claimed.
context.is_cryptoBooleanSuggestedtrue for crypto.