---
type: how-to
title: White-label the widget
summary: Replace the widget shell's wording, colors, and links with your own, an Apex-tier feature authored in the dashboard.
---

[Game customization](/docs/game-customization/overview) 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](/docs/game-customization/overview#troop-and-site-key-scope) 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](/docs/references/customization-schema).

## 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](/docs/widget-customization/resolution) 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](/docs/widget-customization/resolution): which language and skin a visitor sees.
- [Style the widget with CSS](/docs/widget-customization/css-parts): adjust layout and details white-labeling does not cover.
- [Schema reference](/docs/references/customization-schema): the shell's built-in fields and the field types.
- [Our philosophy](/docs/understanding-caputchin/philosophy): where white-labeling sits on the customization ladder, and what only it can do.
