Events

Metadata

Player and game data Unibo uses for campaign targeting and segmentation. Most integrations combine both delivery methods — streaming for incremental updates, polling for the initial seed and periodic reconciliation.

Privacy

Unibo never receives or stores personally identifiable information. Send only system-generated identifiers — no names, email addresses, or phone numbers.

Integration methods

There are two ways to get metadata into Unibo. Most integrations use both: streaming for incremental updates, polling for the initial seed and periodic reconciliation.

Stream
Push player and game events through the same Event Stream endpoint as gameplay events. Works with any platform.

Poll
Unibo periodically calls your platform's API to fetch players and games. Available when Unibo has a pre-built integration for your platform. Ask your account manager whether yours is supported.

Player data

Field

Type

Required

Notes

unique_id

string

yes

Idempotency key

timestamp

ISO-8601 string

yes

When the change occurred (UTC)

player_id

string

yes

Stable player identifier

currency

string

no

ISO-4217 code

registration_date

ISO-8601 string

no

UTC

country

string

no

ISO-3166 alpha-2 code

is_blocked

boolean

no

true if the player is blocked

consent_email

boolean

no

true if opted in to marketing email

username

string

no

Display only — never PII

gender

string

no

M, F, or null

tags

array of strings

no

Custom segmentation labels

affiliate

string

no

Affiliate identifier

operator

string

no

Operator ID from your game provider

The API accepts an event with just unique_id, timestamp, and player_id. Send the rest whenever your platform has them — the campaign engine relies on currency, registration_date, country and is_blocked to target and process events correctly.

{
  "event": "player",
  "data": {
    "unique_id": "pl-StQ-1-v2",
    "timestamp": "2025-01-15T12:00:00Z",
    "player_id": "StQ-1",
    "username": "adam123",
    "registration_date": "2024-11-01T08:30:00Z",
    "country": "MT",
    "currency": "EUR",
    "gender": "M",
    "tags": ["diamond", "platinum"],
    "is_blocked": false,
    "consent_email": true
  }
}

Game data

Field

Type

Required

Notes

unique_id

string

yes

Idempotency key

timestamp

ISO-8601 string

yes

When the change occurred (UTC)

game_id

string

yes

Stable game identifier

name

string

no

Display name

provider

string

no

Game provider / studio

categories

array of strings

no

e.g. video-slots, live-casino

features

array of strings

no

e.g. bonus-buy, megaways

themes

array of strings

no

Visual or narrative themes

device

string

no

Free-form label (desktop, mobile, tablet)

has_freespins

yes / no / unknown

no

Freespin eligibility

Send name, provider, and at least one entry in categories so the campaign engine can target games correctly.

{
  "event": "game",
  "data": {
    "unique_id": "g-2-sweet-bonanza-v3",
    "timestamp": "2025-01-15T12:00:00Z",
    "game_id": "2-sweet-bonanza",
    "name": "Sweet Bonanza",
    "provider": "Pragmatic Play",
    "categories": ["video-slots"],
    "features": ["bonus-buy"],
    "themes": ["Christmas"],
    "device": "desktop",
    "has_freespins": "yes"
  }
}

Initial sync

If Unibo polls your platform, the initial seed is handled automatically. If you stream only, send a player event for every existing player and a game event for every game in your catalogue when you first integrate, then send updates as they happen.

Custom attributes

The structure, naming, and number of additional attributes are fully controlled by your platform and agreed upon during integration. This applies to both player attributes (tags, segments, VIP scores) and game attributes (RTP, volatility).

Full schemas in the Consumer API Reference →

Was this helpful?