Unreal Engine SDK
The Vortex Plugin for Unreal Engine is a GameInstance Subsystem — a set-and-forget manager that is created automatically when the game starts and persists across level loads.
GitHub: Vortex-Analytics-IO/Unreal-SDK
Installation
Section titled “Installation”- Create a
Plugins/Vortexfolder at the root of your Unreal project - Copy the
Source,Resources(if any), andVortex.upluginfiles into that folder - Right-click your
.uprojectfile and select Generate Visual Studio project files - Open your solution and build the project
Project settings
Section titled “Project settings”Go to Edit → Project Settings → Plugins → Vortex Analytics to:
- Toggle analytics globally
- Disable analytics for Editor builds to keep dev data out of production metrics
- Disable analytics for Shipping builds independently
Initialization
Section titled “Initialization”Initialize the manager with your credentials before tracking any events. This is typically done in the BeginPlay of your GameMode or a login script.
Blueprints (recommended)
Section titled “Blueprints (recommended)”Search for the Get Analytics Manager node — it is available globally. From it, call Init.
#include "AnalyticsManager.h"
UAnalyticsManager* Analytics = UAnalyticsManager::Get(GetWorld());if (Analytics){ Analytics->Init( TEXT("my_tenant_id"), TEXT("https://in.vortexanalytics.io"), TEXT("PS5") // platform );}Tracking events
Section titled “Tracking events”Simple event
Section titled “Simple event”Track a basic action with no additional data.
- Blueprint: Use the Track Event node
- C++:
Analytics->TrackEvent(TEXT("level_started"));
Event with string payload
Section titled “Event with string payload”Send a string tag alongside the event name.
- Blueprint: Provide the string in the Props input of the Track Event node
- C++:
Analytics->TrackEvent(TEXT("item_bought"), TEXT("shield_01"));
Event with structured data (map)
Section titled “Event with structured data (map)”Send multiple key-value pairs in a single event.
- Blueprint: Use the Track Event With Props node connected to a Make Map node
- C++:
TMap<FString, FString> Params;Params.Add(TEXT("health"), TEXT("50"));Params.Add(TEXT("zone"), TEXT("FireDungeon"));Analytics->TrackEventWithProps(TEXT("player_status"), Params);
Batching
Section titled “Batching”Manual batching
Section titled “Manual batching”Recommended for high-frequency events (e.g. every bullet hit) to reduce bandwidth usage.
- Queue events with Batched Track Event — each call saves the event locally
- Send everything in one HTTP request with Flush Manual Batch
- Blueprint: Use the Batched Track Event and Flush Manual Batch nodes
- C++:
// Queue eventsAnalytics->BatchedTrackEvent(TEXT("BulletHit"));// Send all queued events at onceAnalytics->FlushManualBatch();
Automatic batching
Section titled “Automatic batching”Let the system handle network calls in the background:
// Flush the internal queue every 20 secondsAnalytics->SetAutoBatching(true, 20.0f);Custom data
Section titled “Custom data”Attach persistent metadata to all subsequent events — useful for user session info, device settings, or any context that applies across many events.
Setting custom data
Section titled “Setting custom data”- Blueprint: Use the Set Custom Data node connected to a Make Map node:
Make Map → [key: "user_tier", value: "premium"][key: "region", value: "EU"]→ Set Custom Data
- C++:
TMap<FString, FString> CustomData;CustomData.Add(TEXT("user_tier"), TEXT("premium"));CustomData.Add(TEXT("region"), TEXT("EU"));Analytics->SetCustomData(CustomData);
Clearing custom data
Section titled “Clearing custom data”- Blueprint: Use the Clear Custom Data node
- C++:
Analytics->ClearCustomData();
Behavior
Section titled “Behavior”| Scenario | Result |
|---|---|
| Custom data not set | custom field is omitted from the JSON payload entirely |
| Custom data set | Serialized to JSON and included in every event until cleared |
| Applies to | Single events, batched events, all tracking methods |