Tag Migration Notice: This widget uses the legacy bw-widget tag. For new implementations, please use <nw-blocks> tags instead. The bw-widget tag remains supported for backward compatibility.
The SingleBrandBanner2 widget displays a full-width promotional banner featuring a single brand with logo, bonus text, a customizable background image, and a call-to-action button. Unlike its predecessor (singlebrandbanner), this widget supports two data sources:
cloakedlink): fetches a specific brand directlysellingpointtype + product): picks a brand from a toplist by positioncloakedlink presence{
"brandId": "greatwin-casino",
"isActive": true,
"imgUrl": "/content/cms-images/40851a7c22de906342a1dc52d44bd9d69709310b-600x240.webp",
"trackingLink": "greatwin-casino",
"brandName": "Greatwin Casino",
"bonus": "500 €",
"bonusText": "Get €1577 First Deposit Star Platinum",
"additionalBonusText": "+77 Free Spins Stone Ocean",
"bonusExtra": "",
"extraFreespins": 200,
"alt": "Greatwin Casino",
"ctaText": "Réclamez votre Bonus",
"ctaColors": [
"#05842A",
"#05842A"
],
"ctaHoverColors": [
"#096725",
"#096725"
],
"target": "_blank",
"rel": "nofollow",
"trackingTarget": "banner-hero",
"trackingData": "",
"hideBonuses": false,
"hideBonusRibbon": false,
"hideBonusText": false,
"minimumAge": "0",
"backgroundImage": "/content/cms-images/fb3f545116d1704a8358752506fce5f0b39369d9-1920x1080.webp",
"fullwidth": "true",
"channel": "pu",
"country": "FR",
"language": "fr",
"referer": "review-page",
"product": "CA",
"sellingPointType": "general"
}
{
"brandId": "ladbrokes-sport",
"isActive": true,
"imgUrl": "ladbrokes-sport.png",
"trackingLink": "ladbrokes-sport",
"brandName": "Ladbrokes Sport",
"bonus": "-",
"bonusExtra": "",
"alt": "Ladbrokes Sport",
"ctaText": "S'inscrire maintenant",
"ctaColors": [
"#CE7114",
"#ECB22B"
],
"ctaHoverColors": [
"#C6740B",
"#D47E1A"
],
"target": "_blank",
"rel": "nofollow",
"trackingTarget": "toplist-banner",
"trackingData": "",
"hideBonuses": false,
"hideBonusRibbon": false,
"hideBonusText": false,
"minimumAge": "0",
"backgroundImage": "/content/cms-images/fb3f545116d1704a8358752506fce5f0b39369d9-1920x1080.webp",
"fullwidth": "true",
"channel": "pu",
"country": "FR",
"language": "fr",
"referer": "homepage",
"product": "CA",
"sellingPointType": "general"
}
{
"brandId": "greatwin-casino",
"isActive": true,
"imgUrl": "/content/cms-images/40851a7c22de906342a1dc52d44bd9d69709310b-600x240.webp",
"trackingLink": "greatwin-casino",
"brandName": "Greatwin Casino",
"bonus": "500 €",
"bonusText": "Get €1577 First Deposit Star Platinum",
"additionalBonusText": "+77 Free Spins Stone Ocean",
"bonusExtra": "",
"extraFreespins": 200,
"alt": "Greatwin Casino",
"ctaText": "S'inscrire",
"ctaColors": [
"#05842A",
"#05842A"
],
"ctaHoverColors": [
"#096725",
"#096725"
],
"target": "_blank",
"rel": "nofollow",
"trackingTarget": "",
"trackingData": "",
"hideBonuses": false,
"hideBonusRibbon": false,
"hideBonusText": false,
"minimumAge": "0",
"backgroundImage": "/content/cms-images/fb3f545116d1704a8358752506fce5f0b39369d9-1920x1080.webp",
"fullwidth": false,
"channel": "se",
"country": "FR",
"language": "fr",
"product": "CA",
"sellingPointType": "general"
}
{
"brandId": "greatwin-casino",
"isActive": true,
"imgUrl": "/content/cms-images/40851a7c22de906342a1dc52d44bd9d69709310b-600x240.webp",
"trackingLink": "greatwin-casino",
"brandName": "Greatwin Casino",
"bonus": "500 €",
"bonusText": "Get €1577 First Deposit Star Platinum",
"additionalBonusText": "+77 Free Spins Stone Ocean",
"bonusExtra": "",
"extraFreespins": 200,
"alt": "Greatwin Casino",
"ctaText": "Parier Maintenant",
"ctaColors": [
"#05842A",
"#05842A"
],
"ctaHoverColors": [
"#096725",
"#096725"
],
"target": "_blank",
"rel": "nofollow",
"trackingTarget": "",
"trackingData": "",
"hideBonuses": false,
"hideBonusRibbon": false,
"hideBonusText": false,
"minimumAge": "0",
"backgroundImage": "/content/cms-images/c772fd72f9ecafdfbee6b4cd9bbc31014af74ed4-839x360.jpg",
"fullwidth": false,
"channel": "se",
"country": "FR",
"language": "fr",
"product": "SB",
"sellingPointType": "general"
}
{
"brandId": "kto-sport",
"isActive": true,
"imgUrl": "/content/cms-images/8af1dc75f8b3a7ceb4e5cfeb234854174eb827c3-600x240.webp",
"trackingLink": "kto-sport",
"brandName": "KTO Sport",
"bonus": "-",
"bonusExtra": "",
"alt": "KTO Sport",
"ctaText": "S'inscrire",
"ctaColors": [
"#05842A",
"#05842A"
],
"ctaHoverColors": [
"#096725",
"#096725"
],
"target": "_blank",
"rel": "nofollow",
"trackingTarget": "",
"trackingData": "",
"hideBonuses": false,
"hideBonusRibbon": false,
"hideBonusText": false,
"minimumAge": "0",
"backgroundImage": "/content/cms-images/fb3f545116d1704a8358752506fce5f0b39369d9-1920x1080.webp",
"fullwidth": false,
"channel": "se",
"country": "FR",
"language": "fr",
"product": "CA",
"sellingPointType": "general"
}
{
"brandId": "BetClic",
"isActive": true,
"imgUrl": "/content/cms-images/add694fd837aedab0dd8e90530cc925839ca14d8-600x240.webp",
"trackingLink": "betclic-sport",
"brandName": "Betclic Sport",
"bonus": "100 €",
"bonusText": "200% up to 2000EUR",
"additionalBonusText": "DevOp checks",
"bonusExtra": "you gonna win",
"extraFreespins": 34,
"alt": "Betclic Sport",
"ctaText": "S'inscrire",
"ctaColors": [
"#05842A",
"#05842A"
],
"ctaHoverColors": [
"#096725",
"#096725"
],
"target": "_blank",
"rel": "nofollow",
"trackingTarget": "",
"trackingData": "",
"hideBonuses": false,
"hideBonusRibbon": false,
"hideBonusText": false,
"minimumAge": "0",
"backgroundImage": "/content/cms-images/c772fd72f9ecafdfbee6b4cd9bbc31014af74ed4-839x360.jpg",
"fullwidth": false,
"channel": "se",
"country": "FR",
"language": "fr",
"product": "CA",
"sellingPointType": "general"
}
Note: To simulate mobile rendering, use browser DevTools (F12 → Toggle device toolbar) or a mobile User-Agent. The widget automatically selects the mobile background image based on the User-Agent header.
{
"brandId": "greatwin-casino",
"isActive": true,
"imgUrl": "/content/cms-images/40851a7c22de906342a1dc52d44bd9d69709310b-600x240.webp",
"trackingLink": "greatwin-casino",
"brandName": "Greatwin Casino",
"bonus": "500 €",
"bonusText": "Get €1577 First Deposit Star Platinum",
"additionalBonusText": "+77 Free Spins Stone Ocean",
"bonusExtra": "",
"extraFreespins": 200,
"alt": "Greatwin Casino",
"ctaText": "Parier",
"ctaColors": [
"#05842A",
"#05842A"
],
"ctaHoverColors": [
"#096725",
"#096725"
],
"target": "_blank",
"rel": "nofollow",
"trackingTarget": "",
"trackingData": "",
"hideBonuses": false,
"hideBonusRibbon": false,
"hideBonusText": false,
"minimumAge": "0",
"backgroundImage": "/content/cms-images/c772fd72f9ecafdfbee6b4cd9bbc31014af74ed4-839x360.jpg",
"fullwidth": "true",
"channel": "se",
"country": "FR",
"language": "fr",
"product": "SB",
"sellingPointType": "general"
}
| Condition | Source | GQL Query | KV Query |
|---|---|---|---|
cloakedlink is provided |
Brand | brandVulcanQuery |
brandVulcanQuery |
cloakedlink is empty/missing |
Toplist | vulcanTopsQuery |
vulcanTopsQuery |
cloakedlinkwebsiteId + sellingPointTypebrandposition index (0-based)null if product is not defined (required for toplist source)| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
id |
string | Yes | - | Must be "singlebrandbanner2" |
cloakedlink |
string | No* | "" |
Brand identifier. If set, uses Brand source |
sellingpointtype |
string | No* | "general" |
Toplist selling point type (used when no cloakedlink) |
product |
string | Yes (toplist) | "" |
Product code (CA/SB/BI/PO/LO/LI/FN/ES/CR/CF/ST) |
backgroundimage |
string | No | "" |
Background image code (e.g., “football”, “tennis”) |
brandposition |
number | No | 0 |
0-based index of brand to pick from toplist |
fullwidth |
boolean | No | false |
Whether banner spans full width |
language |
string | No | "en" |
Language code (ISO 639-1) |
country |
string | No | "" |
Country code (ISO 3166-1) |
ctatext |
string | No | - | Override CTA button text (bypasses translation) |
ctakey |
string | No | "cta-claim-bonus" |
Translation key for CTA button text |
ctacolors |
string/JSON | No | ["#05842A", "#05842A"] |
CTA button gradient colors |
ctahovercolors |
string/JSON | No | ["#096725", "#096725"] |
CTA button hover gradient colors |
trackinglinktarget |
string | No | "" |
Tracking link target path segment |
target |
string | No | "_blank" |
Link target attribute |
rel |
string | No | "nofollow" |
Link relationship attribute |
referer |
string | No | - | Referrer identifier for attribution |
channel |
string | No | - | Channel identifier (e.g., “pu”) |
anchorid |
string | No | "" |
HTML anchor ID for the widget |
*Either cloakedlink OR sellingpointtype + product is required.
Background images are managed in Sanity CMS under the key single-brand-banner2. Each asset has:
backgroundimage attribute (e.g., “football”, “tennis”)The widget automatically detects the device type via the User-Agent header:
mobileImagedesktopImage| Code | Description |
|---|---|
football |
Football/soccer themed background |
tennis |
Tennis themed background |
Additional codes can be added via Sanity CMS without code changes.
The scope returns a unified SingleBrandBanner2Result object regardless of the data source:
{
brandId: string; // Brand legacy ID or cloaked link
isActive: boolean; // Whether brand is active for user's country
imgUrl: string; // Brand logo image URL
trackingLink: string; // Brand cloaked link for tracking
brandName: string; // Brand display name
bonus: string; // Formatted bonus amount (e.g., "500 €")
bonusText?: string; // Primary bonus description text
additionalBonusText?: string; // Secondary bonus text
bonusExtra: string; // Extra bonus message
extraFreespins?: number; // Free spins count
alt: string; // Image alt text
ctaText?: string; // Resolved CTA button text
ctaColors?: string[]; // CTA gradient colors
ctaHoverColors?: string[];// CTA hover gradient colors
target: string; // Link target (_blank, _self, etc.)
rel: string; // Link rel attribute
trackingTarget: string; // Tracking target segment
trackingData: string; // Additional tracking data
hideBonuses: boolean; // Compliance: hide all bonus info
hideBonusRibbon: boolean; // Compliance: hide bonus ribbon
hideBonusText: boolean; // Compliance: hide bonus text
minimumAge?: string; // Minimum age requirement
backgroundImage?: string; // Resolved background image URL
fullwidth?: boolean; // Full-width flag
channel?: string; // Channel identifier
country: string; // Resolved country code
language?: string; // Language code
referer?: string; // Referrer for attribution
anchorid?: string; // HTML anchor ID
product?: string; // Product code
sellingPointType?: string;// Selling point type
}
All clickable elements use the following tracking URL:
/go/{trackingLink}/{trackingTarget}?wid=singlebrandbanner2&trackingData={trackingData}&referer={referer}&channel={channel}
Example:
/go/greatwin-casino/banner-hero?wid=singlebrandbanner2&trackingData=&referer=review-page&channel=pu