Content recommendations
Recommendations help you maintain viewer engagement by keeping the next item served to viewers relevant. In a sports app, relevance might mean what everyone is watching right now, what this viewer tends to open, or a mix across surfaces. Experiences gives you different tools for those cases, so you are not forced into one algorithm for every widget.
Trending is the shared feed option. It is a shared ranking based on aggregated engagement signals (with time decay). It isn’t personalized per viewer, so viewers see a shared order. You still configure the Recommendations data source in the SDK, but you pick the Trending type. See Recommendations data source and the Trending section below.
Personalization is the per-viewer option. Your integration either uses explicit preferences and app state (for example, favorite teams and followed players) and maps that to labels or ranked content IDs (explicit personalization). Or it lets the service infer interest from behavior and return For you (implicit personalization, for Moments and Stories). Walk through the patterns in Explicit personalization and Implicit personalization.
flowchart TD R[Recommendations] R --> T[Trending global] R --> P[Personalization viewer-specific] P --> E[Explicit labels IDs follows] P --> I[Implicit For you behavior]
- Labels, content IDs, Blazefeed, and patterns: Explicit personalization.
- Fetching the trending ranking server-side: Recommendations.
- Cold start and
coldStartLabelsfor For you: Implicit personalization. - Follow in the Moments player: Follow button for Moments.
- Viewer ID specifications: Viewer ID. Tracking and For you limits: Viewer privacy considerations and privacy compliance.
Trending (global recommendations)
Trending is the global recommendations path: content is ranked from aggregated engagement signals (with time decay), not per viewer. You point a widget or player source at the Recommendations data source with the Trending type. Viewers see what is broadly popular without your app sending viewer preference signals for that ranking.
Use Trending when you want a shared feed (for example, a home-screen highlights rail) or when tracking limits mean you can't use For you (see Viewer privacy considerations and privacy compliance).
You can also fetch the trending ranking server-side, outside the SDK, with the Recommendations endpoint. Use that when your backend needs the trending set itself: to build a custom feed, to check whether a piece of content is currently trending, or to drive push notifications.
Personalization (viewer-specific)
Personalization covers recommendations tailored to a viewer. It breaks into explicit (declared preferences and your mapping to labels or ranked IDs) and implicit (the service ranks from behavior; For you).
| Explicit | Implicit (available for Moments and Stories only) | |
|---|---|---|
| What it is | Viewers explicitly select what they want.
| The recommendations service learns what the viewer likes from the viewer's behavior. |
| Example | The viewer selects the favorite team | The viewer watches a series of goals |
| Implementation |
| The Experiences AI-driven recommendation engine provides a ranked content list that the SDK uses to serve content. The recommendations engine does the mapping for you. |
SDK API reference
In Concepts, Recommendations, Trending, and Personalization (explicit vs implicit) describe how content is chosen. The SDK uses different names in code. Those API names aren't the same as the Concepts terms:
-
BlazeRecommendationsType(native) and the Webrecommendationsbuilder load For you and Trending from the recommendations service. -
BlazeDataSourcePersonalizedType(iOS and Android) and Webpersonalizedonlabels()withBlazePersonalizedadd optional ID or label filters on certain data sources. They don't mean "Personalization" in the Concepts sense by themselves. -
Web (
BlazeSDK):DataSourceBuilderon the BlazeSDK class forrecommendations(For you and Trending) and optionalpersonalizedonlabels(BlazePersonalized)
Updated 1 day ago
