Identifiers are extremely important to our attribution algorithm. In order for us to accurately attribute players, we need to collect fingerprinting information from the player's computer.

Since some unique identifiers can be difficult to collect we have separated out the number of identifiers required for each event based on the scale of the game. The following table summarizes the number of identifiers required based on DAU.

📘

Recommended Identifier Count

It is important to pay attention to the number of identifiers recommended for your game's scale. If an insufficient number of identifiers are included the accuracy of Gamesight's conversion tracking with decrease.

Daily Active PlayersIdentifiers Recommended
< 2,500,0002+
< 5,000,0003+
< 10,000,0004+
More than 10,000,000?Contact Us

IP Address

This is the public IP address for the device that the user is on. This value is used both to identify the Country that the user is in for reporting, as well as forms the foundation for identifying matches in probabilistic flows.

The IP address value can also be provided as a SHA-256 hash. Please contact your account manager for more details about sending pre-hashed data in Event payloads.

Platform

The platform that the game is running on. This is used in reporting to split platforms for your game. The values also influence the attribution process by enabling optimized attribution flows for the specific device. Recommended values:

# Consoles
playstation_3
playstation_4
playstation_5
xbox_one
xbox_360
xbox_seriess
xbox_seriesx
nintendo_switch
stadia

# PC Distribution Platforms
steam
epicgs
kartridge
oculus_rift
oculus_quest
microsoft_store
humble_store
gog

# Self distributed
web
windows
macos
linux

📘

Impact of platform on attribution logic

It is important to take care when setting the platform value for your events as Gamesight's attribution engine automatically adjusts its logic based on the platform value specified.

  • web - if you set the platform value of web all fingerprint-based attribution methods will be disabled. This prioritizes deterministic and session based methodologies when operating in a web environment. If we are working with the Web SDK in a game launcher or using the /events API to send web events server side, be sure to adjust the platform value accordingly.
  • console - when you set the platform to one of the console values attribution will relax some requirements for matching to prioritize household-based matches since the expectation is that there are very few same-device flows for console attribution

SKU

A custom value used to differentiate different distributions of the game. Values commonly include details about the distribution channel, edition, language, and more.

OS

A simple string which represents the OS version for the user. Examples:

Windows 10
Windows 7
Mac OS X 10.11.5

On windows this information be retrieved with the following code

string os;
if (IsWindowsXPOrGreater())
{
  os = "Windows XP";
}
if (IsWindowsXPSP1OrGreater())
{
  os = "Windows XP Service Pack 1";
}
if (IsWindowsXPSP2OrGreater())
{
  os = "Windows XP Service Pack 2";
}
if (IsWindowsXPSP3OrGreater())
{
  os = "Windows XP Service Pack 3";
}
if (IsWindowsVistaOrGreater())
{
  os = "Windows Vista";
}
if (IsWindowsVistaSP1OrGreater())
{
  os = "Windows Vista Service Pack 1";
}
if (IsWindowsVistaSP2OrGreater())
{
  os = "Windows Vista Service Pack 2";
}
if (IsWindows7OrGreater())
{
  os = "Windows 7";
}
if (IsWindows7SP1OrGreater())
{
  os = "Windows 7 Service Pack 1";
}
if (IsWindows8OrGreater())
{
  os = "Windows 8";
}
if (IsWindows8Point1OrGreater())
{
  os = "Windows 8.1";
}
if (IsWindows10OrGreater())
{
  os = "Windows 10";
}

Screen Resolution

A string representing the primary monitor's screen resolution. Examples:

1920x1080
1440x900

On windows this information be retrieved with the following code

RECT desktop;
GetWindowRect(GetDesktopWindow(), &desktop);
string resolution = to_string(desktop.right) + "x" + to_string(desktop.bottom);

Timezone

An integer representing the number of minutes of offset between UTC and the current user's timezone. Such that UTC = local time + timezone

On windows this information be retrieved with the following code

DYNAMIC_TIME_ZONE_INFORMATION tzInfo;
GetDynamicTimeZoneInformation(&tzInfo);
long timezone = tzInfo.Bias;

Language

An ISO 639-1 language string optionally including a ISO 3166-2 region code when available

en
de
en-US

On windows this information be retrieved with the following code

LANGID langID = GetUserDefaultLangID();
WCHAR langChar[LOCALE_NAME_MAX_LENGTH];
LCIDToLocaleName(langID, langChar, LOCALE_NAME_MAX_LENGTH, 0);
wstring lang(langChar);
string language(lang.begin(), lang.end());