Follow button for Moments
The follow button lets viewers follow players, teams, or competitions from within the content experience (for example, in the Moment player). Those choices support explicit personalization, such as customized widgets and prioritized feeds. The SDK now owns follow state itself — persisted on-device out of the box, with optional cross-device sync through Blaze.
What it does
- Follow control: Shows a follow/unfollow control in Moments. Stories and Videos are planned.
- Entity interest: Lets viewers express interest in specific entities (players, teams, competitions).
- Callbacks: Gives immediate visual feedback and calls your app when the viewer follows or unfollows.
- Appearance: The chip shows a
+that becomes a checkmark, a star that fills in, or a "Follow" label before following. You pick the icon and colors per state in the player style.
How it works
Out of the box
Every follow/unfollow — whether from a tap on the button, or from your app calling the SDK directly — is persisted locally on the device automatically. No backend, no setup, no host-side code required. This works for every viewer, including anonymous ones, survives app restarts, and works fully offline.
Syncing across devices (mutual: app + SDK)
If your app has activity sync enabled and the viewer is identified (an externalUserId is set), the SDK also syncs that same local state to Blaze and back — so a viewer's follows travel across their devices. This rides the same sync gate as the SDK's other user-activity signals; there's no separate follow-specific flag to turn on. Your app's role here is just: keep that identification/sync configuration in place. The SDK owns persistence and transport.
Sync is not real-time — it runs on the SDK's normal periodic batch/refresh cycle, not instantly on every tap. A follow made on one device typically shows up on another after the next sync cycle on each side, not immediately.
Setting state from your app
Your app can still read and write follow state directly (for example, to seed from your own backend, or to reflect a follow made in your app's own UI outside the player). There are two different operations, and they behave very differently once sync is involved:
- Incremental (follow/unfollow a specific entity — "insert"/"remove"): adds or removes just that entity. Safe to call from multiple devices — it never touches anything you didn't explicitly name.
- Replace (
setFollowedEntities/Initialize({ followedEntities })): treated as the complete, authoritative list — it overwrites everything else, including follows made from a different device, and is "latest wins" across every device the user has once synced.
❗️Only use replace when you deliberately mean "this is the full, correct list, override anything else." For anything additive, use the incremental insert/remove operations instead — a misplaced
setFollowedEntities/Initializecall can silently erase a follow made moments earlier on another device.
Which entity the button shows
The button shows one entity per Moment. The source depends on how the content was created.
Automated (WSC Sports ingested) content
Entity order comes from the WSC Sports publish pipeline and rules. SDK priority is Subject ID (when set by rules), then Player, then Team, then Competition/Property. You can configure the SDK to prefer players, teams, or a custom order. Subject IDs are players or teams only. Content managers can't change entity order for this content in Library.
Uploaded content
Content managers tag players and teams in Arena Library (Edit metadata). The first name in Players (or first in Teams for team follow) is the entity the button uses. Put the player or team central to the play first; Moments usually highlight one play.
See For content managers for steps.
For content managers
This workflow applies to uploaded assets in Library only.
Players
- Open the asset > metadata > Players to see who's tagged.
- Add the player viewers should follow. If several players are listed, the first is the follow subject.
- To reorder, select Edit, uncheck all, select the followable player first, then add any others.
Teams
- Same pattern in Teams metadata. The first team is the follow subject for team follow.
Publish to Experiences when metadata is correct so the Moment includes the updated tags.
If metadata looks right but the button is missing, tagged entities may lack follow images. Coordinate with your WSC Sports account team on follow image mapping.
What you need
- Assets: Player headshots, team logos, competition logos (if used). WSC Sports configures a
followImageappType and maps assets to entity IDs. Coordinate with your account team. - Entity IDs: Use the same player, team, and competition IDs as your data provider and WSC Sports.
- Backend (optional): No backend is required for follow state to persist and sync — the SDK handles that itself once activity sync is enabled and the viewer is identified. Only add your own backend involvement if you need the follow signal for something outside the SDK (for example, showing a "following" list in your app's own settings screen), or if you want to manage follow state without activity sync enabled at all.
Implementation
Add the follow-button action to the widget or player configuration. That's sufficient for follow state to persist locally and, once activity sync is on, sync across the viewer's devices — no additional host code required. Implement the follow/unfollow callback only if you need the event for your own purposes (analytics, custom logic, prompting sign-in for anonymous viewers, mirroring state in your own UI). See Web follow entities | iOS follow entities | Android follow entities.
Sample apps
For working reference code, see the Follow sample in your platform's sample app. Each one shows the steps above end to end, from passing the followed entities on launch through handling the callback and keeping your backend in sync.
See Android Follow sample | iOS Follow sample.
The follow button is also supported on Web, which has no sample app. For Web, follow the API reference instead: SDK class | global delegate methods.
For the full list of sample apps across platforms, see Sample apps.
Limitations
- Content type: Moments player only.
- Uploaded vs automated: Only uploaded content supports manual metadata control in Library. Automated content uses WSC Sports ingest order.
- Entity types: Players, teams, and competitions/properties only. Custom entities (for example, coaches, venues) aren't supported.
Updated about 9 hours ago
