White-label the widget
Game customization changes the game inside the widget. White-labeling changes the widget shell, the chrome around every challenge: its wording, its colors and brand mark, and the links in its brand strip. You author overrides in the dashboard and Caputchin serves them to every widget mount, with no code change and no forking.
White-labeling is an Apex-tier feature.
Where it lives
Open a troop, or a site key, and go to its White-label page (under Settings). It uses the same editor as game customization, but it targets the widget shell rather than a specific game, so it applies to every challenge the widget runs.
The three axes
White-labeling has the same three axes as a game, applied to the shell's built-in field set:
| Axis | What it controls |
|---|---|
| Language | The shell's strings: the verify label, the brand wordmark, the status and close labels, and the accessibility labels. |
| Skin | The shell's colors and its brand logo. |
| Configuration | The brand strip's link targets: the home link and the legal link. |
You override only the fields you want; everything you leave alone keeps Caputchin's default.
Scopes and defaults
White-label overrides resolve the same way game customization does, most-specific-wins: a site-key preset beats the troop baseline, which beats Caputchin's bundled default, computed per value. Set a baseline once on the troop and override exceptions per key. Each group (each language, each of light and dark, the single configuration group) has one default, which you mark in the editor. A skin whose mode is any works on both backgrounds, shows under both the light and dark groups, and can be set as the default for either or both. You can extend a bundled preset and change only the fields you need. The same field types and preset model power both; see the schema reference.
How it propagates
Saving a preset goes live across every affected widget mount within seconds. The widget briefly waits for your overrides at load, then falls back to the bundled look if the fetch is slow, so a slow network never leaves a visitor staring at a blank widget.
Languages the shell ships in
The widget shell (the chrome around every verification, not the game inside it) ships built-in Language presets for these 11 languages, with English as the default. A visitor whose browser language is one of them sees the shell in it automatically; anyone else falls back to English. This is the shell's own coverage and is independent of a game's languages, which each game's author chooses separately.
| Language | Tag |
|---|---|
| English (default) | en |
| Chinese (Simplified) | zh-Hans |
| Spanish | es |
| Arabic | ar |
| Portuguese | pt |
| French | fr |
| German | de |
| Russian | ru |
| Japanese | ja |
| Korean | ko |
| Indonesian | id |
You do not configure these; they are on by default. Two things are handled for you: a right-to-left language (Arabic) flips the shell's layout to rtl automatically, and the CJK languages (Chinese, Japanese, Korean) render with the visitor's system fonts, no setup either way.
To change the wording in any of these, or to add a language not listed, use the Language axis above: edit or create a preset for that language tag, exactly as you would override any other shell string.
See also
- How the widget resolves its language and skin: which language and skin a visitor sees.
- Style the widget with CSS: adjust layout and details white-labeling does not cover.
- Schema reference: the shell's built-in fields and the field types.
- Our philosophy: where white-labeling sits on the customization ladder, and what only it can do.