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 ReviewPageHeader2 widget is an enhanced version of the review page header, featuring a modular component-based architecture with advanced social proof ribbons, flexible bonus display controls, and simplified attribute configuration. Built on modern React patterns with full responsive support.
ctacolors and ctahovercolors attributes (no JSON configuration object)fullwidth attribute for container-width layouts<nw-blocks id="reviewpageheader2"
cloakedlink="greatwin-casino"
language="fr"
country="DE"
rating="5.0"
socialproofkey="wgt-reviewPageHeader-socialproof-sp" \>
</nw-blocks>
Use Case: Brands with highest traffic/engagement metrics
<nw-blocks id="reviewpageheader2"
cloakedlink="greatwin-casino"
language="fr"
country="DE"
rating="5.0"
socialproofkey="wgt-reviewPageHeader-socialproof-tr" \>
</nw-blocks>
Use Case: Brands with highest user ratings
<nw-blocks id="reviewpageheader2"
cloakedlink="greatwin-casino"
language="fr"
country="DE"
rating="5.0"
socialproofkey="wgt-reviewPageHeader-socialproof-ec" \>
</nw-blocks>
Use Case: Editorial team’s recommended picks
<nw-blocks id="reviewpageheader2"
cloakedlink="greatwin-casino"
language="fr"
country="DE"
rating="5.0"
socialproofkey="wgt-reviewPageHeader-socialproof-pc" \>
</nw-blocks>
Use Case: Community-voted favorites
<nw-blocks id="reviewpageheader2"
cloakedlink="greatwin-casino"
language="fr"
country="DE"
rating="5.0"
socialproofkey="wgt-reviewPageHeader-socialproof-so" \>
</nw-blocks>
Use Case: Limited-time promotions
<nw-blocks id="reviewpageheader2"
cloakedlink="greatwin-casino"
language="fr"
country="DE"
rating="5.0"
socialproofkey="wgt-reviewPageHeader-socialproof-eo" \>
</nw-blocks>
Use Case: Site-exclusive bonuses/deals
<nw-blocks id="reviewpageheader2"
cloakedlink="luxury-casino"
language="en"
country="ZZ"
rating="5.0"
ctatext="Visit Site"
socialproofkey="wgt-reviewPageHeader-socialproof-sp" \>
</nw-blocks>
Use Case: Brands without bonus offers or restricted regions
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
id |
string | Yes | - | Unique widget identifier |
cloakedlink |
string | Yes | - | Brand identifier for tracking and data lookup |
language |
string | No | "en" |
Language code (ISO 639-1) |
country |
string | No | "ZZ" |
Country code (ISO 3166-1) |
countrystate |
string | No | - | US/CA state code for regional targeting |
rating |
string | No | "5.0" |
Brand rating (0.0-5.0 scale) |
votes |
string | No | "153" |
Number of user votes/reviews |
votescountkey |
string | No | "wgt-reviewPageHeader-votecount" |
Translation key for vote count text |
socialproofkey |
string | No | - | Translation key for social proof ribbon (sp/tr/ec/pc/so/eo) |
exclusivebonuskey |
string | No | "wgt-toplist-exclusive" |
Translation key for bonus “Exclusive” tag |
ctakey |
string | No | - | Translation key for CTA button text |
ctatext |
string | No | - | Override CTA button text (bypasses translation) |
ctacolors |
JSON array | No | ["#05842A", "#05842A"] |
CTA button gradient colors |
ctahovercolors |
JSON array | No | ["#096725", "#096725"] |
CTA button hover gradient colors |
trackinglinktarget |
string | No | - | Tracking link target path segment |
trackingdata |
string | No | - | Additional tracking metadata |
target |
string | No | "_blank" |
Link target attribute |
rel |
string | No | "nofollow" |
Link relationship attribute |
referer |
string | No | - | Referrer identifier for attribution tracking |
fullwidth |
boolean/string | No | true |
Enable full-width container layout |
<LabelRated>socialproofkey attributesocialRibbonText is provided<Logo><Rating><Bonuses> or <NoBonusCase><LabelBonus>: “Exclusive” indicator (conditional on !hideBonusRibbon)bonusTextadditionalBonusText<NoBonusCase> component when data unavailablehideBonuses, hideBonusRibbon, hideBonusText flags<CtaButton>ctacolors and ctahovercolors<Disclaimer>hasTrackingLink)hasDisclaimer is trueThe widget applies conditional CSS classes based on data availability:
| Class | Condition | Purpose |
|---|---|---|
no-disclaimer |
No compliance disclaimer | Adjust bottom spacing |
is-fw |
fullwidth="true" |
Full-width container layout |
has-label-rated |
Social proof ribbon present | Add top spacing for ribbon |
no-label-bonus |
No bonus tag text | Hide bonus ribbon area |
no-bonuses |
No bonus data available | Adjust bonus section layout |
Example Class Combination: no-disclaimer is-fw has-label-rated
fullwidth="true"All tracking links follow this pattern:
/go/{cloakedlink}/{trackinglinktarget}?wid={id}&trackingData={trackingdata}&referer={referer}
Example:
/go/greatwin-casino/homepage?wid=reviewpageheader2&trackingData=header-cta&referer=blog-123
Terms & Conditions Link:
/go/{cloakedlink}/tc?wid={id}&trackingData={trackingdata}
<nw-blocks id="reviewpageheader2"
cloakedlink="betway-casino"
language="en"
country="US"
rating="4.7"
votes="234"
socialproofkey="wgt-reviewPageHeader-socialproof-sp"
trackinglinktarget="review-header" \>
</nw-blocks>
<nw-blocks id="reviewpageheader2"
cloakedlink="draftkings-sports"
language="en"
country="US"
rating="4.9"
votes="512"
ctacolors='["#ff6b35", "#f7931e"]'
ctahovercolors='["#e85a2a", "#de8419"]'
socialproofkey="wgt-reviewPageHeader-socialproof-tr" \>
</nw-blocks>
<nw-blocks id="reviewpageheader2"
cloakedlink="cresus-casino"
language="fr"
country="FR"
rating="4.5"
votes="153"
ctakey="cta-jouer-maintenant"
socialproofkey="wgt-reviewPageHeader-socialproof-ec"
exclusivebonuskey="wgt-offre-exclusive" \>
</nw-blocks>
<nw-blocks id="reviewpageheader2"
cloakedlink="fresh-casino"
language="de"
country="DE"
rating="4.3"
votes="89"
fullwidth="true"
socialproofkey="wgt-reviewPageHeader-socialproof-pc" \>
</nw-blocks>
<nw-blocks id="reviewpageheader2"
cloakedlink="fanduel-casino"
language="en"
country="US-CO"
rating="4.6"
votes="378"
ctatext="Play in New Jersey"
socialproofkey="wgt-reviewPageHeader-socialproof-so"
trackingdata="nj-review" \>
</nw-blocks>
fullwidth="true" for content-focused layoutsrel="nofollow" for affiliate links<nw-blocks id="reviewpageheader2"
cloakedlink="casino-brand"
language="en"
country="US"
rating="4.5"
ctacolors='["#667eea", "#764ba2"]'
ctahovercolors='["#5568d3", "#63408b"]'
socialproofkey="wgt-reviewPageHeader-socialproof-ec" \>
</nw-blocks>
<!-- Primary Recommendation -->
<nw-blocks id="review-header-primary"
cloakedlink="top-casino"
language="en"
country="US"
rating="4.9"
fullwidth="true"
socialproofkey="wgt-reviewPageHeader-socialproof-ec"
trackingdata="top-recommendation" \>
</nw-blocks>
<!-- Alternative Option -->
<nw-blocks id="review-header-alternative"
cloakedlink="runner-up-casino"
language="en"
country="US"
rating="4.7"
socialproofkey="wgt-reviewPageHeader-socialproof-pc"
trackingdata="alternative-option" \>
</nw-blocks>
<nw-blocks id="reviewpageheader2"
cloakedlink="betmgm-sports"
language="en"
country="US"
countrystate="PA"
rating="4.6"
votes="287"
ctatext="Bet in Pennsylvania"
ctacolors='["#004d00", "#003300"]'
socialproofkey="wgt-reviewPageHeader-socialproof-so"
trackingdata="pa-geo-target" \>
</nw-blocks>
<nw-blocks id="reviewpageheader2"
cloakedlink="casino-brand"
language="en"
country="US"
rating="4.5"
ctacolors='["#1a1a1a", "#0d0d0d"]'
ctahovercolors='["#2a2a2a", "#1a1a1a"]'
fullwidth="true"
socialproofkey="wgt-reviewPageHeader-socialproof-tr" \>
</nw-blocks>
The widget fetches brand data from Sanity CMS using the cloakedlink identifier:
{
brandName: string; // Brand display name
imgUrl: string; // Logo image URL
trackingLink: string; // Base tracking link
bonusText: string; // Main bonus text
additionalBonusText?: string; // Extra bonus details
bonusTagText?: string; // Bonus ribbon text ("Exclusive")
socialRibbonText?: string; // Social proof ribbon text
complianceDisclaimer: {
disclaimer: string | null; // HTML disclaimer content
};
isActive: boolean; // Brand availability status
hasTrackingLink: boolean; // Whether to show T&C link
minimumAge?: string; // Age requirement
}
KV Key Format: {cloakedlink}#{language}#{country}#default#tc
Example: greatwin-casino#fr#DE#default#tc
Stored Data:
| Key Pattern | Example | Purpose |
|---|---|---|
| Vote Count | wgt-reviewPageHeader-votecount |
“{count} votes” |
| Social Proof (sp) | wgt-reviewPageHeader-socialproof-sp |
“Super Popular” |
| Social Proof (tr) | wgt-reviewPageHeader-socialproof-tr |
“Top Rated” |
| Social Proof (ec) | wgt-reviewPageHeader-socialproof-ec |
“Editor’s Choice” |
| Social Proof (pc) | wgt-reviewPageHeader-socialproof-pc |
“Player’s Choice” |
| Social Proof (so) | wgt-reviewPageHeader-socialproof-so |
“Special Offer” |
| Social Proof (eo) | wgt-reviewPageHeader-socialproof-eo |
“Exclusive Offer” |
| Exclusive Bonus | wgt-toplist-exclusive |
“Exclusive” |
| CTA Button | cta-claim-bonus |
“Claim Bonus” |
If isActive === false, the widget displays:
<p id="inactive-brand" style="display: none;">
The brand with name {brandName} is currently inactive or not allowed in this country! (loaded with Review Header V2 widget..)
</p>
bonusText or additionalBonusText: Widget displays <NoBonusCase> componenthideBonuses: true: Bonus section completely hiddenhideBonusRibbon: true: Exclusive tag hidden, bonus text remainshideBonusText: true: Bonus text hidden, exclusive tag remainssocialproofkey: Widget renders without ribbon (top label section empty)ctacolors: Falls back to default green ["#05842A", "#05842A"]ctahovercolors: Falls back to default dark green ["#096725", "#096725"]fullwidth: Treats as true (default behavior)| Feature | ReviewPageHeader (v1) | ReviewPageHeader2 (v2) | ReviewPageHeader3 (v3) |
|---|---|---|---|
| Architecture | Fixed 3-layout responsive | Modular component-based | Enhanced modular with backgrounds |
| Social Proof | Single “User Choice” pill | 6 ribbon types (sp/tr/ec/pc/so/eo) | Enhanced ribbon system |
| Configuration | JSON configuration object |
Direct attributes | Direct attributes + background |
| Button Colors | Via button-colors in config |
Direct ctacolors attribute |
Direct ctacolors attribute |
| Full Width | No | Optional fullwidth |
Optional fullwidth |
| Bonus Display | 3 device-specific layouts | Unified responsive with fallback | Enhanced bonus styling |
| CSS Classes | Static | Dynamic based on data | Dynamic + theme support |
| Component Separation | Monolithic | Modular (Logo, Rating, Bonuses, CTA, Disclaimer) | Enhanced modular |
| No Bonus Handling | Manual | Automatic <NoBonusCase> |
Enhanced no-bonus display |
| Best For | Legacy sites | Modern review pages | Premium brand showcases |
All examples using <bw-widget> remain fully functional:
<bw-widget id="reviewpageheader2"
cloakedlink="greatwin-casino"
language="fr"
country="DE"
rating="5.0"
socialproofkey="wgt-reviewPageHeader-socialproof-sp"
ctacolors='["#05842A", "#05842A"]'
fullwidth="false" \>
</bw-widget>
Migration Path: Replace <bw-widget> with <nw-blocks> - all attributes remain compatible.
The widget supports both camelCase and lowercase attribute names:
cloakedLink / cloakedlink ✅trackingLinkTarget / trackinglinktarget ✅ctaKey / ctakey ✅votesCountKey / votescountkey ✅