Integrations
Proxy-only setup
Installing on BungeeCord or Velocity when your backend can't run a plugin. Know the trade-offs first.
Proxy-only setup is the fallback for when your backend game servers can't run a Spigot or Paper compatible plugin. Instead of installing Analyse on every backend, you install one plugin on your BungeeCord or Velocity proxy.
This works, but you trade off some of what makes Analyse powerful. Read the trade-offs below before you choose this path.
When to use proxy-only
- Your backend runs custom server software we don't have a plugin for
- You're on a heavily modded setup that doesn't support Spigot/Paper plugins
- You're bridging to an external game engine
If your backend runs Paper, Spigot, Purpur, Folia, or Hytale, use the regular plugin per gamemode setup. See Recommended setup.
How it works
The plugin lives on your proxy. Its config has a servers map: one entry per backend server, each one pointing at the Analyse Server API key for whatever gamemode that backend runs.
When a player joins, the proxy sees them and reports it to Analyse under the right Server. When they switch between backends, the proxy sees that too.
Config format
The Velocity and BungeeCord proxy plugins both use a JSON config file (plugins/Analyse/config.json). The shape looks like this:
{"debug": false,"bedrockPrefix": ".","instanceId": "default","defaultServer": null,"servers": {"ls-1": { "apiKey": "anl_lifesteal_key" },"ls-2": { "apiKey": "anl_lifesteal_key" },"sv-1": { "apiKey": "anl_survival_key" }},"events": {"command": true,"serverSwitch": true}}
Key things to know:
- The keys inside
servers(e.g.ls-1,sv-1) must match the backend names declared in your Velocity or BungeeCord config. defaultServeris optional. If set, joins that the proxy can't route to a mapped backend are still attributed to this fallback Server.eventstoggles which activity types the proxy tracks. Flip any of them tofalseto silence that kind of event.
Same gamemode across shards
If two backends run the same gamemode (e.g. ls-1 and ls-2 both run LifeSteal), point them both at the same API key. Analyse rolls them up into one Server.
What you still get
Both proxies capture:
- Player joins (attributed to Campaigns by hostname)
- Session length
- Server switches (which gamemode they played and when)
- Commands typed at the proxy
- Revenue attribution (Tebex webhooks are unaffected by this choice)
- Retention, Funnels that rely on join data, Campaigns, Creator codes
Velocity vs BungeeCord differences
The two proxies are not quite identical in what they can see.
| Event | Velocity | BungeeCord |
|---|---|---|
| Player join / leave | Tracked | Tracked |
| Server switch | Tracked | Tracked |
| Commands typed at the proxy | Tracked | Tracked |
| Chat messages at the proxy | Not tracked | Tracked |
If capturing chat matters to you and you can choose, BungeeCord has the edge here. If not, Velocity is perfectly fine and usually the recommended proxy for new setups.
What you lose (either proxy)
Because the proxy never actually sees in-game events, these features don't work or are limited:
- First and last action per session: not captured
- Block place, block break, death, kill-entity: not captured
- Custom events from the backend: not captured (you can still push events from your own plugin via plugin messaging; see SDK: plugin messaging)
- A/B tests driven by the backend: the backend can't call the SDK directly to assign variants
If any of those features matter to you, the backend plugin setup is the right choice. You can always hybrid: backend plugin on supported gamemodes, proxy-only on unsupported ones.
Your server software isn't supported
If you're reading this because we don't have a backend plugin for your server software, hop into our Discord. We add plugins for new platforms often, usually in under a day once we know there's demand.
Related
- Recommended setup for the preferred path
- SDK: plugin messaging if you want to send events from a backend behind your proxy