Skip to content
NordBots.

ServerAnalytics

Your ARK chat in Discord both ways, and every event written down.

ServerAnalytics links ARK chat to Discord both ways with no bot to host, and writes every session, death, tame and admin command into one searchable database.

Running a cluster on memory and screenshots is guesswork. ServerAnalytics keeps the books instead. Real playtime split from idle time, every death with the name of whoever caused it, tames, tribe moves, building, raids, and every single thing your admins do. It all lands in SQLite with no setup, or in one shared MySQL database that your website, your Discord bot or a spreadsheet can read straight out of. It also puts your in game chat in Discord and brings Discord straight back into the game, and you host nothing at all to get it.

Supported Features

  • Chat both ways with no bot to host: your players talk in game and it shows up in Discord, and anything typed in that channel lands in the game. You do not run a bot, a relay, a script or a database for it. You press one invite link, run two commands in your own Discord, and it is on.
  • Pick exactly which chat leaves the server: Global, Tribe, Alliance and Local each have their own switch. Global is on and the private ones are off, because putting tribe talk in a public channel is a betrayal of the people typing it. Turn one on only when your players know.
  • Commands stay out of it: HideCommands keeps lines like /mystats out of Discord, so your channel reads like a conversation and nobody watches how your staff work.
  • Write the chat line however you like: you build the Discord line out of pieces. The player, their tribe, the map, the mode, the server, how many are online, and a live timestamp that shows in each reader's own time zone. Seven Discord clock shapes to pick from, including one that counts up on its own.
  • Chat saved and searchable: StoreChat writes every line to your database with a time, a name and an EOS id against it. The day somebody reports harassment you can read exactly what was said, instead of asking for screenshots.
  • One channel for a whole cluster: turn cluster chat on and a line said on one map reaches every other map through Discord, so nine servers feel like one place without a single extra thing to install.
  • Safe by default: a player cannot ping your whole Discord from in game, markdown they type is shown as they typed it instead of reformatting your channel, and a flood is capped per minute so one person cannot bury the chat.
  • Real playtime, not login time: I split the time a player was doing something from the time they stood still, so an hour parked in a base does not read like an hour out fighting.
  • Sessions that live through a crash: every open session gets a heartbeat, so when a server dies the session closes at the last beat and nobody is handed hours they never played.
  • Every death with a name on it: who fell, who did it, and whether it was a player, a creature or the world, plus player damage rolled into short windows so a raid is a handful of rows instead of a million.
  • The whole tribe story: joins, leaves, kicks, merges and renames with the time of each, and playtime sliced per tribe, so a veteran walking in does not inflate a tribe's total overnight.
  • An audit page for your staff: every tracked admin command, creative mode going on and off, and every command that comes in over RCON, with an optional Discord ping the moment creative starts.
  • Watch mode for the one you suspect: point me at a player for a set number of minutes and I write down every hit, kill, tame, craft and command in full. It stops on its own and nobody else pays for it.
  • Raids as one story: I open a raid when a tribe starts hitting another tribe's build and close it once things go quiet, so you read one timeline instead of ten thousand hits.
  • Built to be read by a website: 21 plain tables under a prefix you pick, plus three read only views on MySQL for player totals, player combat and tribe time, so a bot never has to know my table shapes.
  • Never on the game thread: writes go to a worker thread behind a queue, and if the database goes away I park the rows in a file on disk and put them back the moment it answers again.
  • You decide what is kept: each kind of row has its own day count in the config, and once a night at an hour you choose I quietly sweep out anything older.
  • One command to forget somebody: a player asks to be wiped and a single console line clears everything I hold on them, for good, so you can answer that request in a minute.
  • Your words, your language: the config picks the language file, so every line I say in game and in the console reads the way you want, and the file is plain text you can edit or pass to another owner.

Console & RCON Commands

All of these answer from the server console and over RCON. Put --json on the end of Status when a bot is reading the answer instead of a person.

Command What It Does Where
ServerAnalytics.Reload Read the config and the language file again, with no restart. Both
ServerAnalytics.Status Show the license, the database health, the queue, which watchers are on, and what has been written since boot. Both
ServerAnalytics.TestDiscord Send a test post to both webhooks so you can check them before a big night. Both
ServerAnalytics.Player <eos id> Print one player's card out of the books, straight into ArkApi.log. Both
ServerAnalytics.Top <board> Print a leaderboard. The boards are time, kills and tames. Both
ServerAnalytics.Watch <eos id> <minutes> [why] Start close watch on one player for that many minutes, with a note about why. Both
ServerAnalytics.Unwatch <eos id> Stop watching that player early. Both
ServerAnalytics.Watching List who is under close watch right now and how long each one has left. Both
ServerAnalytics.Forget <eos id> --confirm Wipe everything I hold on one player. This cannot be undone, which is why it asks you to confirm. Both
ServerAnalytics.RollUp Add up today and yesterday into the daily tables right now, instead of waiting for the nightly pass. Both

Player Commands

All three names live in config.json, so rename one if another plugin already took it, or set it to blank to switch it off. None of them read the database on the game thread, so a busy leaderboard cannot lag your server.

Command What It Does
/mystats Their own page: time on the server, how many visits, how much of it was idle, this visit so far, and their kills and deaths.
/tribestats The tribe page: time logged under the tribe name, how many members it came from, and the tribe's player kills and losses.
/top The leaderboard. Plain /top is time played, and /top kills and /top tames are the other two boards.

Permissions

