> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hyperx.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# LiveOps

> Use rankings, coupons, game logs, operation content, and push registration.

LiveOps features help you operate the game after launch. Most settings are created and published from Console, then read or updated from Unity through the SDK.

## Rankings

```cs theme={null}
await player.SubmitRanking(
    "arena",
    score: 1500,
    metadata: new { stage = 3 }
);

var top = await HyperX.Core.LiveOps.Rankings.Top("arena", limit: 50);
var me = await player.GetMyRanking("arena");
var aroundMe = await player.GetRankingAroundMe("arena", limit: 5);
```

Create ranking keys in Console and keep them consistent with client code.

Operators can configure ranking reward rules in Console LiveOps, preview recipients, then send reward mail. Reward delivery results and ranking scores can be exported as CSV. Players receive reward mail through the existing `Core.Mail` flow.

## Coupons

```cs theme={null}
var coupons = await HyperX.Core.LiveOps.Coupons.List(limit: 20);

var redemption = await player.RedeemCoupon("WELCOME");

var reward = redemption.RewardPayload;
```

Coupon rewards are returned as JSON payloads. Apply currency, inventory, or mail rewards according to your game policy.

## Game Logs

```cs theme={null}
await player.InsertGameLog(
    "stage_clear",
    new { stage = 3, elapsed = 92 }
);
```

Use consistent event names and keep payloads limited to values you need for operations or analysis.

## Operation Content

Notices, events, and policies are created and published from Console. SDK calls return only content that matches publish status, schedule, locale, and country.

```cs theme={null}
var notices = await player.Notices(
    locale: "en",
    country: "US",
    limit: 10
);

var events = await player.Events();
var policies = await player.Policies();
```

## Push Device Registration

After your app receives an FCM registration token or APNs device token, register it with HyperX.

```cs theme={null}
await player.RegisterPushDevice(
    deviceToken,
    HyperX.PushPlatform.Android,
    optIn: true,
    locale: "en-US",
    timezone: "America/Los_Angeles"
);
```

Use `HyperX.PushPlatform.Android` or `HyperX.PushPlatform.Ios` for `platform`. You can still pass a string for custom values. If a player opts out, register with `optIn: false`. See [Provider Integrations](/guide/en/dotnet/provider-integrations) for credential setup.

## Groups

```cs theme={null}
var group = await player.GetGroup();
```

Groups are created in Console and assigned to users. Use them for group rankings, events, and operational segmentation.
