BET 3-in-1 is a lightweight floating entry point designed to streamline the integration of Sportradar's fan engagement tools by providing a single, customizable gateway to Virtual Stadium, Bet Concierge, and StatsHub.
Instead of managing multiple widget integrations, BET 3-in-1 gives your users instant access to all enabled products through one unobtrusive button — keeping your page clean while maximising engagement.
Instead of managing multiple widget integrations, BET 3-in-1 gives your users instant access to:

Social interaction meets live match visualization. Keep fans engaged with real-time chat, interactive graphics, and community features that turn passive viewers into active participants.

AI-powered betting intelligence at your users' fingertips. Deliver personalized insights, smart suggestions, and data-driven recommendations that drive betting action and user satisfaction.

Deep statistical analysis for data-hungry users. Comprehensive match statistics, historical data, and performance metrics that inform smarter betting decisions.

A floating button in a fixed position. There when needed, unobtrusive when not.

One click reveals up to three options in an animated menu.

Opens in an optimized modal on desktop or full-screen overlay on mobile.
BET 3-in-1 is fully customizable to match your brand identity.
The launcher trigger icon adapts automatically to the sport of the current match.










To initialize BET 3-in-1 (bet3in1), add the following code to your page:
<script>
(function(a,b,c,d,e,f,g,h,i){a[e]||(i=a[e]=function(){(a[e].q=a[e].q||[]).push(arguments)},i.l=1*new Date,i.o=f,
g=b.createElement(c),h=b.getElementsByTagName(c)[0],g.async=1,g.src=d,g.setAttribute("n",e),h.parentNode.insertBefore(g,h)
)})(window,document,"script","https://widgets.sir.sportradar.com/sportradar/widgetloader","SIR", {
language: 'en'
});
// BET 3-in-1
SIR('addWidget', '#sr-widget', 'bet3in1', {
matchId: {MATCH_ID},
products: {
virtualStadium: {
enabled: true,
jwt: "{JWT}",
channelId: "{CHANNEL_ID}",
label: "Virtual Stadium",
order: 1
},
betConcierge: {
enabled: true,
jwt: "{JWT}",
label: "Bet Concierge",
description: "AI Insights",
order: 2
},
statsHub: {
enabled: true,
clientAlias: "{CLIENT_ALIAS}",
label: "StatsHub",
description: "Deep Stats",
order: 3
}
}
});
</script>
<div class="wl-wrapper">
<div class="sr-wl-widget"></div>
</div>Enable only the products you license — toggle individual products on/off with a simple configuration change.
bet3in1MATCH_ID — Sportradar Match ID. Example: 50955863JWT — String or getJwt callback promise returning a signed JSON Web Token. Required for Virtual Stadium and Bet Concierge. See JWTCHANNEL_ID — Virtual Stadium channel ID. Required when Virtual Stadium is enabledCLIENT_ALIAS — Your client alias for StatsHub URL generation. Required when StatsHub is enabledTo enable betting functionality (e.g., adding a suggested bet from Bet Concierge to the betslip or using Flash Bet in Virtual Stadium), you must register an adapter. The adapter acts as a bridge between the Sportradar widget and your sportsbook's betslip API.
Data adapter for Bet Concierge betting functionality.
Adapter for Virtual Stadium Flash Bet integration.
For Virtual Stadium and Bet Concierge to function correctly, you must pass a valid JSON Web Token (JWT) representing the authenticated user.
JWT Required Claims — See the full documentation for required claims: JWT Authentication Guide
StatsHub requires you to complete a setup document. Download the latest version from the StatsHub demo page to get started.
StatsHub Setup — Download Setup Document
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
matchId | string | required | Match ID | |
products | object | required | Products configuration object | |
products.virtualStadium | object | Virtual Stadium configuration | ||
products.virtualStadium.label | string | Custom label (default: 'Virtual Stadium') | ||
products.virtualStadium.icon | string | Custom icon URL | ||
products.virtualStadium.order | number | Display order (1-3) | ||
products.virtualStadium.channelId | string | VS channel ID (required if enabled) | ||
products.virtualStadium.jwt | string | JWT token for authentication | ||
products.betConcierge | object | Bet Concierge configuration | ||
products.betConcierge.label | string | Custom label (default: 'Bet Concierge') | ||
products.betConcierge.description | string | Custom description (default: 'AI Insights') | ||
products.betConcierge.icon | string | Custom icon URL | ||
products.betConcierge.order | number | Display order (1-3) | ||
products.betConcierge.getJwt | function | Function to get JWT token | ||
products.statsHub | object | StatsHub configuration | ||
products.statsHub.label | string | Custom label (default: 'StatsHub') | ||
products.statsHub.description | string | Custom description (default: 'Deep Stats') | ||
products.statsHub.icon | string | Custom icon URL | ||
products.statsHub.order | number | Display order (1-3) | ||
products.statsHub.clientAlias | string | Client alias (used to auto-generate URL) | ||
launcherTriggerImage | string | Custom primary button icon URL (SVG/PNG, 1 ratio, transparent bg) | ||
position | string | 'bottom-right' | Position: 'bottom-right', 'bottom-left' |
Theming customization allows you to tailor the appearance of the BET 3-in-1 to meet your specific needs and brand identity. Customization is achieved by applying custom CSS properties to the various HTML elements that make up the widget.
Widget comes with pre-existing styling but can be customized by applying custom CSS properties to its different HTML elements. The widget's custom class selectors are listed below. Note that all custom classes must be nested within the .sr-bb.sr-wl selector class. This ensures that the custom styles only apply to that widget and not to other elements on the page.
For general widget theming (colors, fonts, dark/light mode), see Widget Theming.
The main floating button that opens and closes the BET 3-in-1 menu.
| Class | Customization options |
|---|---|
srct-3in1-trigger | background-color, border-radius, box-shadow, color |
The wrapper that controls the position of the expanded BET 3-in-1 menu.
| Class | Customization options |
|---|---|
srct-3in1-container | left, right, bottom |
The pill buttons displayed when the BET 3-in-1 is expanded. Use the base class to style all product buttons at once, or target individual products using their modifier classes.
| Class | Customization options |
|---|---|
srct-3in1-productbutton | background-color, color, border-radius, box-shadow |
srct-3in1-productbutton--virtualstadium | background-color, color, border-radius, box-shadow |
srct-3in1-productbutton--betconcierge | background-color, color, border-radius, box-shadow |
srct-3in1-productbutton--statshub | background-color, color, border-radius, box-shadow |
The inner elements of each product button.
| Class | Customization options |
|---|---|
srct-3in1-productbutton__icon | color |
srct-3in1-productbutton__title | font-size, color, font-weight |
srct-3in1-productbutton__description | font-size, color, font-weight |
The overlay panel that displays the selected product. Includes backdrop, header, and close controls.
| Class | Customization options |
|---|---|
srct-3in1-productoverlay__backdrop | background-color, left, right, bottom |
srct-3in1-productoverlay__header | background-color, border-bottom |
srct-3in1-productoverlay__title | font-size, color, font-weight |
srct-3in1-productoverlay__close | color, background-color, stroke |
srct-3in1-productoverlay__content | border-radius, box-shadow |
.sr-bb.sr-wl .srct-3in1-trigger {
background-color: #1a73e8;
}
.sr-bb.sr-wl .srct-3in1-productbutton--virtualstadium {
background-color: #6c5ce7;
}
.sr-bb.sr-wl .srct-3in1-productbutton--betconcierge {
background-color: #00b894;
}
.sr-bb.sr-wl .srct-3in1-productbutton--statshub {
background-color: #fdcb6e;
color: #2d3436;
}.sr-bb.sr-wl .srct-3in1-productoverlay__content {
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
.sr-bb.sr-wl .srct-3in1-productoverlay__backdrop {
background-color: rgba(0, 0, 0, 0.6);
}
.sr-bb.sr-wl .srct-3in1-productoverlay__header {
background-color: #1a1a2e;
border-bottom: 1px solid #333;
}Learn how to obtain match IDs required for widget configuration.
Set up JSON Web Token authentication for Virtual Stadium and Bet Concierge.
Implement analytics and monitoring for widget interactions and performance.