Skip to main content

Overview

A brand is a named set of signing-page and email branding — header title, logo, favicon, colours and the “Powered by” line — saved on your account. Accounts that send documents for more than one brand (for example a firm that signs for both Acme Legal and Northwind Injury Law) create one brand each and select it with preferences.brand_id on a template or on a single submission, instead of repeating the branding keys everywhere.
  • Brands are managed in Settings → Brands or through the API. Both need an account admin (the API returns 403 otherwise).
  • A brand’s branding accepts the same keys as a custom domain’s branding: display_title, logo_url, favicon_url, company_name, primary_button_color, header_color, show_branding.
  • Branding is looked up when the signing page or an email is rendered, not copied onto the submission — editing a brand changes it for every signer who has not finished yet.

Manage Brands in Settings

Settings → Brands lists your brands by name, each with its ID (the value for brand_id), a colour swatch and a summary of the keys it sets.
  • New brand opens the brand editor. Edit and Delete act on one brand.
  • The editor has fields for the brand name, header title, logo URL, favicon URL, company name, brand colour, header colour and the “Powered by SpitShake” line (same as account, show or hide). A live preview shows the signing-page header as the signing page will draw it.
  • A field left blank falls through to the signing domain’s branding, then the account’s.

Pick a Brand and Domain in the Template Builder

In the Template Builder, Template Settings has two pickers:
  • Brand: No brand or one of your brands. It saves preferences.brand_id. A template that names a deleted brand shows it as Brand #id (deleted).
  • Signing domain: Account default (your primary custom domain, or the platform domain), the platform domain itself (saved as "default"), or one of your active custom domains. It saves preferences.custom_domain.
The same section’s Signing Experience group sets the bottom navigation style (signing_nav_style).

List Branding Options

GET /api/branding_options returns only the choices the pickers need: brand ids and names, and your active custom domains. Unlike /api/brands and /api/custom_domains it is not admin-only (it needs the templates:read scope), and it returns no branding values or DNS details. Brands are ordered by name and domains by hostname.

Create a Brand

name is required, at most 120 characters, and unique within the account (case-insensitively). Leading and trailing spaces are removed before these checks. Only your team sees the name. branding is optional.

Branding keys

Validation matches custom-domain branding: an unknown key (usually a typo), a non-string value, a non-boolean show_branding, a logo_url/favicon_url that is not http(s), or a light or malformed header_color is rejected with 422. A key sent as null or "" is dropped.

List, Get, Update and Delete

  • The list is ordered by name. A brand of another account returns 404.
  • PUT replaces the whole branding object: keys you leave out are removed, and a key sent as null or "" is removed too. Omit branding entirely to rename only.
  • Deleting a brand does not touch templates or submissions that name it: their brand_id simply stops matching, and they fall back to their other layers (see Precedence).

Use a Brand on a Template or Submission

Set preferences.brand_id to the brand’s id. On a template it applies to every submission created from that template:
PUT /api/templates/:id replaces the template’s whole preferences object. Send the template’s existing preferences with brand_id added, not brand_id alone.
On a submission it applies to that submission only, and replaces the template’s brand — the two brands are never mixed:
brand_id is not validated when you save it. An id that is not one of your account’s brands — mistyped, deleted, or belonging to another account — is ignored at render time. On a submission it still counts as the submission choosing a brand, so the template’s brand does not apply either. A brand only sets branding. It does not choose the link host: pair it with preferences.custom_domain if the brand also has its own domain.

Precedence

Each branding key resolves independently; the first layer with a non-empty value wins: So a brand outranks the domain’s branding, and a key set directly in the template’s or submission’s own preferences outranks the brand at that level. For example, a template with brand_id: 7 and display_title: "Acme Legal Retainer" shows that title with the brand’s logo and colours; a submission can still override any single key.
header_color and favicon_url are checked when rendered. A light or malformed header_color picked from template or submission preferences (or account settings) is ignored and the header falls back to primary_button_color darkened 20% — it does not fall through to a lower layer’s header_color. A favicon_url that is not http(s) falls back to logo_url. Brands and domains reject such values when saved, so this only affects preferences.

Tab title and favicon

The signing page’s browser tab uses the resolved branding of the submission, so a brand or domain changes it along with the header.
  • Title: <display_title or template name> - <company_name>. When no layer sets company_name, the account’s white-label display name is used, then the account name, then “SpitShake”. A part that is identical to the other is shown once. For example, a brand with display_title: "Acme Legal" and company_name: "Acme Legal LLP" gives Acme Legal - Acme Legal LLP.
  • Icon: the resolved favicon_url, or the resolved logo_url when no layer sets a favicon. With neither, the page sets no icon of its own.