Verified
Your chat in Discord, and every hour, death and item written down.
ServerAnalytics puts ARK chat in Discord both ways with no bot to host, and logs every session, death, tame, admin command and every item a player carries.
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, what every player is carrying, 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.
/mystats out of Discord, so your channel reads like a conversation and nobody watches how your staff work./bag for their own and it answers on the spot. Staff can open anyone, whether that player is online or logged off since June.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.Bag <eos id> |
Read what one player is carrying. Live if they are online, and their last count if they are not. | Both |
ServerAnalytics.Bag tribe <team id> |
Add up everything one tribe has stashed across every bag and box I have counted. | Both |
ServerAnalytics.Holds |
Show how hard the inventory counting is working right now, and the bags and boxes that changed last. | 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 |
All four 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. |
/bag |
What they are carrying right now, biggest pile first. Add a number like /bag 20 for more lines. It reads out of the count I already hold, so it answers on the spot. |
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.
To see every configuration option, visit our docs. To edit your config files the easy way, open our configuration editor.
config.json under License and then KeyHooksDoNotThrow set to true in the AsaApi config next to AsaApiLoader.exeServerAnalytics folder inside ArkApi/Plugins/. Keep the folder name as it is, because it has to match the DLL inside it.ServerAnalytics/config.json and paste your license key under License and then Key.ClusterName, ServerName and Season in the Cluster block. On a single map you can leave them blank and I work them out for you.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.AsaApiLoader.exe and watch ArkApi.log for the line that says I loaded.ServerAnalytics.Status from the console. Every watcher in that list should say on.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.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
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.
Can I see what a player has in their bag?
Yes. Switch Track then Inventory on and ServerAnalytics keeps a live count of what every player carries, plus every box, forge and dino that somebody opens. A player types /bag for their own. From the console you run ServerAnalytics.Bag with a player id for anyone, online or long gone, and ServerAnalytics.Bag tribe adds up a whole tribe at once. It ships switched off, so read the Inventory block in the config before you turn it on.
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. Inventory counting is paced the same careful way. It looks at a few bags a second, skips anything the game says has not changed, and quietly does less when a second runs long, so a hundred players sorting chests costs you a slower count and not a stutter.
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.
Sign in to leave a review
Sign InNo reviews yet
Be the first to share your experience with this resource.
No version history available
The creator hasn't published version updates yet.