Branding and domains
By default a signer opens SignSealer's page on signsealer.com, with the business's logo, when it has one, above the document. White label puts the business's name and colors on the page, and its own domains move the links and the mail onto hosts it owns. The host is the part that changes what the API hands you.
What a business can set
All of it is set in the dashboard, under Settings → Brand, by an owner or an admin. The API reads it and has no route to change it.
| Setting | Shown with | Where it shows |
|---|---|---|
| Logo for light backgrounds, PNG or SVG | Nothing | Above the document, at the head of the signed PDF, and at the top of mail (a PNG only: mail shows no SVG). |
| Sender name, reply address, a footer line | Nothing | Mail to signers. The footer line is on the signing page too with white label. |
| Name on the page, five colors, a logo for dark backgrounds, the tablet app's opening picture | White label | The signing page, public forms, the color of mail, and the tablet app. They can be set before white label is on, and are shown once it is. |
| An address on signsealer.com | White label | Signing links, at yourbusiness.signsealer.com; the business's slug unless it picks another. Chosen once white label is on, since choosing one claims the name. |
| Its own signing and sending domains | White label | Signing links, and the From address of mail. |
White label is an add-on to the membership, $25 a month drawn from credit, and not offered on Free (pricing). A platform can put its own name on the businesses it brings, at no charge (Platforms and partners).
Where signing links point
Every link the engine sends for a business, by email or by text, and every
url the API answers with, is on the first of these that
applies:
- A signing domain the business has verified:
https://sign.example.com/s/{token}. - With white label on, its address on signsealer.com:
https://yourbusiness.signsealer.com/s/{token}. - Otherwise
https://signsealer.com/s/{token}.
A partner's branding does not change the host.
POST /v1/documents/{id}/send answers a url per signer, as do the
signer's /embed and /link routes: use it as given.
POST /v1/workflows/{id}/start answers tokens only (with
send_link, SignSealer sends the person theirs itself), so build the
address from signingHost, and ask for it when you need it rather
than storing it for good, because a newly verified domain moves it and white
label starting or ending can:
const { signingHost } = await signsealer.branding(); // GET /v1/branding
const url = "https://" + signingHost + "/s/" + encodeURIComponent(token);
GET /v1/workflows/{id}/qr is the exception: it answers the
form's address on signsealer.com, which keeps working; the same form also
answers at /f/… on the business's own host.
A business's host serves only that business's signing links
(/s/), party links (/p/), public forms
(/f/), the certificate check (/verify), logos
(/brand/) and a health check. Everything else is a 404 there, the API included: your
calls, and the key-less signing routes a page of your own makes, go to
https://api.signsealer.com. Another business's link on that host is
a 404 too. A link on signsealer.com still opens after the business moves to its
own host.
Framing the page on your own site
The embed route's url
(Signing inside your product) is on the signing
host too, so check a message's origin against new URL(url).origin,
never a fixed https://signsealer.com.
A verified signing domain lets the page be framed on that host and the hosts
under it: sign.example.com adds https://sign.example.com
and https://*.sign.example.com to frame_origins, not
www.example.com. To frame it on your main site, prove
example.com as a company sign-in domain or connect an app that lives
there. An address on signsealer.com adds nothing. The same verified domain may
take a return_url (Waivers and
workflows).
A signing domain of your own
With white label on, an owner or admin types a host under Your own
domains (in Settings, and at the foot of Settings → Brand). Use a
subdomain such as sign.example.com: a host that is a CNAME to us
cannot also serve your own site. Then publish what the panel shows:
| Type | Name | Value |
|---|---|---|
| TXT | _signsealer.sign.example.com | signsealer-verify= and the panel's token |
| CNAME | sign.example.com | The panel's target |
The checks run every few minutes, and the panel ticks off three stages:
| Stage | What it means |
|---|---|
| Proved | The TXT record carries the token. Nothing connects to your host before this. |
| Routed | We have added the host on our side, which is where its certificate comes from. |
| Serving | The host answered our health check over HTTPS. Signing links use it from now on. |
Under them the panel says what the last look found: no TXT record, one without the token, or a host that did not answer as us. A serving host is not checked again; leave the CNAME where it is.
A host is refused when it is signsealer.com or under it, when it is also the sending domain, or when another business has claimed it (write to us if it is yours). Changing it starts all three stages again, and until the new one serves, links go to the next host in the list above. An empty field withdraws it.
Mail from your own domain
Mail from, in the same panel, takes a second subdomain
such as mail.example.com, so its records leave your main domain's
mail alone. We register it with our mail provider, and within a few minutes the
panel lists the records to publish. It reads checking until the
provider sees them, then in use; records not found means the
provider reported a failure, and the panel gives the reason. A failed domain is
asked about again hourly.
| Before | Once in use | |
|---|---|---|
| From | "Sender name via SignSealer" at SignSealer's address | "Sender name" <notifications@mail.example.com> |
| Reply-To | Your reply address, or ours | The same |
Only mail on the business's behalf changes; sign-in links, team invitations and billing mail stay SignSealer's. Inside the mail, the button goes to the signing host, and the logo and the certificate check (signsealer.com/verify) stay on SignSealer's.
White label, and a partner's branding
| SignSealer's own | White label | A partner's branding | |
|---|---|---|---|
| Bar of the signing page | SignSealer | Your dark logo, light logo or name | The partner's logo or name |
| Your light logo on the page | Above the document | In the bar, if there is no dark one | Not shown |
| Colours | SignSealer's | Yours | The partner's |
| Foot of the page | Signed with SignSealer | Your footer line | The partner's footer line, Powered by SignSealer |
| Last line of mail | Sent through SignSealer | None | Sent through the partner, powered by SignSealer |
| Signing links | signsealer.com | Your address on signsealer.com, or your own domain | signsealer.com |
A business's own white label wins over its partner's. Under all three, a business's texts go from its own toll-free or local number, registered under its own name, and that is coming soon (Texting and consent); the certificate stays SignSealer's, checked at signsealer.com/verify: it is the evidence, not the branding.
Reading the brand: GET /v1/branding
Scope signing:read; signsealer.branding() in the
Node client. It is what our tablet app themes itself
with, and its keys are camelCase.
| Field | What it is |
|---|---|
businessName | The name on the page while white label is on, else the business's name. |
whiteLabelEnabled | Whether the add-on is on. |
primaryColor, accentColor, backgroundColor, textColor, buttonTextColor | Hex, like #124272: the business's while white label is on, SignSealer's otherwise or where none is saved. |
hasLogo, hasDarkLogo, logoUrl, logoDarkUrl | Whether a PNG of each is on file, and its address or null; the dark one only while white label is on. A logo uploaded only as an SVG reads false. |
hasOpening, openingType, openingUpdatedAt, openingUrl | The tablet app's opening picture while white label is on; its address changes when it does. |
signingHost | Where signing links point now. |
footerText, tenantId | The footer line or null; the business. |
Without white label the answer is already SignSealer's look: the
business's own name, our colours, no dark logo and no opening picture, even
when the business has saved its own ready for the day it switches white label
on. whiteLabelEnabled says which you have. Logos are public
by address, /brand/{tenantId}/logo.png and
logo-dark.png (or .svg), cached for an hour.
A partner's branding is not in it. A
business on its partner's branding answers whiteLabelEnabled: false
and nothing of the partner's, though its signing page wears the partner's
look.
Webhooks
Nothing in a webhook changes with the brand or the host: a payload carries no link and never a token (Webhooks). To put a signer in front of their page after an event, mint a link with the embed route, which answers it on the current host, or send a reminder, which carries a fresh one there.
Ready to build? An API key takes a minute in the portal, and the free plan covers the first 10 agreements a month.
Get an API key