August 6, 2026
Microsoft Store publishing with a package Microsoft signs for you, a Discord bot that shows how many players are online, webhooks that push events to your own services, and a live reading of your game
Microsoft Store Publishing Integration
NEW FEATURE: Your launcher can now be published on the Microsoft Store, under your own Partner Center account and your own brand. A new Microsoft Store tab under Integrations walks you through the submission and hands you every value the Partner Center form asks for, ready to copy.

Players find your launcher where they already look for software, and Windows installs and updates it like any other Store app. The Partner Center account is yours, so the listing, the reviews and the payouts stay with you.
Microsoft accepts two kinds of product. The tab sets up the recommended one today, and shows the other, where the Store points at the installer we host for you, as coming soon.
Publish Store package (MSIX)
Your launcher is packaged as an .msix file.
You upload it in Partner Center and Microsoft signs it during certification, so there is no code signing certificate to buy and no URL to host. Updates are delivered by the Store, and the launcher's own updater steps aside when it detects it is running from a Store package.
Enter the three identity values Microsoft assigns when you reserve your app name, save, and deploy once. From then on every deploy builds an .msix alongside the usual installer, downloadable straight from the tab.
Publishing on the Store needs a Partner Center account. It is free to create and free to publish with, but identity verification can take several days, so start it before the day you plan to submit.
Full guide: Publish to the Microsoft Store. What certification checks: Store Requirements.
Discord Bot Integration
NEW INTEGRATION: A Discord Bot tab under Integrations publishes a live counter into your own Discord server, so your community sees how many people are online without leaving Discord. The number comes from the launcher itself: every copy sends a heartbeat, so it reflects who is actually there right now.

Connect Discord, add the bot to a server, publish a counter. A preview beside the form shows exactly what will land in your server as you change the options.
What it counts
Online users (launcher), people with your launcher open, playing or not
Online users (app), people who are on that app in the launcher
Playing now, people actually running the app
Total users, everyone who has ever opened the launcher
Where it shows
A channel name in your sidebar, Online Users: 104, updated every 6 minutes. Or a message in a text channel, an embed with the app icon and a live timestamp, updated every minute. The channel name is the slower of the two because Discord only allows two renames per channel every ten minutes.
The counter is written in whichever of the platform's twelve languages your community reads, so it can just as easily say Usuarios online: 104. A custom heading replaces the label entirely.
A launcher can publish up to 5 counters, one per channel. Deleting one cleans up after itself: a channel the bot created goes with it, and a channel that was already yours gets its original name back.
The bot asks for four permissions, and none of them let it read what anybody says. The counter publishes a number and nothing else: no player names, no account details, no sessions. Your Discord account is used only to list the servers you administer, and no token is stored.
Full guide: Discord Bot.
Desktop Launcher
Live Status
NEW FEATURE: The space next to the Play button can now carry a live reading of your game: how many players are connected, whether your servers are up, or a short label you write. It reads from our own analytics with nothing to set up, or from a JSON endpoint you already host.

A new Live Status section appears in the Launcher Builder, under Buttons, right below the environment selector toggle. It is configured per app, and it updates without republishing the launcher.
Using our analytics
The platform already counts live sessions, so this mode needs no endpoint of your own. You pick a metric and you are done:
Players with this app open
Players in game right now
Everyone with the launcher open, across every app in the launcher
Turning this mode on is also what makes the number public. While your app is in any other mode, the endpoint that serves it answers 404, exactly like an app that does not exist.
Using your own endpoint
For numbers only you have, such as players per server or a maintenance window, point the launcher at a JSON endpoint you host. It reads the usual keys first, so this already works:
If your endpoint has another shape, give it a dotted path (data.stats.playerCount) instead of building a new endpoint. The URL also accepts {environment}, {environmentId} and {appId}, substituted before every request, so one URL serves Production and Staging without duplicating the configuration.
The launcher polls between 15 and 3600 seconds, gives each request 5 seconds and reads at most 64 KB.
How it looks



You write the templates and pick the colors. The online template supports {value}, so {value} online renders as 342 online, and a separate offline template and color take over when the feed reports the service as down. If the read fails you choose what happens: hide the indicator, show a text you wrote, or keep the last reading on screen.
There is also a Fixed text mode: up to 10 characters in the color you choose, with no network calls at all, which is what you want for a BETA or EARLY ACCESS tag.
Where it sits
By default the indicator sits in the ENVIRONMENT row, aligned to the right edge of the dropdown. Hide the environment selector and it drops to its own line above the Play button instead of disappearing with the dropdown. You can also force it onto the Play button itself, where it renders as a small badge in the top-right corner.
A tooltip of your own is shown on hover, so you can spell out what the number means.
Full guide: Application Settings.
Webhooks
NEW FEATURE: The Webhooks tab in your launcher and app settings is now a working screen instead of a placeholder. Send events to your own services as they happen, so your pipeline or your community tools react without polling.

Add an endpoint, give it an https URL, pick the events it should receive. Every delivery is signed with the Standard Webhooks scheme, so most existing verification libraries validate it as is.
What you can subscribe to
Builds: launcher and game builds finished, failed, cancelled or retried, a build going live, a build moved to another environment, DLC builds
Operations: the launcher activated or deactivated, a bandwidth threshold reached
Content: news published, popup published
Players: signed up, signed in, banned, unbanned, play session started and ended
Player events need the Authentication System, and the dialog labels them instead of letting you subscribe to something that will never fire.
Deliveries you can trust
The signing secret is shown once, when the endpoint is created, and never again. Rotate it whenever you need a new one.
Test sends a real delivery and reports what your service answered and how long it took, so a wrong URL surfaces now rather than on your next build.
A failed delivery is retried 5 times, backing off from 10 seconds to 2 hours, and each request gets 10 seconds. Every endpoint carries its own health in the list: healthy, failing, paused, or waiting for its first event. After 10 failures in a row it stops delivering and says so, so a URL that disappeared last week is not still costing you requests.
The last 30 days of deliveries are kept, and how many endpoints you get depends on your plan.
Need Help? Check out our Help Center or join our Discord Community!
Last updated
Was this helpful?