Live Events

Live Events

Live Events lets your team author scheduled in-game events with rewards - winter sales, weekend bonuses, PvP seasons - and ship them to players without a rebuild. Each event is claimable once per player, enforced server-side.

Studio tier
Live Events is included on the Studio, Growth and Enterprise plans. See pricing for details.

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

  1. Click New event.
  2. Enter a key. Use lowercase, snake_case, and don't change it after release - the SDK and analytics group by key.
  3. Enter a name in the project's default language. You can auto-translate the rest with one click (see below).
  4. Pick start / end dates. Leave end blank for "evergreen" events.
  5. Add a rewards JSON payload (any shape your game can parse).
  6. 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.

Back to docsKalmForge SDK · v1.0.1