GsValheimStatsClient

v0.2.12·Updated 2026-07-18

Client companion for the gs dashboard: posts your Valheim combat (weapon & boss damage, DPS, hardest hit), kills, crafts, materials, skills, trophies and per-life deaths. Multiplayer-aware. Pairs with

About this mod Author’s original text

GsValheimStatsClient

A client companion that posts your personal Valheim stats to an HTTP endpoint - by default the self-hosted gs dashboard, but it'll post to any URL you point it at, so you can ingest your stats however you like.

Pairs with the server-side GsValheimStatsEmitter. Both POST to the same endpoint; the dashboard merges them.

Ingesting the data into your own dashboard? See the Data format & self-hosting wiki for the complete payload schema, key conventions, and merge rules.

What it tracks

Read from your own game (the things only the client knows), accumulated and persisted across sessions:

  • Profile counters - Valheim's own PlayerProfile stats: kills, deaths, builds, crafts, jumps, distances (walked / run / sailed / air), trees chopped, items picked up,...
  • Skills - every weapon/utility skill level
  • Per-creature kills - what you're killing and how much
  • Crafts - which items you've crafted (+ counts)
  • Materials gathered - Wood, Stone, ores,...
  • Weapons - per weapon category: total damage, kills, hardest single hit, biggest total swing (cleave/AoE)
  • Specific weapons - same, per actual item (Bronze Sword vs Iron Sword)
  • Boss damage + DPS - your damage to each boss and your active engagement time (DPS = damage / fightSec), incl. fire/poison damage-over-time credited to whoever applied it
  • Trophies - collected trophies
  • Deaths - cause (incl. felled-by-your-own-tree, Deathsquito), biome, life length, kills before dying
  • Multiplayer-aware - whichever client owns a creature records the damage every player deals to it, so combat totals are exact across a group
  • Boss self-damage - damage a boss takes from the world (lava / its own fire / falls), with no player to blame

Setup

  • Install via r2modman (depends on denikson-BepInExPack_Valheim).
  • Launch the game once to generate the config, then edit

BepInEx/config/net.cproudlock.gsvalheimstatsclient.cfg:

[General]

World = vhserver3 # must match the server's world name

EmitIntervalSeconds = 120 # how often it POSTs

[Ingest]

Url =

Token =

  • Restart Valheim. It POSTs every EmitIntervalSeconds (and on death).

Stats are filed under World, so set it to whatever you want to group your runs by (typically the server's -world name).

Ingesting the stats yourself

The mod just does an authenticated POST of a JSON snapshot. You don't need the gs dashboard - point Url at anything that speaks HTTP.

Request:

  • POST
  • Authorization: Bearer (omitted if Token is blank)
  • Content-Type: application/json

Payload (source: "client"):

{

"schemaVersion": 1,

"game": "valheim",

"source": "client",

"reporter": "Erebus",

"world": "vhserver3",

"emittedAtUtc": "2026-06-09T18:00:00Z",

"snapshotIdLocal": "5e2f...",

"players": [{

"name": "Erebus",

"platformId": "-1285113746",

"kills": 312, "bossKills": 1, "deaths": 4,

"longestLifeSec": 7200, "bestKillsBeforeDeath": 150,

"stats": { "vh_EnemyKills": 312, "vh_Builds": 540, "vh_DistanceSail": 4200 },

"skills": [{ "skill": "Knives", "level": 42 }],

"creatureKills": [{ "creature": "$enemy_greydwarf", "kills": 140 }],

"crafts": [{ "item": "$item_club", "count": 3 }],

"materials": [{ "material": "Wood", "amount": 3400 }],

"weapons": [{ "weapon": "Knives", "damageDealt": 493, "kills": 29, "hardestHit": 79, "biggestSwing": 121 }],

"weaponItems": [{ "item": "$item_knife_bronze", "damageDealt": 400, "kills": 25, "hardestHit": 79 }],

"boss": [{ "boss": "Eikthyr", "damageDealt": 1450, "fightSec": 95 }],

"pickups": [{ "item": "$item_trophy_boar", "count": 11 }]

}, {

"name": "Pridetoes",

"weapons": [{ "weapon": "Bows", "damageDealt": 220, "kills": 3, "hardestHit": 60, "biggestSwing": 60 }],

"boss": [{ "boss": "Eikthyr", "damageDealt": 700, "fightSec": 95 }]

}],

"deathEvents": [{

"playerName": "Erebus", "killer": "tree", "biome": "BlackForest",

"posX": 120, "posY": 30, "posZ": -44, "lifeSec": 1800, "killsThisLife": 40,

"tsUtc": "2026-06-09T17:30:00Z"

}],

"

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file. In multiplayer, the host and every client need the same mods installed.

Dependencies

Install these first, or the mod will not work:

denikson-BepInExPack_Valheim

File & checksum

Filename
GsValheimStatsClient-0.2.12.zip
File size
26.3 KiB