PlayGenusDocs

Server event reference

Server-side PlayGenus events — purchases, subscriptions, progression, economy, player lifecycle, matchmaking, guilds, LiveOps, moderation — with full property schemas.

These events are recommended for the Server SDK. Send them from your backend after the action has been verified and committed — that's the whole point of sending them server-side. If your game has no backend, most of these can be sent from the client instead; see Choosing your SDK.

Purchase & monetization events

purchase_completed

Send this after validating the receipt with Apple, Google, or Steam. This is your revenue source of truth — treat it with respect.

PropertyTypeRequiredExample
transaction_idstringYes"GPA.1234-5678-9012"
product_idstringYes"com.game.gems_500"
product_namestringNo"500 Gems Pack"
price_usdfloatYes4.99
currency_codestringNo"USD"
storestringYes"apple", "google", "steam"
receipt_validbooleanYestrue
is_first_purchasebooleanNotrue
player_idstringYes"player-uuid"

purchase_refunded

PropertyTypeRequiredExample
transaction_idstringYes"GPA.1234-5678-9012"
product_idstringYes"com.game.gems_500"
refund_amount_usdfloatYes4.99
refund_reasonstringNo"player_request", "fraud"

subscription_started

PropertyTypeRequiredExample
subscription_idstringYes"sub_abc123"
plan_idstringYes"vip_monthly"
plan_namestringNo"VIP Monthly"
price_usdfloatYes9.99
billing_periodstringYes"monthly", "yearly"

subscription_renewed

PropertyTypeRequiredExample
subscription_idstringYes"sub_abc123"
plan_idstringYes"vip_monthly"
renewal_countintYes3
price_usdfloatYes9.99

subscription_cancelled

PropertyTypeRequiredExample
subscription_idstringYes"sub_abc123"
plan_idstringYes"vip_monthly"
cancel_reasonstringNo"too_expensive", "not_using", "switching"
remaining_daysintNo12

Progression events

Scope: these three events are for discrete-levels games only. If your progression model is match-based, soft-progression, or open-world, your tracking plan uses genre-shaped custom events instead.

progression_start

Send when the player begins a level, stage, or any progression unit.

PropertyTypeRequiredExample
level_idstringYes"world1_stage3_level12"
level_namestringNo"Candy Forest 12"
level_indexintNo12
difficultystringNo"normal", "hard", "nightmare"
attempt_numberintNo1
player_idstringYes"player-uuid"

progression_complete

PropertyTypeRequiredExample
level_idstringYes"world1_stage3_level12"
level_namestringNo"Candy Forest 12"
level_indexintNo12
scoreintNo45200
starsintNo3 (0–3)
duration_secondsintNo87
attempt_numberintNo2
items_usedstring[]No["hammer", "extra_moves"]
player_idstringYes"player-uuid"

progression_fail

PropertyTypeRequiredExample
level_idstringYes"world1_stage3_level12"
level_namestringNo"Candy Forest 12"
level_indexintNo12
fail_reasonstringNo"out_of_moves", "time_expired", "died"
progress_percentfloatNo0.72
duration_secondsintNo95
attempt_numberintNo1
player_idstringYes"player-uuid"

Economy events

economy_earn

Send when the player receives virtual currency. Don't fire this on every coin pickup — aggregate per level or action, or your event volume will make everyone sad.

PropertyTypeRequiredExample
currency_typestringYes"coins", "gems", "energy"
amountintYes150
balance_afterintYes2340
sourcestringYes"level_reward", "daily_bonus", "purchase", "ad_reward", "gift"
source_idstringNo"world1_stage3_level12"
player_idstringYes"player-uuid"

economy_spend

PropertyTypeRequiredExample
currency_typestringYes"gems"
amountintYes50
balance_afterintYes200
sinkstringYes"item_purchase", "upgrade", "gacha_pull", "continue", "boost"
sink_idstringNo"booster_hammer"
item_idstringNo"hammer_01"
player_idstringYes"player-uuid"

item_acquired

