Your server is running. The panel says so, the log is scrolling, and Web Console is reporting a map load like nothing's wrong. But the in-game community browser has never shown it. Not once. Meanwhile the four people you promised a game to are sat in Discord refreshing filters at you.
Nine times out of ten this is the Game Server Login Token, and more specifically it's a token that got generated against the wrong Steam App ID. Sandstorm boots perfectly happily without a valid one: it just never advertises itself, so the server exists and nobody on earth can find it. Here's how to tell that apart from the handful of other things it might be, and how to fix the common one.
First, prove the server is actually up
Worth thirty seconds before you start changing settings, because "invisible" and "dead" look identical from the browser.
Open Web Console on your service in the LOW.MS Control Panel. On our Sandstorm servers that view is wired straight to Insurgency\Saved\Logs\Insurgency.log, so what you're reading is the game's own output and not a wrapper's summary of it. You want a scenario load, then the server settling into a steady rhythm of log lines. Log Viewer gives you the same file if you'd rather scroll the whole thing back.
Then get somebody to join it directly:
- In Sandstorm, go to Settings > Game and turn on Enable Console.
- Press the
~key at the main menu. - Type
connect <your-ip>:<your-game-port>and hit enter.
Your IP and game port are both on the service page. Use the game port: on our Sandstorm servers the query port is the game port plus one and RCON is the game port plus two, so a service sitting on 27115 answers queries on 27116 and takes RCON on 27117. Mixing those up is its own small genre of support ticket.
Did the direct connect work? Then everything about the server is fine. Ports open, process healthy, scenario loaded, EAC happy. What's broken is only the advertising, a far smaller problem than the one you thought you had five minutes ago.
The token has to be made for App ID 581320
Right. The actual fix.
Sandstorm exists as three separate things on Steam, and this is exactly where it goes wrong:
| App ID | What it is |
|---|---|
581320 |
Insurgency: Sandstorm, the game. This is the one your token needs. |
581330 |
Insurgency: Sandstorm Dedicated Server, the SteamCMD tool your server is installed from |
887860 |
The Community Test Environment |
Everyone's instinct is to reach for the dedicated-server app, because that is obviously the thing running on the server. New World Interactive's own admin guide is blunt about it though: the launch flag is -GSLTToken=XXX and you "use app steamid 581320". A token minted against 581330 is a completely valid Steam token that will never authenticate a Sandstorm server, and neither the panel nor the log will tell you which app a token belongs to. That's what makes this one so sticky. There's no error. There's just nothing.
Two other ways a good token quietly dies:
- It expired before it was ever used. Steam retires tokens that no game server has ever successfully logged in with. So if you made one a few days back, spent that time fighting a server that wouldn't start, and never got a clean login out of it, treat it as dead. Valve doesn't publish the exact window and I wouldn't try to cut it fine. Regenerate and move on.
- You reset your Steam password. Steam regenerates every one of your game server tokens when you do that, and it breaks every server you own at the same moment. Several went dark on the same day and you can't think why? Start there.
You need a unique token per server, too. Pasting one token into two Sandstorm services doesn't get you two listed servers, it gets you an argument between them.
Making the token
Head to Steam's Game Server Account Management page, signed in as the Steam account that owns Sandstorm.
Steam has conditions before it will issue you anything: no community bans or account locks, the account mustn't be limited, it needs a qualifying registered phone number attached, and it has to own the game. The phone number is what most people trip over. On the upside you can hold up to a thousand of these accounts: there's no reason to be sparing.
Create a new game server account with:
- App ID
581320 - Memo: anything you'll still recognise in six months. "LOW.MS Checkpoint EU" beats "test2".
Steam hands back a login token, a long string of hex. Copy it.
Where it goes in our panel
The token lives in Service Settings on your Sandstorm service, in a field labelled GSLT Token. Paste it in. Save.
It's a plain text box with no validation behind it, and honestly that's a big part of why the wrong-app problem survives as long as it does. The panel will accept 581330's token, a typo, or half a token, and say nothing about any of them. Check what you pasted has no leading space and no trailing newline, copying from Steam's page sometimes brings one along for the ride.
Saving the field appends -GSLTToken=<your token> to the launch line. You can confirm that yourself in Commandline Manager, which is worth a glance if you've ever customised your launch parameters: both of our predefined Sandstorm command lines carry the token through, but a hand-rolled one might have dropped it.
Then restart the service. Sandstorm reads the token at startup and never again, so saving the field without a restart changes precisely nothing.
Give it a few minutes before you decide it hasn't worked. Steam's master list isn't instant, and the in-game community browser lags behind that again.
When it's on us rather than on you
There's one failure mode where your token is completely fine and the server still refuses to list. That one's ours.
Sandstorm doesn't only talk to Steam. It also authenticates against New World Interactive's own backend, and that handshake goes out through the game's bundled HTTP library rather than through Windows' own networking stack. When that library can't resolve NWI's hosts, the whole advertise collapses before your token is ever examined. The server still boots, still binds its ports, still brings up the Steam side under 581320. It simply never turns up anywhere.
In Log Viewer, it reads like this:
DsDsmCommunication/Handshake ... CURLE_COULDNT_RESOLVE_HOST
SDK_DSM_COMMUNICATION_CHANNEL_FAILED (127)
STEAM (NWI): Steam connection failure
FOnlineAsyncTaskSteamCreateServer bWasSuccessful: 0
If those lines are in your log, stop working on your token. Nothing you do to it will help: the handshake fails long before the token gets checked. Restart the service once, because that particular resolver error is sometimes just a blip. If it comes straight back, open a ticket quoting CURLE_COULDNT_RESOLVE_HOST. It's a name resolution problem on the node, we fix it from our side, and there's no lever for it anywhere in the panel.
The second token you keep reading about doesn't exist
You'll find guides insisting Sandstorm needs a second token from a stats site before it'll appear in the browser. It doesn't. Chasing that will cost you an evening.
-GameStats is an opt-in to NWI's stats and progression system. It requires a working GSLT and an unpassworded server, which is very probably where the confusion came from, but it has no bearing on whether your server lists. Our panel exposes it as an Enable Game Stats tick box in Service Settings. Leave it off until listing works, then switch it on if you want your regulars earning XP.
Worked through all that and still invisible? Open a ticket with your service ID, the App ID you generated the token against, and the last fifty lines out of Log Viewer. That's genuinely enough for us to give you a real answer on the first reply instead of a checklist. And if you're still shopping around, the hardware and regions we run these on are over on Insurgency: Sandstorm server hosting.