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 |
|---|---|---|---|
| string | yes | Idempotency key |
| ISO-8601 string | yes | When the change occurred (UTC) |
| string | yes | Stable player identifier |
| string | no | ISO-4217 code |
| ISO-8601 string | no | UTC |
| string | no | ISO-3166 alpha-2 code |
| boolean | no |
|
| boolean | no |
|
| string | no | Display only — never PII |
| string | no |
|
| array of strings | no | Custom segmentation labels |
| string | no | Affiliate identifier |
| 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 |
|---|---|---|---|
| string | yes | Idempotency key |
| ISO-8601 string | yes | When the change occurred (UTC) |
| string | yes | Stable game identifier |
| string | no | Display name |
| string | no | Game provider / studio |
| array of strings | no | e.g. |
| array of strings | no | e.g. |
| array of strings | no | Visual or narrative themes |
| string | no | Free-form label ( |
|
| 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).