Custom events
Count the things you want to know about your own game. They show up on your game's Analytics tab, per day, per key.
Counts one thing that happened, for your own analytics. Counts only — there is no value and no way to attach one. You see, per day, how many times each key happened, which is what answers 'does anyone ever find the boss' and 'is the shield being used'. Calls are batched into a flush every 5 seconds, so firing one from a gameplay branch inside your loop costs nothing.
The cap is on keys that are ACTIVE, counted across every player and every day. Name the event, not the instance — level_complete, never level_7_complete. event('level_' + n) fills all 20 slots in 20 levels and everything after is dropped until a slot is free, so bucket your levels. Keys that were refused are named back to you on the Analytics tab. Never put a player's name, a score or anything about a person in a key — it is stored as a plain label on a public counter.
Retire any key from your game's Analytics tab: it stops counting against the 20, and every count it recorded stays exactly where it is, still visible in past date ranges and marked retired. Nothing is deleted — that is a different action and this is not it. A key that records nothing for 90 days goes quiet by itself and stops counting too, which is what clears the dead vocabulary of a rewritten game. Either way, if your game records the key again and a slot is free, it comes straight back. "Start fresh" retires the lot in one step for a redesign.
Excess calls are dropped and the SDK warns once per key on the console. Do not call this every frame: a counter fired from a render loop measures your frame rate, not your game, and it buries every other number on your Analytics tab. Fire it at the moment the thing actually happens.

