Introduction
Overview
EOS Stats is an Unreal Engine plugin that gives you a clean, Blueprint-first integration of Epic Online Services (EOS) Stats — without writing any C++ or dealing with the raw EOS SDK.
It handles the full flow:
- EOS initialization (auto-detect OnlineSubsystemEOS or create its own handle)
- Epic Account authentication (Auth Login with persistent token, fallback support, Dev Auth Tool)
- Product User identity (Connect Login required by EOS for game services)
- Ingesting stats (send increments — kills, revives, playtime, currency, anything numeric)
- Querying stats (read player stat values back, with automatic client-side caching)
- Local stat schema (declare your stats in Project Settings with a default value, since EOS has no server-side "list all stats" API)
- Player identity (display name, nickname, country, preferred language)
Requirements
| Engine version | UE 5.4 and above |
| Platforms | Windows, Mac, Linux, Android, iOS |
| EOS Account | Epic Developer Portal project with Stats configured |
Plugin Architecture
The plugin is split into two modules:
| Module | Role |
|---|---|
EOSCoreStats | Core subsystem — EOS init, Auth Login, Connect Login, identity |
EOS_Stats | Stats-specific logic — Query Stats, Ingest Stat, stat definitions, client-side cache |
The central object is UEOSCoreStatsSubsystem, a GameInstanceSubsystem that lives for the entire game session and holds the EOS platform handle, the Epic Account ID, and the Product User ID. UEOSStatsSubsystem (also a GameInstanceSubsystem) owns the Stats-specific caches (queried values + local schema).
Blueprint Flow (Overview)
InitializeEOS
│
▼
EOS Auth Login (Epic Account)
│ OnSuccess
▼
EOS Connect Login (ProductUserId) ← auto-handled internally
│ OnSuccess
▼
EOS Query Stat Definitions ──────────────► Load your local stat schema
│
▼
EOS Query Stats ──────────────────────────► Read real values from Epic's servers
│ OnSuccess
▼
EOS Get All Stats (With Defaults) ────────► Display a full stat sheet (0 for stats never ingested)
│
▼
EOS Ingest Stat ───────────────────────────► On game event (kill, revive, match end, ...)
Each async step is a Blueprint node with OnSuccess/OnFailure pins — no manual callback wiring required.
Auto-login: Both EOS Query Stats and EOS Ingest Stat detect a missing Product User ID and trigger Connect Login automatically. In most cases you only need to call Auth Login once, then use the Stats nodes directly.
What This Plugin Solves
The raw EOS SDK requires:
- Manual
EOS_Initialize/EOS_Platform_Createcalls - Two separate login steps (Auth + Connect) with error handling
- Manually iterating
CopyStatByIndexto read query results - Managing SDK memory (
EOS_Stats_Stat_Release) - No built-in way to know which stats exist before the player has any value for them
EOS Stats abstracts all of this — including a local stat schema (declared in Project Settings) so you can display a complete stat sheet with sensible defaults before a single value has ever been ingested.
Dependencies
The following Unreal Engine plugins must be enabled in your .uproject:
OnlineSubsystemEOSShared
OnlineSubsystemEOSandOnlineSubsystemUtilsare optional — if active, the plugin borrows the existing EOS handle automatically. If not, the plugin creates its own fromDefaultEngine.ini.
Recommended Reading Order
- Setup — configure your EOS credentials and declare your stat schema
- Functions — reference for every Blueprint node
- Example Project — a step-by-step integration walkthrough
Need Help?
Join the community Discord:
When asking for support, include:
- Unreal Engine version
- Plugin version
- Your platform (Editor / Windows / etc.)
- Logs or screenshots of the issue