Full reference of data collected and event schemas for the Tracking Pixel, Web SDK, Unity SDK, and REST API. Use it to understand what each integration sends, when it sends it, and what properties each event carries. Also useful for privacy reviews, legal assessments, and technical audits.Documentation Index
Fetch the complete documentation index at: https://docs.immutable.com/llms.txt
Use this file to discover all available pages before exploring further.
Cookies
First-party cookies only. No third-party cookies are created. The Unity SDK does not use cookies. It persistsAnonymousId and queued events to native local storage instead.
imtbl_anon_id Tracking Pixel Web SDK
imtbl_anon_id Tracking Pixel Web SDK
| Property | Value |
|---|---|
| Lifetime | 2 years |
| Scope | First-party, current hostname |
| Attributes | SameSite=Lax, Secure on HTTPS |
_imtbl_sid Tracking Pixel Web SDK
_imtbl_sid Tracking Pixel Web SDK
| Property | Value |
|---|---|
| Lifetime | 30 minutes (rolling) |
| Scope | First-party, current hostname |
| Attributes | SameSite=Lax, Secure on HTTPS |
_ga Tracking Pixel
_ga Tracking Pixel
| Property | Value |
|---|---|
| Source | Google Analytics |
_fbc Tracking Pixel
_fbc Tracking Pixel
| Property | Value |
|---|---|
| Source | Meta (Facebook) |
_fbp Tracking Pixel
_fbp Tracking Pixel
| Property | Value |
|---|---|
| Source | Meta (Facebook) |
Device Fingerprint Signals
These signals are collected automatically when consent isanonymous or full.
The Tracking Pixel and Web SDK collect the same browser-based set, so the per-integration tabs for those two repeat the same table.
- Tracking Pixel
- Web SDK
- Unity SDK
| Signal | Source | Example |
|---|---|---|
| User agent | navigator.userAgent | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)... |
| Screen resolution | screen.width × screen.height | 1920×1080 |
| Timezone | Intl.DateTimeFormat().resolvedOptions().timeZone | America/New_York |
| Browser language | navigator.language | en-US |
| IP address | Server-side from request headers | Raw IP stored for geo enrichment |
Attribution Signals
Captured from the URL and browser. The Tracking Pixel and Web SDK record the same set of signals. The per-integration tabs for those two carry the same table, with the framing sentence noting when each integration attaches them.- Tracking Pixel
- Web SDK
- Unity SDK
| Signal | Source | Example |
|---|---|---|
| UTM parameters | URL query string | utm_source, utm_medium, utm_campaign, utm_term, utm_content |
| Google click ID | URL query string | gclid |
| Meta click ID | URL query string | fbclid |
| TikTok click ID | URL query string | ttclid |
| Microsoft click ID | URL query string | msclkid |
| Display & Video 360 click ID | URL query string | dclid |
| LinkedIn click ID | URL query string | li_fat_id |
| Referrer | document.referrer | The referring page URL |
| Landing page | window.location.href (first page in session) | Entry point URL |
| Referral code | URL query string | referral_code: a custom parameter you add to campaign links (e.g. ?referral_code=influencer-abc) to track referral sources |
Identity Stitching
Each integration assigns ananonymousId automatically when tracking begins. As a player moves through your funnel (visiting your marketing site, creating an account, launching the game), identity calls connect those anonymous sessions to a known player in attribution reports.
| Integration | How anonymousId is assigned |
|---|---|
| Tracking Pixel | Reads or sets the imtbl_anon_id first-party cookie |
| Web SDK | Reads or sets the same imtbl_anon_id cookie |
| Unity SDK | Generates a persistent GUID stored in Application.persistentDataPath |
| REST API | Provided by the caller in the message payload |
imtbl_anon_id cookie on the same domain, so sessions on the same domain are already continuous before any login occurs.
Call identify() at login to associate the player’s userId with their activity and traits. A player who logs in on both the marketing site and in-game using the same userId will have both session histories attributed to the same profile, no alias call needed.
Call alias() when the same player is known by different provider IDs across surfaces, for example a player previously identified as a Steam user who later links a Passport account.
Auto-Tracked Events
Events fired by the integration without studio code. Title badges indicate which integrations emit each event. Trigger conditions and per-integration property differences are described inside the accordion.game_launch Unity SDK
game_launch Unity SDK
Init when consent permits tracking. The Web SDK and REST API do not currently emit this event.Event name: game_launch| Property | Type | Required | Description |
|---|---|---|---|
platform | string | No | Unity Application.platform enum (e.g. 'WindowsPlayer', 'OSXPlayer', 'WindowsEditor') |
version | string | No | Game version string |
buildGuid | string | No | Unity build GUID |
unityVersion | string | No | Unity version the build was made with |
osFamily | string | No | One of 'Windows', 'MacOSX' |
deviceModel | string | No | Hardware model |
gpu | string | No | GPU name |
gpuVendor | string | No | GPU vendor |
cpu | string | No | CPU name |
cpuCores | integer | No | Number of CPU cores |
ramMb | integer | No | System RAM in megabytes |
screenDpi | integer | No | Display DPI (omitted when 0). |
distributionPlatform | string | No | Value of AudienceConfig.DistributionPlatform (e.g. 'steam', 'epic'). Omitted if not set. Studio-supplied storefront identifier. Complements the Unity-emitted platform, which is the OS-level player runtime. |
ImmutableAudience.Init. Studios do not call this directly. The wire payload includes the full Unity property set:session_start Tracking Pixel Web SDK Unity SDK
session_start Tracking Pixel Web SDK Unity SDK
- Tracking Pixel: no active
_imtbl_sidcookie. - Web SDK: no active session cookie, or consent upgrades from
'none'. - Unity SDK:
Init, consent upgrade fromNone, or resume after a pause longer than 30 seconds.
| Property | Type | Description |
|---|---|---|
sessionId | string | New session identifier |
utm_*, click IDs, referrer, landing_page, referral_code, touchpoint_type) on this event.session_end Tracking Pixel Web SDK Unity SDK
session_end Tracking Pixel Web SDK Unity SDK
Anonymous or higher.Per-integration triggers:- Tracking Pixel: page unload.
- Web SDK:
shutdown()is called. - Unity SDK:
Shutdownis called, consent is downgraded toNone, or a session rolls due to extended pause.
| Property | Type | Surfaces | Description |
|---|---|---|---|
sessionId | string | All | Current session identifier |
duration | number | Tracking Pixel, Web SDK | Seconds since session_start, wall-clock |
durationSec | number | Unity SDK | Engagement seconds since session_start, wall-clock minus accumulated pause time |
duration as wall-clock time. The Unity SDK reports durationSec as engagement time, excluding pause durations. The field names differ to make the semantic difference explicit. Dashboards aggregating session length across integrations should treat these as separate metrics.The Tracking Pixel and Web SDK use fetch with keepalive: true to ensure delivery on page unload.session_heartbeat Unity SDK
session_heartbeat Unity SDK
| Property | Type | Description |
|---|---|---|
sessionId | string | Current session identifier |
durationSec | number | Engagement seconds since session_start, wall-clock minus accumulated pause time |
page Tracking Pixel Web SDK
page Tracking Pixel Web SDK
page() manually on each route change.| Property | Type | Tracking Pixel | Web SDK | Description |
|---|---|---|---|---|
sessionId | string | Every page | Every page() | Current session identifier |
utm_source | string | Every page | Once per session | UTM source parameter from URL |
utm_medium | string | Every page | Once per session | UTM medium parameter from URL |
utm_campaign | string | Every page | Once per session | UTM campaign parameter from URL |
utm_term | string | Every page | Once per session | UTM term parameter from URL |
utm_content | string | Every page | Once per session | UTM content parameter from URL |
gclid | string | Every page | Once per session | Google Ads click ID |
fbclid | string | Every page | Once per session | Meta click ID |
ttclid | string | Every page | Once per session | TikTok click ID |
msclkid | string | Every page | Once per session | Microsoft click ID |
dclid | string | Every page | Once per session | Display & Video 360 click ID |
li_fat_id | string | Every page | Once per session | LinkedIn click ID |
referrer | string | Every page | Once per session | Referring page URL |
landing_page | string | Every page | Once per session | Entry point URL |
referral_code | string | Every page | Once per session | Custom referral link parameter |
touchpoint_type | string | Every page | Once per session | 'click' when any click ID or UTM parameter is present |
gaClientId | string | Every page | — | Google Analytics client ID (from _ga cookie) |
fbClickId | string | Every page | — | Facebook click ID (from _fbc cookie) |
fbBrowserId | string | Every page | — | Facebook browser ID (from _fbp cookie) |
form_submitted Tracking Pixel
form_submitted Tracking Pixel
autocapture.forms: false.| Property | Type | Description |
|---|---|---|
formAction | string | Form action URL |
formId | string | Form element ID |
formName | string | Form element name |
fieldNames | string[] | Names of form fields |
emailHash | string | SHA-256 hashed email address (full consent only) |
scroll_depth Tracking Pixel
scroll_depth Tracking Pixel
depth: 100 with aboveFold: true after a 2-second dwell time to filter immediate bounces. Can be disabled with autocapture.scroll: false.| Property | Type | Description |
|---|---|---|
depth | integer | Milestone reached: 25, 50, 75, 90, or 100 |
aboveFold | boolean | true on above-the-fold pages (only present when applicable) |
sessionId | string | Current session identifier |
link_clicked (auto) Tracking Pixel
link_clicked (auto) Tracking Pixel
autocapture.clicks: false.| Property | Type | Description |
|---|---|---|
linkUrl | string | Destination URL |
linkText | string | Link display text |
elementId | string | Link element ID |
outbound | boolean | Always true |
Predefined Events
Typed events for common player actions. These schemas apply to the Web SDK, the Unity SDK, and the REST API. Each event accordion below shows the typed call shape for every integration. Properties are identical across integrations unless noted. Each integration also auto-attaches its own metadata to every event. See Auto-attached metadata below.Event schemas
sign_up Web SDK REST API
sign_up Web SDK REST API
sign_up| Property | Type | Required | Description |
|---|---|---|---|
method | string | No | How the player signed up (e.g. 'email', 'google', 'passport') |
- Web SDK
- REST API
sign_in Web SDK REST API
sign_in Web SDK REST API
sign_in| Property | Type | Required | Description |
|---|---|---|---|
method | string | No | Authentication method used (e.g. 'email', 'google', 'passport') |
- Web SDK
- REST API
purchase Web SDK Unity SDK REST API
purchase Web SDK Unity SDK REST API
purchase| Property | Type | Required | Description |
|---|---|---|---|
currency | string | Yes | Currency code (e.g. 'USD', 'ETH') |
value | number | Yes | Total purchase value |
itemId | string | No | Unique identifier for the item |
itemName | string | No | Display name of the item |
quantity | number | No | Number of items purchased |
transactionId | string | No | Your internal transaction reference |
- Web SDK
- Unity SDK
- REST API
progression Web SDK Unity SDK REST API
progression Web SDK Unity SDK REST API
progression| Property | Type | Required | Description |
|---|---|---|---|
status | 'start' | 'complete' | 'fail' | Yes | Whether the player started, completed, or failed this segment |
world | string | No | Top-level grouping (e.g. 'forest', 'dungeon', 'chapter-1') |
level | string | No | Level within the world (e.g. '3', 'boss') |
stage | string | No | Sub-level or checkpoint within the level |
score | number | No | Score achieved |
durationSec | number | No | Time spent in seconds |
- Web SDK
- Unity SDK
- REST API
resource Web SDK Unity SDK REST API
resource Web SDK Unity SDK REST API
resource| Property | Type | Required | Description |
|---|---|---|---|
flow | 'sink' | 'source' | Yes | 'sink' when the player spends a resource, 'source' when they gain one |
currency | string | Yes | The resource type (e.g. 'gold', 'gems', 'energy') |
amount | number | Yes | Quantity gained or spent |
itemType | string | No | Category of the item involved (e.g. 'weapon', 'consumable') |
itemId | string | No | Unique identifier for the item |
- Web SDK
- Unity SDK
- REST API
wishlist_add / wishlist_remove Web SDK REST API
wishlist_add / wishlist_remove Web SDK REST API
wishlist_add, wishlist_removewishlist_add:| Property | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | Unique identifier for the game |
source | string | No | Where the action happened (e.g. 'store', 'search', 'recommendation') |
platform | string | No | Platform (e.g. 'steam', 'epic') |
- Web SDK
- REST API
| Property | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | Unique identifier for the game |
- Web SDK
- REST API
email_acquired Web SDK REST API
email_acquired Web SDK REST API
email_acquired| Property | Type | Required | Description |
|---|---|---|---|
source | string | No | Where the email was collected (e.g. 'waitlist', 'newsletter', 'checkout') |
- Web SDK
- REST API
game_page_viewed Web SDK REST API
game_page_viewed Web SDK REST API
game_page_viewed| Property | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | Unique identifier for the game |
gameName | string | No | Display name of the game |
slug | string | No | URL-friendly identifier (e.g. 'my-game') |
- Web SDK
- REST API
link_clicked Web SDK REST API
link_clicked Web SDK REST API
link_clicked| Property | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Destination URL |
label | string | No | Display text or label for the link |
source | string | No | Where the link appeared (e.g. 'navbar', 'footer', 'cta-banner') |
gameId | string | No | Associated game identifier, if applicable |
- Web SDK
- REST API
milestone_reached Unity SDK
milestone_reached Unity SDK
progression.Event name: milestone_reached| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Milestone identifier (e.g. 'first_boss_defeated', 'tutorial_complete') |
- Unity SDK
Auto-attached metadata
The Web SDK and Unity SDK auto-attach a shared baseline to every event:- A persistent anonymous device identifier (
anonymousId) - An integration tag identifying the SDK source
- The library identifier and version
- Locale, screen size, timezone, and user-agent string
received_at and IP-derived geo on every event regardless of integration.
- Web SDK
- Unity SDK
| Method call | Auto-attached |
|---|---|
every track() call | sessionId |
track('sign_up', ...), track('link_clicked', ...) | sessionId plus attribution signals from the current page URL |
every track() call after identify() (Full consent only) | userId |
Consent Model
All Audience integrations use a three-tier consent model. Consent defaults to None and can be changed at any time. Changes take effect immediately. The Audience integrations do not provide a consent UI. You are responsible for building the cookie banner or privacy prompt and setting the consent level when the user makes a choice.| Level | What it does | When to set |
|---|---|---|
| None | Loads but collects nothing | Before consent is given or when consent is denied |
| Anonymous | Tracks activity without user identity | After analytics consent |
| Full | Tracks everything including user identity | After full tracking consent |
Downgrading Consent
You can downgrade consent at any time. All integrations share this core behavior:- Full → Anonymous: strips player identity from queued events, removes pending
identify()andalias()messages. - Any level → None: purges all queued events.
- Tracking Pixel
- Web SDK
- Unity SDK
- REST API
- Tracking Pixel
- Web SDK
- Unity SDK
- REST API
| Data | 'none' | 'anonymous' | 'full' |
|---|---|---|---|
| Cookies | imtbl_anon_id | imtbl_anon_id, _imtbl_sid | imtbl_anon_id, _imtbl_sid |
| Page views | No | Yes | Yes |
| Session events | No | Yes | Yes |
| Device fingerprint | No | Yes | Yes |
| Attribution signals | No | Yes | Yes |
| Outbound link clicks | No | Yes | Yes |
| Form submissions | No | Yes (no email) | Yes (hashed email) |
| Scroll depth milestones | No | Yes | Yes |
| Third-party ID stitching | No | Yes | Yes |
What Is Not Collected
None of the Audience integrations collect the following:- No cross-domain tracking (first-party cookies only)
- No session replay or screen recording
- No heatmaps or mouse movement tracking
- No A/B testing or feature flags
- No impression or view-through tracking (click-through only)
- No raw email addresses (only SHA-256 hashed, only at
fullconsent)