PropertyTypeRequiredExample
item_idstringYes"sword_legendary_01"
item_namestringNo"Blade of Fire"
item_typestringYes"weapon", "armor", "consumable", "cosmetic"
item_raritystringNo"common", "rare", "epic", "legendary"
acquisition_methodstringYes"purchase", "craft", "drop", "reward"
player_idstringYes"player-uuid"

item_consumed

PropertyTypeRequiredExample
item_idstringYes"health_potion_01"
item_namestringNo"Health Potion"
item_typestringYes"consumable"
contextstringNo"level", "menu", "pvp"
context_idstringNo"world1_stage3_level12"
player_idstringYes"player-uuid"

Player lifecycle events

player_created

Send when a new player account is registered.

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
registration_methodstringYes"email", "google", "apple", "guest"
referral_sourcestringNo"friend_invite", "ad_campaign"
campaign_idstringNo"ua_spring2026"

player_login

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
login_methodstringYes"email", "google", "apple", "token"
days_since_last_loginintNo3

player_level_up

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
new_levelintYes15
previous_levelintYes14
total_playtime_secondsintNo36000

player_deleted

Send when a player requests account deletion (GDPR).

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
account_age_daysintNo120
total_spend_usdfloatNo24.97

Matchmaking & multiplayer events

Scope: these three events are for match-based games. They model the matchmaking and post-match outcome envelope; the genre's progression events (match won/lost, seasons, contracts, transfers) are seeded as custom events.

matchmaking_request

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
game_modestringYes"ranked_1v1", "casual_3v3"
player_ratingintNo1450
queue_regionstringNo"eu-west"

matchmaking_complete

PropertyTypeRequiredExample
match_idstringYes"match-uuid"
game_modestringYes"ranked_1v1"
player_countintYes2
avg_ratingintNo1420
rating_spreadintNo60
queue_duration_secondsintYes12

match_result

PropertyTypeRequiredExample
match_idstringYes"match-uuid"
game_modestringYes"ranked_1v1"
duration_secondsintYes480
winner_idstringNo"player-uuid"
player_resultsobject[]Yes[{"player_id": "abc", "score": 1200, "placement": 1}]
disconnect_countintNo0

Social & guild events

guild_joined

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
guild_idstringYes"guild-uuid"
guild_sizeintNo24
join_methodstringNo"invite", "search", "auto"

guild_left

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
guild_idstringYes"guild-uuid"
membership_duration_daysintNo45
leave_reasonstringNo"inactive", "kicked", "voluntary"

friend_added

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
friend_player_idstringYes"friend-uuid"
sourcestringNo"in_game", "external", "suggested"

gift_sent

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
recipient_player_idstringYes"friend-uuid"
gift_typestringYes"life", "coins", "item"
gift_valueintNo1

LiveOps & seasonal events

live_event_started

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
event_idstringYes"spring_event_2026"
event_namestringNo"Spring Blossom Festival"
event_typestringYes"seasonal", "tournament", "challenge"

live_event_milestone

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
event_idstringYes"spring_event_2026"
milestone_idstringYes"collect_100_flowers"
milestone_indexintNo3
progress_percentfloatNo0.60

live_event_completed

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
event_idstringYes"spring_event_2026"
completion_time_secondsintNo259200 (3 days)
rewards_earnedstring[]No["avatar_spring", "gems_500"]

daily_reward_claimed

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
day_numberintYes7
streak_countintYes7
reward_typestringYes"coins", "gems", "item"
reward_amountintYes100

Moderation events

player_reported

PropertyTypeRequiredExample
reporter_player_idstringYes"player-uuid"
reported_player_idstringYes"other-player-uuid"
report_reasonstringYes"cheating", "harassment", "inappropriate_name"
contextstringNo"in_match", "chat", "profile"

player_banned

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
ban_typestringYes"temporary", "permanent"
ban_reasonstringYes"cheating", "harassment"
ban_duration_daysintNo7 (null for permanent)

chat_message_flagged

PropertyTypeRequiredExample
player_idstringYes"player-uuid"
message_hashstringYes"sha256-abc123..."
flag_reasonstringYes"profanity", "spam", "hate_speech"

On this page