> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nudj.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Domains and Theming

> Serve Nudj from your own domain and match the visual identity of your brand via the community theme system.

Nudj's white-label surface is pragmatic: a custom domain for your user-facing URLs and a theme system that matches the look of the embedded experience to your brand.

<Warning>
  There is no Nudj-supplied native mobile app published under a customer's developer account. If a conversation with your account manager suggests otherwise, raise it — the platform does not currently ship that product.
</Warning>

## Custom domains

### CNAME setup

Point your chosen subdomain at the Nudj user app via a CNAME record:

```dns theme={null}
engagement.yourcompany.com  CNAME  your-org.nudj.cx.
```

The admin panel's **Domains** tab tracks verification state; SSL certificates are issued automatically once the CNAME resolves. Full API reference: [Custom Domains](/api-reference/custom-domains).

### Preview link

PR #2575 added a preview link derived from the organisation's white-label config — the Domains page in the admin panel surfaces the link directly so teams can sanity-check branded URLs before announcing a launch.

### Multiple domains per organisation

An organisation can have multiple verified domains — used for regional sites, white-labelled partners, or staging. The Shopify widget preview logic (PR #1899) prefers `customDomains` over the generic `userDomain` so in-merchant admin previews render against the branded URL.

## Theming

### Source of truth

Theme variables live on the `community.theme` object. The admin panel's **Branding & Theming** section is the canonical editor. Theme values cascade from the organisation's default community down to child communities; child communities can override individual variables.

Reference: [Widget Theming System](https://github.com/nudj-digital/nudj/blob/main/docs/widget-theming-system.md) in the engineering repo has the full variable list, data flow, and CSS variable mapping.

### Theme presets

PR #1886 added theme presets — pre-built configurations that ship values for colours, typography, spacing, and component shape. Admins can pick a preset in the Shopify embedded admin and tune individual variables without starting from scratch.

### Where theming applies

| Surface                      | Theme source                                                       |
| ---------------------------- | ------------------------------------------------------------------ |
| Nudj user app on your domain | `community.theme` resolved at page render                          |
| Shopify storefront widgets   | `community.theme` resolved from the widget block config (PR #1646) |
| Universal embed widget       | `community.theme` passed through the embed script                  |
| Email templates              | Organisation brand colours + logo                                  |

## What's in scope

* Custom domain with automatic SSL.
* Logo, brand colours, typography, component shape via the theme system.
* Email sender name + reply-to.
* Community-scoped theme overrides for multi-brand organisations.

## What's explicitly not supported

* Native iOS / Android apps published under your Apple Developer or Google Play account.
* Biometric device unlock for Nudj sessions.
* Push notifications sent from a branded mobile app.
* Offline mode or geofenced content gating.
* CDN-level edge customisation beyond what Vercel provides to the Nudj user app.

## Next steps

<CardGroup cols={2}>
  <Card title="Custom Domains API" icon="globe" href="/api-reference/custom-domains">
    API reference for programmatic domain management.
  </Card>

  <Card title="Universal embed widget" icon="code" href="/enterprise/universal-embed-widget">
    If you embed rather than redirect, the theme flows through the embed script.
  </Card>
</CardGroup>

> Last reviewed: 2026-04 · Related PRs: #2575, #1886, #1646, #1899
