Predictor

A season-long score predictor with Play, Leaderboard, Private Leagues, Rules, and Prizes tabs.

A full-featured, season-long football score predictor with a multi-tab interface. Users submit match score predictions across grouped matchweeks, track their standing on a global leaderboard, create or join private leagues, read game rules, and view prizes — all within a single embedded widget.

<div
	data-component="fu-widget"
	data-content-type="predictor"
	data-content-id="your-predictor-template-id"
	data-predictor-tabs="play,leaderboard,private-leagues,rules,prizes"
	data-signin-cta-label="Sign in to Predict"
	data-signin-cta-onclick="showSignInModal()"
	data-predictor-match-card-bg-image-url="https://example.com/stadium-bg.jpg"
	data-predictor-consents='[{"consentId":"tos","body":"I agree to the <a href=\"#\" target=\"_blank\" rel=\"noopener\">Terms of Service</a>","required":true,"defaultChecked":false}]'
></div>

Configuration Attributes

AttributeDescriptionOptions/FormatDefault
data-predictor-tabsComma-separated list of tabs to enable"play,leaderboard,private-leagues,rules,prizes"All tabs
data-signin-cta-labelOverride the sign-in button labelAny stringTranslated default
data-signin-cta-onclickJavaScript code to execute on sign-in clickJavaScript codeNone
data-signin-cta-urlDirect URL for the sign-in CTAValid URLNone
data-signin-cta-targetLink target for the sign-in CTA URL"_self", "_blank""_self"
data-predictor-match-card-bg-image-urlBackground image URL for match prediction cardsValid image URLGlobal config
data-predictor-consentsJSON array of consent definitions required before predictingArray of consent objects (see below)Global config
data-predictor-betslipJSON object to enable betslip integration inside PredictorPredictorBetslipConfig object (see below)Global config

Tabs

All tabs are shown by default. Use data-predictor-tabs to restrict which tabs are visible. The order in the attribute determines the display order.

Tab valueDescription
playMain prediction interface — submit match score forecasts
leaderboardGlobal rankings and user standings with pagination
private-leaguesCreate and join private leagues to compete with friends
rulesSearchable game rules and scoring system
prizesPrize distribution and rewards information

Consent Configuration

Require users to accept consent agreements before submitting their first prediction. Configure consents globally or per-widget using data-predictor-consents. Required consents block progression until accepted; optional consents are shown in the same modal but do not block it.

Global configuration:

FuWidget.init({
	// ... other config
	predictor: {
		consents: [
			{
				consentId: "tos",
				body: `I agree to the <a href="#" target="_blank" rel="noopener">Terms of Service</a>`,
				required: true,
				defaultChecked: false,
			},
		],
	},
});

Per-widget override:

<div
	data-component="fu-widget"
	data-content-type="predictor"
	data-content-id="your-predictor-template-id"
	data-predictor-consents='[{"consentId":"tos","body":"I agree to the <a href=\"#\" target=\"_blank\" rel=\"noopener\">Terms of Service</a>","required":true,"defaultChecked":false}]'
></div>

Consent Object Fields:

FieldTypeDescription
consentIdstringUnique identifier for the consent (e.g. "tos", "marketing")
bodystringText or HTML content of the consent label
requiredbooleanWhen true, the user must accept before they can predict
defaultCheckedbooleanPre-check the consent checkbox on load

Betslip Integration

The Predictor widget has built-in betslip support. When enabled, users can add selections directly from the prediction interface and place bets alongside their predictions.

The trigger field controls which predictions open the betslip:

ValueDescription
"predictions-only"Betslip appears only for predictions that carry live odds
"odds-only"Betslip appears for any odds, regardless of prediction state

Global configuration:

FuWidget.init({
	// ... other config
	predictor: {
		betslip: {
			trigger: "predictions-only",
			position: "bottom-right",
			currency: "USD",
			ctaUrlTemplate: "https://bookmaker.com/betslip?s={SELECTIONS}",
		},
	},
});

Per-widget override:

<div
	data-component="fu-widget"
	data-content-type="predictor"
	data-content-id="your-predictor-template-id"
	data-predictor-betslip='{"trigger":"predictions-only","position":"bottom-right","currency":"USD"}'
></div>

PredictorBetslipConfig fields:

FieldTypeDescription
triggerstringWhen to activate the betslip: "predictions-only" or "odds-only"
positionBetslipPositionWidget position on the page (same options as standalone Betslip)
maxSelectionsnumberMaximum allowed selections
stakePresetsnumber[]Quick-stake preset amounts
oddsPollingIntervalnumberOdds refresh interval in milliseconds
currencystringCurrency label
ctaUrlTemplatestringURL for the place-bet CTA
brandingLogoUrlstringBookmaker or sponsor logo URL
labelsBetslipLabelsOverride displayed text (see the Betslip widget page)

Authentication and Sign-in

The widget automatically detects user authentication status. When a user is not authenticated, a sign-in prompt is shown in the Play tab. Configure the sign-in CTA globally or per-widget using the same signInCTA configuration as other widgets.

FuWidget.init({
	// ... other config
	signInCTA: {
		defaultLabel: "Sign in to Predict",
		onClick: () => {
			window.location.href = "/signin";
		},
	},
});

Features

  • Multi-tab interface: Play, Leaderboard, Private Leagues, Rules, and Prizes
  • Season-long score prediction for grouped matchweeks
  • Global leaderboard with paginated standings and user rank highlighting
  • Private leagues — create and join custom competitive groups
  • Consent management with required/optional consent gates
  • Authentication-aware UI with configurable sign-in CTA
  • Custom match card background image
  • Built-in betslip integration for placing bets alongside predictions
  • Custom theming and multi-language support
📘

Related: Betslip widget (standalone betslip + the FuWidget.betslip API) · Features → Sign-in & Additional CTA.