Identifiers

Identifiers are extremely important to our attribution algorithm. IP address is required for probabilistic matching. Additional device identifiers (OS, resolution, timezone, language) help with attribution, and external IDs (account IDs, platform IDs, email) enable deterministic matching. The more of these you can send consistently, the better your attribution quality.

📘

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 - console launches usually happen on a different device from the ad interaction, so attribution relies on identity links and household-level IP matching rather than same-device signals.

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