Skip to main content

Canonical events

When you map your platform's events into UCRM's canonical names, every reporting / segmentation / journey path works automatically. Use custom_* prefix for platform-specific events that don't fit the canonical taxonomy.

Identity / session

EventRequired properties
signup
login
logout
session_start
session_end
page_viewpath
clicktarget

KYC

EventRequired properties
kyc_submittedlevel, documents?
kyc_approvedlevel, expires_at?
kyc_rejectedlevel, reason
kyc_expiredlevel
kyc_level_upgradedfrom_level, to_level

Responsible gaming

EventRequired properties
self_exclusion_setuntil?, reason?
self_exclusion_liftedreason
deposit_limit_setkind (daily/weekly/monthly), amount, currency
deposit_limit_reachedkind, attempted_amount, currency
loss_limit_set / loss_limit_reachedsame shape
session_limit_warning / session_limit_exceededminutes_used
reality_checktriggered_at, acknowledged?
cooldown_enteredduration_minutes

Money in/out

EventRequired properties
deposit_initiatedamount, currency, transaction_id, payment_method?
deposit_confirmedamount, currency, transaction_id, payment_method?
deposit_failedtransaction_id, reason
withdrawal_requestedamount, currency, transaction_id
withdrawal_confirmedamount, currency, transaction_id
withdrawal_failedtransaction_id, reason

amount is in smallest currency unit (cents / sat) — see Multi-currency. UCRM will enrich with amount_base + base_currency + fx_rate_locked at ingestion.

Wagering — casino

EventRequired properties
bet_placedamount, currency, bet_id, game_id, game_category
bet_settledamount, payout, currency, bet_id, game_id, game_category, outcome
bet_won(optional — bet_settled is the canonical settlement event)
bet_lost(optional)

game_categoryslots | live | table | crash | dice | sports | other (we collapse anything else to other).

outcomewon | lost.

Wagering — sportsbook

Two-phase lifecycle: a bet is placed, then later settled OR voided OR cashout (player early-settle).

EventRequired properties
sport_bet_placedamount, currency, bet_id, sport, bet_type, odds, event_ref
sport_bet_settledamount, payout, currency, bet_id, outcome
sport_bet_voidedbet_id, reason
sport_cashoutamount, payout, currency, bet_id

sportfootball | basketball | tennis | hockey | mma | … (operator-defined, but stick to common values for cross-tenant analytics).

bet_typesingle | accumulator | system.

event_ref is the match identifier (your platform's id; doesn't need to map to anything in UCRM).

Bonuses

UCRM tracks bonus state via webhooks (see Bonus flow), not these events. bonus_* events are for player-side signals (player claimed / bonus completed visible to player) — separate from the platform-side state machine.

EventRequired properties
bonus_claimedbonus_id
bonus_wageredbonus_id, amount, currency
bonus_completedbonus_id
bonus_expiredbonus_id

Custom events

Anything not in the canonical list MUST be prefixed custom_:

{
"event": "custom_slot_jackpot_won",
"external_id": "...",
"properties": { "amount": 50000, "game_id": "starburst", "tier": "minor" }
}

UCRM accepts custom events but doesn't enforce a schema. Use them in segments (event aggregation: custom_slot_jackpot_won → count > 0).