Plug PlayFab player stats into your portal.
Surface PlayFab player stats on the Traced game page (top-10 leaderboards) and player profiles (stat cards). Available on Pro and Studio tiers.
1. Connect your PlayFab title
- In the dashboard, open
/p/[your-project]/integrations. - Click the PlayFab card.
- Paste your Title ID and Title Secret Key (PlayFab Game Manager → Settings → API Features).
- Click Save & Discover Stats.
The Title Secret Key is stored in Supabase Vault and never returned to your browser — only the Traced Edge Function reads it for outbound PlayFab calls.
2. Whitelist stats
The dashboard auto-discovers every stat your PlayFab title has configured. Toggle the ones you want public:
- Display label — overrides the raw stat name (e.g.
kdr_v2→ “Kill / Death”) - Sort direction — descending for “higher is better” (kills, XP), ascending for “lower is better” (best lap time)
Default is OFF. Changes propagate to the portal within 5 minutes.
3. Link player identities (in your Unity game)
After your existing PlayFab login completes, call Traced.RegisterPlayer with the PlayFab ID:
var login = await PlayFabClientAPI.LoginWithCustomIDAsync(...);
Traced.RegisterPlayer(
playerId: login.PlayFabId, // or your own player_id
displayName: login.DisplayName,
externalIds: new Dictionary<ExternalIdProvider, string> {
{ ExternalIdProvider.PlayFab, login.PlayFabId }
}
);One call per player per login. The SDK bundles the registration into its next batch — no extra HTTP request.
What players see
Game page — leaderboard cards under the existing player feed. Players in the top 10 who are linked to a Traced profile become clickable; unlinked players show as plain text (the leaderboard always matches PlayFab's actual top 10).
Player profile page — a Stats card with your whitelisted stats. Hidden entirely if the player has no PlayFab link.
Multi-platform games
The SDK supports multiple external IDs per player. If your game's identity layer is PlayFab and you also know the player's Steam / Xbox / Oculus ID, attach them too:
Traced.RegisterPlayer(
playerId: playfabId,
externalIds: new Dictionary<ExternalIdProvider, string> {
{ ExternalIdProvider.PlayFab, playfabId },
},
customExternalIds: new Dictionary<string, string> {
{ "steam", steamId },
{ "oculus", oculusUserId }
}
);Custom string-keyed IDs are stored as-is. When the SDK adds formal Steam/Oculus support, your existing data lights up automatically.
Costs & caching
- Leaderboards cache for 5 minutes per stat per project
- Player stats cache for 15 minutes per player
- Stat definitions cache for 1 hour
- On PlayFab outages we serve stale cache rather than fail the portal
For a portal averaging 100 page views/hour with 5 whitelisted stats, that's ~12 PlayFab Admin API calls/hour — well within PlayFab's 100 req/sec/title limit.