Faucet
A faucet is any way currency enters the economy. Examples:- A dungeon clear that rewards 500 gold.
- The “daily login” bonus of 50 gems.
- A quest reward of 200 gold and a rare gem.
- A real-money purchase that grants 1,000 gems (yes — IAP is a faucet too).
- A refund or compensation from customer support.
currency_earned event:
source field is free-form (your names), but be consistent. dungeon_reward and dungeon_clear will be treated as different faucets on your dashboard.
Sink
A sink is any way currency leaves the economy. Examples:- Buying a sword in the shop for 2,000 gold.
- Upgrading a hero for 500 gems.
- Paying 100 gold to repair a broken weapon.
- Skipping a timer with gems.
- Converting soft currency into hard currency (this is a sink for gold and a faucet for gems).
currency_spent event:
Why the balance matters
A game that only faucets — where players earn currency faster than they can spend it — has an inflation problem. Three things will happen, in order:- Currency stops feeling scarce. Early players don’t think about what to buy; they just buy everything.
- Late-game players run out of things to spend on. They sit on massive piles of gold with no use for it.
- When you release a new premium item, late-game players buy it instantly with the stockpile they already had — so your revenue per player drops.
Worked example: Origins of Lume
Imagine a hypothetical game, Origins of Lume. Each player:- Clears 4 dungeons per day, earning 500 “lumens” (soft currency) per clear = 2,000 lumens/day faucet.
- Gets a 200-lumen daily login = 200 lumens/day faucet.
- Average total faucet per player per day: 2,200 lumens.
- Spends 1,200 lumens/day on hero gear upgrades.
- Spends 300 lumens/day on consumables (potions, revives).
- Average total sink: 1,500 lumens/day.
How to instrument, concretely
- Every time currency enters a player’s balance, log
currency_earnedincluding IAP grants. A missed faucet = false deflation signal. - Every time currency leaves, log
currency_spent. Include the sink name. - Always send
balance_after. This is how we detect ledger drift — if your events say a player earned 100 and spent 50 butbalance_aftershows +40, something is unlogged. - Use consistent
sourceandsinknames.quest_rewardeverywhere, not sometimesquest_completeand sometimesquest_bonus. - Log every currency separately. Gold, gems, event tokens, raid coins — each gets its own
currency_type.
Common mistakes
- Forgetting small faucets. That 10-gold “first kill of the day” bonus looks trivial, but across a million players it’s the difference between healthy and inflationary.
- Double-counting refunds. If you refund a purchase, log one
currency_spentreversal — not both a spend cancellation and a new faucet. Pick one pattern and stick with it. - Bundling currencies. If a starter pack grants 100 gems and 5,000 gold, log two
currency_earnedevents, not one with a composite amount. - Logging sinks before the spend actually clears. If a purchase fails, don’t log the sink. Log it on success only.
- Using the same
sinkname for different mechanics.shopis too coarse. Preferweapon_shop,hero_upgrade,timer_skip, etc. — you’ll want the breakdown later.

