Skip to content

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


  1. Create a Plugins/Vortex folder at the root of your Unreal project
  2. Copy the Source, Resources (if any), and Vortex.uplugin files into that folder
  3. Right-click your .uproject file and select Generate Visual Studio project files
  4. Open your solution and build the project

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

Initialize the manager with your credentials before tracking any events. This is typically done in the BeginPlay of your GameMode or a login script.

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
);
}

Track a basic action with no additional data.

  • Blueprint: Use the Track Event node
  • C++:
    Analytics->TrackEvent(TEXT("level_started"));

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"));

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);

Recommended for high-frequency events (e.g. every bullet hit) to reduce bandwidth usage.

  1. Queue events with Batched Track Event — each call saves the event locally
  2. Send everything in one HTTP request with Flush Manual Batch
  • Blueprint: Use the Batched Track Event and Flush Manual Batch nodes
  • C++:
    // Queue events
    Analytics->BatchedTrackEvent(TEXT("BulletHit"));
    // Send all queued events at once
    Analytics->FlushManualBatch();

Let the system handle network calls in the background:

// Flush the internal queue every 20 seconds
Analytics->SetAutoBatching(true, 20.0f);

Attach persistent metadata to all subsequent events — useful for user session info, device settings, or any context that applies across many events.

  • 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);
  • Blueprint: Use the Clear Custom Data node
  • C++:
    Analytics->ClearCustomData();
ScenarioResult
Custom data not setcustom field is omitted from the JSON payload entirely
Custom data setSerialized to JSON and included in every event until cleared
Applies toSingle events, batched events, all tracking methods