Migration Notice: This widget uses the legacy bw-widget tag. While still supported, consider using nw-blocks for new implementations.
The Toplist3 widget is a modern, card-based brand comparison widget that displays brands in a responsive grid layout. Unlike table-based Toplist variants, Toplist3 uses individual styled cards with social proof ribbons, bonus displays, star ratings, and customizable CTA buttons. It supports both old (selling-point-type) and new (sellingpointtype) naming conventions.
maxrows up to 9hideBonuses, hideBonusRibbon, hideBonusTexteagercount attribute| Attribute | Type | Default | Description |
|---|---|---|---|
id |
string | Required | Widget identifier - must be toplist3 |
product |
string | undefined |
Product type filter: CA, SB, BI, PO, LO, LI, FN, ES, CR, CF, ST |
referer |
string | undefined |
Tracking referer parameter appended to tracking URLs |
short |
string | undefined |
Short identifier for brand selection |
country |
string | fr |
Country code (ISO 2-letter). Supports state codes: US-NJ, CA-ON |
country-state |
string | undefined |
State/province code for US/CA |
selling-point-type / sellingpointtype |
string | general |
Type of selling points to display (both naming conventions supported) |
currency |
string | EUR |
Currency code (converted to uppercase) |
language |
string | en |
Language code (ISO 2-letter) |
max-rows / maxrows |
number | 9999 |
Maximum number of brands to display (recommended max: 9) |
cloaked-link / cloakedlink |
string | cresus-casino |
Cloaked link identifier for tracking |
tracking-data / trackingdata |
string | "" |
Additional tracking data appended to URLs |
tracking-target / trackinglinktarget |
string | "" |
Tracking target path (e.g., homepage, games) |
rating |
number | 4.5 |
Minimum rating filter |
cta-key / ctakey |
string | cta-claim-bonus |
Translation key for CTA button text |
cta-text / ctatext |
string | "" |
Default CTA button text (fallback) |
min-width / minwidth |
string | undefined |
Minimum width for CTA button (e.g., 180px) |
heading-text / headingtext |
string | "" |
Custom heading text |
heading-key / headingkey |
string | "" |
Translation key for heading text |
heading-level / headinglevel |
string | h2 |
Heading level: h1, h2, h3, h4, h5, h6, p |
heading-alignment / headingalignment |
string | Center |
Heading alignment: Left, Center, Right |
show-sub-heading / showsubheading |
boolean | true |
Show/hide heading and intro text |
introtext |
string | "" |
Intro paragraph text below heading |
intro-text-alignment / introtextalignment |
string | Center |
Intro text alignment: Left, Center, Right |
rel |
string | nofollow |
Link rel attribute |
target |
string | _blank |
Link target attribute |
bonus-type / bonustype |
string | tb |
Bonus type filter: tb, ndb, fs, etc. |
cta-colors / ctacolors |
string | ["#05842A", "#05842A"] |
CTA button gradient colors (JSON array or single color) |
cta-hover-colors / ctahovercolors |
string | ["#096725", "#096725"] |
CTA button hover gradient colors |
eager-count / eagercount |
number | 0 |
Number of brands to load eagerly (for LCP optimization) |
The ctacolors and ctahovercolors attributes support multiple formats:
'["#05842A", "#05842A"]' or '["red", "yellow"]''green' or '#05842A'parseColors utility: Handles both string and array inputsMain wrapper that organizes all brand cards:
Heading atom for H1-H6 generation with alignmentmaxRows count (recommended max: 9)Individual brand card with comprehensive information display:
isHero flag is trueSupported ribbon types with icons:
socialRibbonKey attributeThree-level control for bonus visibility:
useTolpistCta hook for computed stylesctaColors arrayctaHoverColorsctaKey attributeDisplay top 6-9 brands for specific categories (casinos, sportsbooks, poker rooms).
Filter with bonustype="ndb" to show only no deposit offers.
Use country and language attributes for geo-specific content.
Filter by product attribute to show relevant vertical (CA, SB, PO, BI).
Display top 3 brands with maxrows="3" for featured placement.
Show side-by-side brand comparisons with social proof ribbons.
Single-column card layout automatically adapts for mobile users.
Use eagercount to load above-the-fold brands for better LCP.
Leverage translation keys for full localization support.
Track campaigns with trackingdata and referer attributes.
product for relevant resultsbonustype for specialized pageseagercount="3" for above-fold cardsheadinglevel="h1" for main page headingsrel="nofollow"Create brand-specific button styling:
ctacolors='["#FF6B00", "#CC5500"]'
ctahovercolors='["#CC5500", "#993300"]'
Combine product and bonus type:
<nw-blocks id="toplist3" product="CA" bonustype="ndb" maxrows="6" \></nw-blocks>
Filter for US/Canadian states:
<nw-blocks id="toplist3" country="US" language="en" \></nw-blocks>
Add tracking parameters:
<nw-blocks id="toplist3" referer="homepage-cta" trackingdata="campaign=summer2025" \></nw-blocks>
Optimize Core Web Vitals:
<nw-blocks id="toplist3" eagercount="3" maxrows="9" \></nw-blocks>
Use either old or new attribute naming:
<!-- Old Convention -->
<nw-blocks id="toplist3" selling-point-type="general" max-rows="6" \></nw-blocks>
<!-- New Convention -->
<nw-blocks id="toplist3" sellingpointtype="general" maxrows="6" \></nw-blocks>
Each brand card requires:
brandId: Unique identifierbrandName: Display nametrackingLink: Cloaked tracking linktrackingData: Tracking parameterstrackingTarget: Target path (e.g., homepage)imgUrl: Logo image URLalt: Logo alt textbonus: Main bonus textbonusExtra: Additional bonus textbonusTranslationKey: i18n key for bonusextraFreespins: Freespins countrating: Star rating (0-5)socialRibbonKey: Social proof ribbon identifiersocialProofKey: Hero mode ribbon (if isHero=true)reviewPageUrl: Object with url propertycomplianceDisclaimer: Object with disclaimer HTMLhasTrackingLink: Boolean for T&C linkisExclusive: Boolean for exclusive badgehideBonuses: Boolean to hide all bonus datahideBonusRibbon: Boolean to hide bonus ribbonhideBonusText: Boolean to hide bonus textminimumAge: Age restriction textintroTextValues: Array (not used in Toplist3 cards)Cached with keys: brand-{product}-{cloakedLink} (lowercase)
cta-claim-bonus, cta-bet-now, cta-play-now, etc.headingkey attributeintrotext attribute or i18n keybonusTranslationKey fieldsocialRibbonKey fieldwgt-toplist-terms for T&C linkisEmptyData is trueisHero flag| Feature | Toplist3 | Toplist (Puzzle) | Toplist2 |
|---|---|---|---|
| Layout | Card grid (3/2/1 columns) | Table rows | CSS Grid (6/4/1 columns) |
| Max Brands | 9 (recommended) | Unlimited | Unlimited |
| Social Proof Ribbons | Yes (with icons) | No | No |
| Ranking Display | No explicit numbers | No | Numbered badges (01-99) |
| Card Styling | Shadow + hover effects | No cards | No cards |
| Grid Responsiveness | 3→2→1 columns | Table → single column | 6→4→1 columns |
| Bonus Control | 3 flags (all, ribbon, text) | 2 flags (ribbon, text) | 3 flags |
| CTA Customization | Full gradient control | Limited | Limited |
| Hero Mode | Yes (special rendering) | No | No |
| Checklist | No | Yes (desktop only) | No |
| Use Case | Category pages, featured lists | Comparison tables | Ranked comparisons |
Fully supports legacy bw-widget tag:
<bw-widget id="toplist3" ...></bw-widget>
Both old and new attribute naming conventions work:
Old Convention (hyphenated):
selling-point-typemax-rowscta-keycta-textheading-levelheading-alignmentheading-textheading-keybonus-typemin-widthcta-colorscta-hover-colorsshow-sub-headingintro-text-alignmenteager-countNew Convention (camelCase/lowercase):
sellingpointtypemaxrowsctakeyctatextheadinglevelheadingalignmentheadingtextheadingkeybonustypeminwidthctacolorsctahovercolorsshowsubheadingintrotextalignmenteagercountSupports multiple formats for colors:
'["#color1", "#color2"]''green' or '#05842A''red', 'blue', etc.Widget behavior stable across both naming conventions.