Onsend Docs

Tenant Setup

Brand your project — name, logo, colours, theme, fonts — and point a custom domain at Onsend.

Your project ("tenant") is the public, branded surface your community sees: the leaderboard, campaign pages, claim pages and the wallet sign-in flow. This guide covers the two pieces of setup that make it yoursbranding (name, logo, colours, theme and fonts) and a custom domain (running the whole thing on rewards.yourproject.com instead of an Onsend subdomain).

Branding

Branding lives under Settings → Branding. The page has a live preview on the right that updates as you edit, so you can see the public surface take shape before you save. Branding edits require the Admin role.

Screenshot

Admin → Settings → Branding

slot: tenant-setup.branding-page

Branding is split into two parts on the page:

  • Branding — text and colour fields (project name, logo URL, colours, font, mode), saved together with one Save branding button.
  • Brand assets — image uploads (logo, dark-mode logo, favicon, social-share image), each saved independently the moment you upload it.

Everything is optional

Any field you leave blank falls back to the Onsend default. A brand-new project renders perfectly well before you touch a thing — branding only ever overrides defaults, never breaks the page.

Set your project name

The project name (projectName) is the display name shown across your public surface — in the navigation, page titles and share cards. If you leave it blank it falls back to your tenant name. 1–60 characters.

Screenshot

Admin → Settings → Branding → Project name

slot: tenant-setup.project-name

Your logo is your main brand mark, shown in the navigation. There are two slots:

  • Logo (logoUrl) — your primary mark. Recommended: a 512×128 wordmark or a 256×256 square symbol.
  • Dark-mode logo (logoDarkUrl, optional) — a light-coloured variant used when your theme mode is dark. If you leave it empty, the main logo is used everywhere.

Upload these in the Brand assets section. Each accepts JPG, PNG, WebP or SVG up to 2MB, and each upload saves on its own — there's no separate "save" step for assets.

Screenshot

Admin → Settings → Branding → Brand assets

slot: tenant-setup.brand-assets

Two ways to set a logo

The text form also has a Logo URL field, and the Brand assets section has a Logo uploader — both write the same logoUrl. Use the uploader if you want Onsend to host the image; use the URL field if your logo already lives at a stable public URL.

Colours

Branding exposes four colour swatches via a colour picker. Colours are stored as hex (e.g. #6366f1) and applied as theme tokens across the public surface.

Screenshot

Admin → Settings → Branding → colour pickers

slot: tenant-setup.color-pickers
ColourFieldDefaultUsed for
PrimaryprimaryColor#6366f1Buttons, links, primary accents
AccentaccentColor#ec4899Secondary highlights
BackgroundbackgroundColor#ffffffPage background
ForegroundforegroundColor#0a0a14Body text

Contrast is checked for you

On save, Onsend runs a WCAG contrast check on your colours. If foreground vs background drops below the 4.5:1 AA threshold for body text (or the primary colour falls below 3:1 for large text/buttons), you'll get an inline "Heads up" warning. The save still goes through — the warning is advisory, so you can ship a bold palette while knowing where it might read poorly.

Theme mode and fonts

Choose light or dark mode

The Mode selector (mode) sets whether your public surface renders light or dark. This also decides which logo is used — dark mode pulls your dark-mode logo when one is set.

Screenshot

Admin → Settings → Branding → Mode

slot: tenant-setup.mode-select

Set your font

The Font family field (fontFamily) is a standard CSS font-family stack. It defaults to Geist, -apple-system, sans-serif. Provide a full fallback stack (for example "Inter", -apple-system, sans-serif) so text renders sensibly if your primary face fails to load.

Screenshot

Admin → Settings → Branding → Font family

slot: tenant-setup.font-family

Favicon and social-share image

The remaining two Brand assets uploaders cover how your project looks in the browser tab and when shared on social media.

  • Favicon (iconUrl) — the square symbol in the browser tab. Recommended 512×512. JPG, PNG or WebP only (no SVG — browsers render it inconsistently at small sizes), max 2MB.
  • Social-share image (ogImageUrl, optional) — the preview card shown when someone shares your project URL. Required dimensions 1200×630. JPG, PNG or WebP, max 4MB. If empty it falls back to the Onsend default.
Screenshot

Admin → Settings → Branding → Favicon and Social-share image

slot: tenant-setup.favicon-og

Live preview before you commit

Use the preview panel beside the form to sanity-check colour, logo and mode combinations together. It applies the exact same theme tokens the live public surface uses, so there's no drift between what you preview and what ships.

Custom domain

By default your project is served from an Onsend subdomain — yourname.onsend.com. You can instead point your own hostname (for example rewards.yourproject.com) at Onsend. Custom-domain setup lives under Settings → Domain and requires the Admin role.

Screenshot

Admin → Settings → Domain

slot: tenant-setup.domain-page

Manual setup in V1

In V1, custom-domain setup is a manual flow: you create one DNS record and email support to attach the domain to your project. Automated one-click provisioning is planned for a later release. The steps below are exactly what the Domain settings page walks you through.

Add a CNAME record

In your DNS provider, add a CNAME record pointing your hostname at your Onsend subdomain (your CNAME target):

CNAME  rewards.yourproject.com → yourname.onsend.com

The target is your current Onsend subdomain (<slug>.onsend.com), shown at the top of the Domain settings page as your current subdomain.

Screenshot

Admin → Settings → Domain → current subdomain (CNAME target)

slot: tenant-setup.cname-target

Email support to attach the domain

Email support@onsend.com with the domain you want to use. Support sets it as your project's customDomain so Onsend knows to serve your project for that hostname.

Why a manual step?

TLS certificates are issued on demand, and a certificate is only minted for a hostname when both are true: the domain resolves to Onsend's IP (your CNAME is live and propagated) and the hostname matches your project's customDomain. Setting customDomain is the part support does for you in V1.

Wait for TLS to provision

Once DNS has propagated, the certificate provisions automatically — typically within about 10 minutes of the domain resolving to Onsend. After that your project serves over HTTPS on your own domain.

Screenshot

Admin → Settings → Domain → configured state

slot: tenant-setup.domain-configured

DNS first, then the cert

Order matters: the CNAME has to resolve to Onsend before a certificate can be issued. If the domain doesn't resolve yet, certificate issuance is refused (this prevents minting certs for hostnames that aren't really yours). Get the CNAME live, confirm it propagates, then expect TLS shortly after.

Next steps

With branding and your domain in place, your project surface is ready to fill with quests.

On this page