Whitelabelling
Customize Runstack's connector auth screens with your company logo and name for a branded user experience.
Runstack supports whitelabelling on connector OAuth screens. When users connect services like GitHub, Gmail, or Notion through your integration, they see your company branding instead of the default Runstack branding.
What gets customized
| Element | Default | With branding |
|---|---|---|
| Logo on auth screen | Runstack logo | Your company logo |
| Company name | "Runstack" | Your company name |
| "Secured by" footer | "Secured by Runstack" | "Secured by [Your Company]" |
Both the connect screen (before OAuth) and the result screen (after OAuth success/failure) reflect your branding.
Setup
1. Go to Branding settings
Navigate to Settings → Branding in the Runstack dashboard, or go directly to /settings/branding.
2. Upload your logo
Click Upload Logo and select an image file:
- Formats: PNG, JPG, or SVG
- Max size: 512 KB
- Recommended dimensions: 56x56px or larger (displayed as a circle)
3. Set your company name
Enter your company name in the Company Name field. This replaces "Runstack" on the auth screen and the "Secured by" footer. Maximum 100 characters.
4. Preview and save
The preview section shows how the auth screen will look with your branding. Click Save Changes when you're satisfied.
How it works
When a user visits a connector auth screen (e.g., /auth/provider/github), Runstack loads your branding settings from the database and passes them to the auth card components. The branding is resolved server-side, so there's no flash of default branding.
If no custom branding is set, the default Runstack logo and name are used.
API
Get branding (authenticated)
GET /api/settings/branding
Authorization: Clerk sessionReturns:
{
"companyName": "Acme Corp",
"logo": "data:image/png;base64,..."
}Update branding
PUT /api/settings/branding
Content-Type: application/json
Authorization: Clerk session
{
"companyName": "Acme Corp",
"logo": "data:image/png;base64,..."
}Set companyName or logo to null to revert to defaults.
Public branding endpoint
GET /api/branding/[clerkUserId]Returns the same companyName and logo fields. No authentication required -- only non-sensitive branding data is exposed. This endpoint is used internally by auth screens.
Limitations
- Logo is stored as a base64 data URL in the database. Keep it under 512 KB.
- Branding is per-user (per Clerk account), not per-organization.
- Only the connector OAuth screens are branded. The main Runstack dashboard uses the default branding.