No permission plugin needed. The three player commands are open to everybody, and every staff command runs from the server console or RCON only, which is trusted ground already. There is no Permissions block in my config to fill in.

Config

To see every configuration option, visit our docs. To edit your config files the easy way, open our configuration editor.

Requirements

  • AsaApi v2.01 or newer
  • A Windows server running ArkAscendedServer through the AsaApi loader
  • A license key from NordBots.cc, pasted into config.json under License and then Key
  • HooksDoNotThrow set to true in the AsaApi config next to AsaApiLoader.exe
  • MySQL (optional, works without it, since SQLite is built in and needs no setup)
  • A Discord webhook (optional, works without it)
  • For chat both ways: nothing to host. Invite my bot at https://discord.com/oauth2/authorize?client_id=1540502138164215909 and you are done

Installation

  1. Unzip the download and put the ServerAnalytics folder inside ArkApi/Plugins/. Keep the folder name as it is, because it has to match the DLL inside it.
  2. Open ServerAnalytics/config.json and paste your license key under License and then Key.
  3. Fill in ClusterName, ServerName and Season in the Cluster block. On a single map you can leave them blank and I work them out for you.
  4. Open the AsaApi config.json that sits next to AsaApiLoader.exe and set HooksDoNotThrow to true. This one matters. Without it, a game function renamed by a patch can take the whole server down instead of switching one of my modules off.
  5. Start the server through AsaApiLoader.exe and watch ArkApi.log for the line that says I loaded.
  6. Run ServerAnalytics.Status from the console. Every watcher in that list should say on.
  7. Want your chat in Discord? Set Wire and then Enabled to true, invite my bot with https://discord.com/oauth2/authorize?client_id=1540502138164215909, then run /link with the code from your account page and /channel lane:chat on the channel you want. That is the whole setup. There is nothing to host and nothing to keep running.

Support & Help

Setting up MySQL, or want a hand pointing your website at my tables? Come and find me on Discord and I will walk you through it: https://discord.gg/8GGaEzWk9p

Frequently Asked Questions

What does ServerAnalytics do?

ServerAnalytics keeps the books for your ARK server, or for a whole cluster. It records sessions and real playtime, deaths and damage, tames and dino losses, tribe joins and leaves, building and raids, crafting, and every admin action. All of it goes into one database you can search, so the answer to what happened last night is a query, not an argument.

How do I install ServerAnalytics?

Unzip the download and drop the whole ServerAnalytics folder into ArkApi/Plugins/, keeping the folder name so it matches the DLL. Paste your license key into config.json, set HooksDoNotThrow to true in the AsaApi config, then restart the server through the loader. Run ServerAnalytics.Status from the console and every watcher should say on.

Can it help me catch a cheater?

That is what watch mode is for. Give ServerAnalytics a player id and a number of minutes and I write down every hit, kill, tame, craft and command that player makes, in full detail, until the clock runs out. Everyone else stays on the cheap path the whole time, so the server barely notices, and the watch switches itself off so you cannot forget it.

Do I need a MySQL server for it?

No. ServerAnalytics uses SQLite by default and that needs no setup at all, so a single map server is running the moment you start it. Switch Database.Mode to mysql when you want every map in the cluster writing into one place, or when a website needs to read the numbers live.

Do I have to host a bot for the Discord chat?

No, and that is the whole point. Every other way of doing this asks you to run a bot, a relay or a script somewhere and keep it alive. ServerAnalytics asks you to press one invite link. My bot is already running, your server talks to it on its own, and if it ever goes quiet your chat still reaches Discord. Invite it at https://discord.com/oauth2/authorize?client_id=1540502138164215909.

Can I keep tribe chat private?

Yes, and ServerAnalytics keeps it private unless you say otherwise. Global, Tribe, Alliance and Local are four separate switches and only Global starts on. Your players' private talk stays private until you decide it should not, and HideCommands also keeps their command lines out of the channel.

Will it slow my server down?

ServerAnalytics never touches the database on the game thread. Everything queues up and a worker thread does the writing, the hot paths in a fight are kept to a couple of cheap reads, and raid damage is rolled into short windows so a big raid writes a few rows rather than millions. If the database stops answering I park rows on disk instead of holding the game up.

Was any AI content used in the making of this?

The source code itself was fully created by myself. I do use ChatGPT occasionally to generate product images, and I do use ChatGPT to generate the website descriptions. I do this because I don't speak native English perfectly. I am natively from Sweden, so I use GPT to help translate and write product descriptions. I also will sometimes use GPT to write better English logs. Majority of my Free plugins are open source, so you can review the code yourself and freely fork and edit it to your liking.

All versions

  • v0.0.24Aug 22, 2026
    • ServerAnalytics-v0.0.24.zip
  • v0.0.21Aug 22, 2026
    • ServerAnalytics-v0.0.21.zip
  • v0.0.18Aug 22, 2026
    • ServerAnalytics-v0.0.18.zip
  • v0.0.16Aug 22, 2026
    • ServerAnalytics-v0.0.16.zip
  • v0.0.12Aug 18, 2026
    • ServerAnalytics-v0.0.12.zip
  • v0.0.11Aug 17, 2026
    • ServerAnalytics-v0.0.11.zip
  • v0.0.8Aug 9, 2026
    • ServerAnalytics-v0.0.8.zip
  • v0.0.7Aug 4, 2026
    • ServerAnalytics-v0.0.7.zip
  • v0.0.6Aug 4, 2026
    • ServerAnalytics-v0.0.6.zip