Overview
Open Project → Live Events in your dashboard. Each event has:
- A stable key (e.g.
winter_2026) the SDK uses to identify it. - A name and description, with optional translations per language.
- Optional banner image.
- Schedule - start and end ISO timestamps (UTC).
- Rewards JSON - a free-form payload the SDK passes back to your game on claim.
- Targeting - everyone, a segment (countries / languages / platforms), or a rollout percentage.
- Status - draft, active, archived.
Creating an event
- Click New event.
- Enter a key. Use lowercase, snake_case, and don't change it after release - the SDK and analytics group by key.
- Enter a name in the project's default language. You can auto-translate the rest with one click (see below).
- Pick start / end dates. Leave end blank for "evergreen" events.
- Add a rewards JSON payload (any shape your game can parse).
- Set status to active when you're ready to ship.
Scheduling
Start/end times are stored in UTC. The SDK only returns events whose current time falls inside the window. There's no client clock to fool - the comparison happens on the KalmForge server.
Tip: schedule events ahead of time. Set the start date a week out, mark active, and the event lights up on its own.
Rewards JSON
Rewards are a free-form JSON object - KalmForge doesn't interpret them. That keeps your inventory shape entirely in your game's hands.
A typical shape:
{
"coins": 500,
"gems": 10,
"items": [
{ "key": "winter_hat", "qty": 1 },
{ "key": "scroll_of_xp", "qty": 3 }
]
}Whatever you put in, the SDK returns it verbatim as rewards_json on a successful claim - your game decides how to grant it.
Translations & auto-translate
Open the event editor and scroll to the Translations section. Every project language gets its own name + description input.
Click Auto-translate from {default} to fill every language at once using Lovable AI. Translations are then editable - nothing is locked.
Targeting & rollout
- All players - every active install sees the event.
- Segment - comma-separated lists of countries (ISO codes), languages, or platforms.
- Rollout % - KalmForge hashes the player id and only shows the event if the hash falls under your %, so a player either always sees it or never does.
Claims tracking
Each (event, player) pair has at most one claim row, enforced by a unique constraint at the database level. Spam-tapping the claim button, re-installing the game, or running on a second device - none of it can produce a second claim.
Open the event detail to see total claim count and the per-day breakdown.
Tier limits
There is no hard cap on the number of events. Each project has a storage quota (banner images, etc.) that's tracked under Usage.