Email Branding

Customize how Koolbase's transactional emails look to your users. Display name, from name, reply-to address, logo, primary color, and verified custom sender domains — all configurable per project from the dashboard.

Where this applies

Email branding affects the three transactional emails Koolbase sends on your behalf:

  • Verification emails sent at signup
  • Password reset emails sent when users request a reset
  • "No account" courtesy emails sent when a reset is requested for an unregistered address — a UX nicety that lets the user know they probably signed up with a different email

Visual branding settings live under Branding in your project sidebar. Custom domains live under Sender Domains.

Display name

The display name is the brand identifier shown throughout the email body — subject lines, headers (when no logo is set), and footer copyright. It also flows through to other settings as a fallback when they're blank.

Falls back to: your project name. If your project is called "StrideHx Inc" and you don't set a display name, all emails read "StrideHx Inc" by default.

From name

The display name in the From: header of the email — what recipients see in their inbox preview alongside the actual sender address (e.g., StrideHx Inc <auth@koolbase.com>).

Falls back to: the display name, then the project name. Most projects set this once and forget it.

Reply-to email

Where replies to transactional emails should route. When set, Koolbase adds a Reply-To: header so any reply from the recipient goes directly to your address instead of bouncing off the shared Koolbase sender.

Leave blank if you don't want recipients to reply at all — the Reply-To header simply won't be set.

Logo

Logo image rendered at the top of every transactional email, replacing the text display name in the header. When no logo is uploaded, the display name renders as bold white text.

  • Format: PNG or JPEG only. SVGs aren't supported — mail clients render them inconsistently.
  • Size limit: 1 MB.
  • Rendered height: 40px, scaled proportionally.

Designs that look right on dark backgrounds

Koolbase's default email template uses a dark theme (background #0a0c10). Logos designed for white backgrounds — black text or dark elements — won't be visible. Use a transparent PNG with light or white-colored designs, or a logo with built-in contrast.

Primary color

Accent color used as the background of primary buttons in transactional emails — specifically the "Verify Email" and "Reset Password" buttons. Six-digit hex format (e.g., #E63946).

Falls back to: Koolbase blue (#2b8cee) when blank.

Button text picks its color automatically

Koolbase computes the button text color (black or white) from the YIQ luminance of your chosen background, so the button stays readable on any color. Pick whatever fits your brand — light yellow, hot pink, deep navy — and the text contrast handles itself.

Sender domains

By default, Koolbase's transactional emails send from the shared auth@koolbase.com address. To send from your own domain (e.g., noreply@yourdomain.com), register and verify a custom sender domain.

Each project can register multiple domains and switch between them, but only one is the active sender at a time.

1. Add your domain

From the Sender Domains tab in your project sidebar, click Add domain and enter the root domain or subdomain you want to send from. Koolbase registers it with our delivery provider and returns the DNS records you need to publish.

curlShell
curl -X POST https://api.koolbase.com/v1/projects/{project_id}/domains \
  -H "Authorization: Bearer YOUR_DASHBOARD_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "yourdomain.com" }'

2. Publish the DNS records

The response includes a list of DNS records — typically one MX (SPF), one TXT (SPF), and two or three CNAME (DKIM) records. Add each one at your DNS provider. Each card in the Sender Domains tab has copy buttons so you can paste the values directly.

Example DNS recordsJSON
[
  {
    "type": "MX",
    "name": "send",
    "value": "feedback-smtp.us-east-1.amazonses.com",
    "priority": 10,
    "ttl": "Auto"
  },
  {
    "type": "TXT",
    "name": "send",
    "value": "\"v=spf1 include:amazonses.com ~all\""
  },
  {
    "type": "CNAME",
    "name": "{selector}._domainkey",
    "value": "{selector}.dkim.amazonses.com."
  }
]

Trailing dots and DNS providers

Some DNS providers (Cloudflare, AWS Route 53) handle trailing dots automatically; others (BIND, some legacy panels) require them. Use the values exactly as shown — if your provider rejects the trailing dot, strip it.

3. Verify

After publishing your records, click Verify on the domain card. Koolbase triggers a DNS check on our delivery provider; the status updates from pending to verified once the records resolve correctly.

DNS propagation can take time

DNS changes typically propagate within minutes but can take up to several hours. If the first verify still shows pending, wait a few minutes and click Verify again.

4. Activate

Once verified, click Activate on the domain card. From that moment, all transactional emails for this project send from noreply@yourdomain.com instead of auth@koolbase.com. Click Deactivate any time to switch back to the shared sender without removing the registration.

Activation is project-scoped

Each project has its own active sender. Activating a domain in one project doesn't affect other projects in your organization. Only verified domains can be activated.

Fallback chain

Koolbase applies fallback logic so emails always have sensible defaults, even when branding is partially configured:

FieldFalls back to
Display nameProject name
From nameDisplay name, then project name
Reply-toNo Reply-To header
LogoDisplay name as bold white text
Primary colorKoolbase blue (#2b8cee)
Sender domainauth@koolbase.com

API reference

Most projects configure branding from the dashboard, but every setting is also reachable via the API for automation or CI workflows.

MethodDescription
GET /v1/projects/{id}Fetch current branding state
PATCH /v1/projects/{id}/brandingUpdate display name, from name, reply-to, primary color
POST /v1/projects/{id}/branding/logoUpload logo (multipart, field name: logo)
POST /v1/projects/{id}/domainsRegister a new sender domain
GET /v1/projects/{id}/domainsList registered domains for the project
POST /v1/projects/{id}/domains/{did}/verifyTrigger DNS verification on a domain
DELETE /v1/projects/{id}/domains/{did}Remove a domain registration
PUT /v1/projects/{id}/sender-domainSet or clear the active sender domain