Setup
Prerequisites
Before configuring the plugin, make sure you have:
- An Epic Developer Portal account — dev.epicgames.com
- A Product created in the portal with at least one Deployment
- At least one Stat configured in
Dev Portal → [Your Product] → Stats
In production when launched from EGS, you must use PersistentThenExchangeCode or NeverFallback + ExchangeCode directly.
Step 1 — Enable the Plugin
In Unreal Engine:
- Open Edit → Plugins
- Search for EOS Stats
- Enable the plugin and restart the Editor
Step 2 — Get Your EOS Credentials
In the Epic Developer Portal, navigate to:
Your Product → Product Settings → SDK Credentials
Collect the following values:
| Field | Where to find it |
|---|---|
ProductId | Product Settings → Product ID |
SandboxId | Product Settings → Sandbox ID (use your Dev sandbox) |
DeploymentId | Product Settings → Deployment ID |
ClientId | SDK Credentials → Client ID |
ClientSecret | SDK Credentials → Client Secret |
Step 3 — Configure DefaultEngine.ini
Add the [EOSCore] section to your project's Config/DefaultEngine.ini:
[EOSCore]
ProductId=your-product-id
SandboxId=your-sandbox-id
DeploymentId=your-deployment-id
ClientId=your-client-id
ClientSecret=your-client-secret
; Optional settings (defaults shown)
bAutoInitialize=true
bTickEOS=true
bEnableOverlay=true
bEnableSocialOverlay=true
ClientSecret values to a public repository. Treat DefaultEngine.ini credentials the same as any other secret.Tip: If your project already has
OnlineSubsystemEOSconfigured (Project Settings → Online Subsystem EOS), the plugin automatically falls back to that Artifact's credentials for any field left empty in[EOSCore]. You do not need to duplicate your credentials.
Step 4 — (Optional) OnlineSubsystemEOS Co-existence
If your project already has OnlineSubsystemEOS enabled and set as the default platform service, the plugin will automatically detect and borrow its EOS platform handle.
[OnlineSubsystem]
DefaultPlatformService=EOS
In this case:
- No second EOS handle is created — the plugin reuses the existing one safely.
- No ticker is started — the OSS already ticks EOS.
- You do not need the
[EOSCore]section (though it is harmless to have it).
If OnlineSubsystemEOS is not active, the plugin creates its own handle from [EOSCore] and manages its own tick loop.
Step 5 — Create Your Stats in the Dev Portal
For each stat you want to track:
- Go to
Dev Portal → [Your Sandbox] → Stats - Create a stat and note its Stat Name exactly (e.g.
kills) — it is case-sensitive - Choose an Aggregation Type:
| Aggregation | Use case |
|---|---|
Sum | Cumulative counters — kills, deaths, revives, matches played |
Latest | The most recent value — currency balance, current level |
Max | Personal bests — highest score, longest streak |
Min | Best time / lowest value — fastest lap time |
Step 6 — Declare Your Stat Schema in Project Settings
EOS has no server-side API to list all stats configured for a product — EOS Query Stats only returns stats that already have a value for the current player. To display a full stat sheet (e.g. "Kills: 0") before any data exists, declare your schema locally:
- Open Edit → Project Settings → Plugins → EOS Stats
- Add one entry per stat under Stat Definitions:
| Field | Description |
|---|---|
StatName | Must match the Dev Portal name exactly |
DisplayName | Human-readable label for your UI |
Description | Optional, for your own reference / UI tooltips |
DefaultValue | Value shown before this stat has ever been ingested (e.g. 0 for kills, 100 for starting health) |

This is purely local config (DefaultEOS_Stats.ini) — it does not create stats on Epic's servers, it just tells your Blueprints what to expect.
Step 7 — Verify Setup
In your game's BeginPlay (or GameInstance Init), call Initialize EOS and check the return value:
Event BeginPlay
└─► Initialize EOS ──► (returns true) ──► Continue to Auth Login
└─► (returns false) ──► Log error / show error screen
If Initialize EOS returns false, check:
- Your credentials in
DefaultEngine.iniare correct (no trailing spaces) - The
EOSCoresection name is exactly[EOSCore] - Your Sandbox and Deployment IDs match your Dev Portal environment
- You are not in a Shipping build without valid production credentials
Subsystem Persistence
UEOSCoreStatsSubsystem and UEOSStatsSubsystem both live as long as the GameInstance. They persist across level changes automatically — you do not need to re-initialize EOS or re-declare your stat schema on each level load.
Log Category
All plugin logs use the LogEOSCore category. To see verbose logs, add to DefaultEngine.ini:
[Core.Log]
LogEOSCore=Verbose
Next Step
Once Initialize EOS returns true, follow the Example Project guide for the complete login → declare → ingest → query flow.
Introduction
EOS Stats is a Blueprint-first plugin for Unreal Engine 5.4+ that integrates Epic Online Services Stats into your game — value ingestion, queries, client-side caching, and a local stat schema included.
Functions
Complete reference for every Blueprint node and utility function provided by EOS Stats.