Explicit personalization
Explicit personalization tailors content to declared viewer preferences, like favorite teams, followed players, preferred sports, or geography (home country or region). It’s one way to power recommendations using signals your app collects during onboarding or through an in-app interface, such as the Follow button for Moments.
Selecting content in the SDK: labels, content IDs, or both
You choose what is served to viewers through the Experiences SDK using labels, content IDs, or a mixture of both.
-
Labels: You map viewer preferences to content labels (metadata on content in Arena). The SDK uses those labels to filter or prioritize what is shown.
-
Content IDs: You ingest the Experiences content catalog using the content catalog endpoints. You query that catalog for content that matches viewer preferences. That returns a list of content IDs. You rank those IDs using your own ordering logic, then pass the ordered list to the SDK so it serves that content.
-
Mixture: You can combine label-based and ID-based data sources where your product design allows it.
That is explicit personalization: you learn what the viewer prefers, then you express that choice as labels, as ranked content IDs, or both.
Privacy considerations for explicit personalization
For explicit personalization, mapping preferences to labels or IDs happens in your app. The SDK doesn't store the preferences a viewer chooses or the mapping between a viewer and those preferences. It does store the viewer ID you set, so that the viewer stays identified across app launches. See Viewer privacy considerations and privacy compliance and Viewer ID.
How explicit personalization typically works
Most explicit personalization implementations follow a similar pattern:
- The viewer selects preferences (teams, players, regions, and so on).
- Your app stores these preferences in your backend.
- Your app maps preferences to content labels, or ingests and queries the Experiences catalog via Blazefeed to get content IDs that you rank, or uses a mixture of both approaches.
- The SDK serves content using the labels and/or ordered content IDs you provide.
This lets the SDK render personalized output without the SDK holding preference payloads.
What you can personalize
Followed/favorite entities
Personalize content based on entities (players, teams, competitions) that viewers follow or mark as favorite.
The Follow button for Moments is one way viewers declare those preferences inside the player. Your app stores the followed entity IDs, maps them to labels or ranked content IDs, and passes those values to the Experiences SDK so widgets and feeds can show content from followed entities first or exclusively.
For SDK setup, see Web SDK | iOS | Android.
Common use cases:
- Your favorite teams widget: Show only content from teams the viewer follows.
- Players you follow feed: Highlight Moments featuring followed players.
- Your league section: Surface content from competitions the viewer cares about.
Implementation: Load followed entity IDs from your backend, convert them into labels or content IDs, then prioritize content from followed entities before other content.
Geo-based personalization
Personalize content using the viewer's location, nationality, or region.
Common use cases:
- Made in [your country] widget: Highlight athletes from the viewer's country.
- Regional highlights: Surface regionally relevant content.
- Local team priority: Boost content from local or hometown teams.
Implementation: Filter or prioritize content using geographic labels.
Combined personalization
Blend multiple preference types to build richer, multi-layered experiences.
Common use cases:
- Top actions with favorites first: Show all highlights, but boost the viewer's favorites.
- Trending in [your region] + your teams: Combine regional trends with followed teams.
- All highlights with personalized ordering: Present the full catalog but sort based on preferences.
Implementation: Use label priority to create multi-tier ordering logic.
Personalization patterns
These patterns describe how filters and priorities create different personalization behaviors.
Pattern 1: pure filter
Scenario: Show only content from the viewer's followed entities.
Best for: Fully personalized sections, such as your team's feed.
Pattern 2: prioritized display
Scenario: Boost favorites to the top while still showing all other content.
Best for: General feeds where personalization enhances rather than restricts.
Pattern 3: multi-tier prioritization
Scenario: Order content based on multiple criteria, such as:
- Followed players
- Viewer's region
- Followed teams
- Everything else
Best for: Complex personalization strategies with layered preferences.
Implementation options for explicit personalization
Use content labels, content IDs, or both to determine which content is served and in what order.
| Labels-based personalization | Content catalog ID-based personalization | |
|---|---|---|
| How it works |
|
|
| Considerations |
|
|
Practical use case examples
Use case 1: your favorite teams widget
Goal: Show only content from teams the viewer follows.
Implementation: Labels method (pure filter)
Steps:
- Collect the viewer's followed team IDs.
- Translate those IDs into team labels.
- Configure the widget's data source to include only those labels.
Use case 2: top actions with favorites first
Goal: Show all top actions but prioritize content from the viewer's followed teams or players.
Implementation: Labels method (prioritized display)
Steps:
- Retrieve all top actions using a broad label such as
top-actions. - Translate followed players and teams into labels.
- Apply those labels in
labelsPriorityto boost them in the feed.
Result:
- Content featuring followed players
- Content featuring followed teams
- All other top actions content
Use case 3: made in [your country] widget
Goal: Show content featuring athletes from the viewer's country.
Implementation: Labels method (geo-based filter)
Steps:
- Detect the viewer's country from app settings or selection.
- Convert it into a country label (for example,
country:usa). - Filter the widget's content using that label.
Use case 4: multi-tier personalization
Goal: Show content in a layered order, such as followed players → region → followed teams → the rest.
Implementation: Labels method (multi-tier prioritization)
Steps:
- Gather all relevant viewer preferences (players, teams, region).
- Convert each preference type into a label.
- Apply an ordered
labelsPrioritylist reflecting the desired tiers.
Result:
- Content from followed players
- Content from the viewer's region
- Content from followed teams
- All remaining content
Use case 5: backend-powered personalized feed
Goal: Use your backend ranking logic to determine the exact content order (still explicit, driven by declared preferences or rules you own).
Implementation: Content catalog method (ID-based)
Steps:
- Query the catalog maintained in your backend.
- Apply your selection or ranking logic (for example, rules, scoring, A/B tests, or your models).
- Return an ordered list of content IDs to the SDK.
- Display results using
BlazeDataSourceType.ids()with manual ordering.
This differs from implicit recommendations (For you / Trending), where WSC Sports hosts the behavior model and the ranked list in the recommendations data source.
Updated 1 day ago
