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 Players | Identifiers Recommended |
---|---|
< 2,500,000 | 2+ |
< 5,000,000 | 3+ |
< 10,000,000 | 4+ |
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 ofweb
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());