
## Install the SDK

Download the latest version of `AmplitudeUnreal.zip` from the [GitHub releases](https://github.com/amplitude/Amplitude-Unreal/releases/latest) page. Unzip the file into a folder inside your Unreal project's `Plugins` directory.

```bash
mkdir -p Plugins/AmplitudeUnreal
unzip AmplitudeUnreal.zip -d Plugins/AmplitudeUnreal
```

### Enable the SDK plugin in the editor

Open your project in the UE4 editor. Go to *Settings > Plugins > Project > Analytics* and enable `AmplitudeUnreal`.

### Enable Amplitude as the analytics provider

Go to *Settings > Project Settings > Analytics > Amplitude* and fill in the fields with your API key.

### Include the required analytics modules

In any file that involves instrumentation, include the Unreal Engine analytics headers.

```cpp
#include "Runtime/Analytics/Analytics/Public/Analytics.h"
#include "Runtime/Analytics/Analytics/Public/Interfaces/IAnalyticsProvider.h"
```

## Track events and user properties

The Amplitude Unreal API follows the [analytics provider interface](https://docs.unrealengine.com/en-US/API/Runtime/Analytics/Interfaces/IAnalyticsProvider/index.html) that Unreal Engine defines.

### Log basic events

Events represent how users interact with your app. For example, you can track a `Game Started` event.

```cpp
FAnalytics::Get().GetDefaultConfiguredProvider()->StartSession();
FAnalytics::Get().GetDefaultConfiguredProvider()->RecordEvent(TEXT("Game started"));
FAnalytics::Get().GetDefaultConfiguredProvider()->EndSession();
```

### Log events with properties

Events can contain properties. Properties give context about the event.

```cpp
TArray<FAnalyticsEventAttribute> AppendedAttributes;
AppendedAttributes.Emplace(TEXT("Test Event Prop key1"), TEXT("Test Event value1"));
AppendedAttributes.Emplace(TEXT("Test Event Prop key2"), TEXT("Test Event value2"));
FAnalytics::Get().GetDefaultConfiguredProvider()->RecordEvent(TEXT("Game Started"), AppendedAttributes);
```

### Set user properties

User properties describe your users at the time they take an action in your app.

The generic Unreal Engine [`IAnalyticsProvider`](https://docs.unrealengine.com/en-US/API/Runtime/Analytics/Interfaces/IAnalyticsProvider/index.html) supports a limited number of user properties.

```cpp
FAnalytics::Get().GetDefaultConfiguredProvider()->SetLocation(TEXT("Test location"));
FAnalytics::Get().GetDefaultConfiguredProvider()->SetGender(TEXT("Test gender"));
FAnalytics::Get().GetDefaultConfiguredProvider()->SetAge(TEXT(27));
```

### Set custom user IDs

If your app has its own login system, use `SetUserId` to set a custom user ID.

```cpp
FAnalytics::Get().GetDefaultConfiguredProvider()->SetUserID(TEXT("test123@test.com"));
```
