In-house, for our studio's games

One backend for every game we ship.

appgage gives each of our titles remote config, analytics, purchases and attribution through a single SDK. A new game plugs in instead of growing a backend of its own, and every number lands in one place we own.

Sign in

Studio team only, by invitation.

main.gd
func _ready() -> void:
    # Install, session and this player's config.
    var config := await Appgage.bootstrap()
    var reward: int = config.get_int("daily_reward", 100)

    Appgage.track("level_complete", {"level": 12})

func _on_buy_pressed() -> void:
    # Verified with the store before it is granted.
    await Appgage.purchase("coins_500")
Using the appgage SDK from a Godot script

What a live game needs, built once

The services every title used to rebuild or rent, run by us for all of them.

Remote config

Typed parameters with targeting and versioned releases per environment. Tune a live game without shipping a build.

Analytics

Events, sessions, retention and funnels, stored in our own Postgres instead of a third-party SDK.

Purchases

App Store and Google Play purchases verified on the server, entitlements granted once, refunds tracked, ad revenue alongside.

Attribution

Installs and revenue forwarded to Tenjin, so campaign ROAS uses the same numbers as our dashboards.

One SDK for every title

A typed Godot SDK and one API, shared by every game we make.

Keys per platform and environment

Development and production stay apart, and any key can be revoked.

Money only after the store agrees

Nothing is granted until Apple or Google has verified the purchase.