Administration
Paid add-on

Custom Branding

Apply your company logo, curated accent style, and welcome message to supported Prospeno login and workspace surfaces while preserving accessibility, product identity, and historical company records.

Controlled company identity

  • Upload and store a company identity logo, then apply curated accent styling to supported login and workspace surfaces

Separate activation controls

  • Module entitlement, login branding, and authenticated workspace accents are managed through explicit Admin actions—not automatic on purchase

Not full white-labeling

  • Prospeno attribution, semantic status colors, and security-critical UI remain visible while your company identity appears on approved surfaces

Overview

Custom Branding is a paid company-level module that lets authorized Admins apply company identity and curated accent styling to supported Prospeno web surfaces.

Branding is configured in Settings → Company. It applies only to supported web login and workspace presentation—not the mobile app, arbitrary modules, email templates, or custom domains.

The company identity logo is stored in Company Identity settings and may remain saved even when the Custom Branding module is inactive.

Module activation (`custom_branding_active`) and explicit branding apply (`login_branding_enabled`) are separate controls. Purchasing or enabling the module does not automatically apply saved branding.

When the module is cancelled or expired, custom presentation stops while stored logo, accent preset, and welcome message values are preserved.

Historical business records, financial data, and audit history are unaffected by branding changes.

Custom Branding is a controlled branding layer—not full white-labeling.

Who can use it

  • Role

    Admin

    View branding settings

    Yes

    Edit branding

    Yes

    Apply branding

    Yes

    Reset branding

    Yes

  • Role

    Manager

    View branding settings

    Read-only on Settings → Company

    Edit branding

    No

    Apply branding

    No

    Reset branding

    No

  • Role

    Supervisor

    View branding settings

    Read-only on Settings → Company

    Edit branding

    No

    Apply branding

    No

    Reset branding

    No

  • Role

    Employee

    View branding settings

    Read-only on Settings → Company

    Edit branding

    No

    Apply branding

    No

    Reset branding

    No

Permission matrix

Only Admins can upload the company logo, change accent presets, apply branding, or reset to Prospeno defaults.

Non-admin roles may open Settings → Company but see disabled controls and read-only messaging.

Company API updates require Admin role. Logo upload and branding PATCH requests return forbidden for non-admins.

Branding prerequisites

Before applying branding

  • Active company workspace
  • Custom Branding module entitlement with status Active
  • Supported base subscription and wallet billing where required for module purchase
  • Authorized Admin role
  • Company identity logo uploaded (recommended before apply)
  • Selected accent preset or preserved legacy color value
  • Welcome message within the supported character limit when applying

When the module is inactive, cancelling, or expired

  • Custom Branding settings remain visible on Settings → Company with a locked panel
  • Apply Branding and Reset to Prospeno Default are hidden or disabled
  • Accent preset and welcome message fields are read-only
  • Saved logo, color, and welcome message remain stored
  • A link to the Custom Branding module page helps Admins reactivate through Module Marketplace

Branding configuration

Settings → Company → Custom Branding

  • Module active / Module inactive status badge
  • Branding previews (sign-in panel and sidebar panel)
  • Welcome message textarea with character counter
  • Primary accent color preset grid
  • Apply Branding — saves accent, welcome message, and sets login_branding_enabled to true
  • Reset to Prospeno Default — sets login_branding_enabled to false while preserving saved color and message
  • View Custom Branding Module — opens /modules/custom-branding when entitlement is inactive

Settings → Company → Company Identity

  • Upload Logo / Replace Logo — PNG or WebP company identity asset
  • Dark-background logo preview with transparency guidance
  • Logo storage is independent from module activation

Not available in the standard UI

  • Arbitrary hex color picker for new selections
  • Custom fonts, custom CSS, or layout controls
  • Email-template or PDF-wide branding controls
  • Mobile app branding controls

Logo upload workflow

  1. 1

    Open Company Identity settings

    Go to Settings → Company → Company Identity.

  2. 2

    Select a supported logo file

    Choose PNG or WebP up to 2 MB.

  3. 3

    Review previews and transparency guidance

    Inspect the dark-background preview and transparency result message.

  4. 4

    Confirm readability at compact sizes

    Ensure the mark remains clear in sidebar and login placements.

  5. 5

    Save the logo

    Upload posts to /api/company/logo and stores logo_path on the company record.

  6. 6

    Apply branding when ready

    Enable Custom Branding and click Apply Branding in the Custom Branding section.

Validation errors include: missing file, unsupported type, file larger than 2 MB, or non-admin upload attempts.

Upload failures surface inline without silently discarding the previous logo.

Accent presets

Curated presets (16)

  • Prospeno Blue, Navy, Sky, Cyan, Indigo, Violet, Purple, Fuchsia, Rose, Crimson, Orange, Amber, Lime, Fresh Green, Emerald, Teal
  • Each preset includes hex, foreground, hover, and focus-ring values for accessible contrast
  • Selected preset shows a primary ring and border in the settings grid
  • Presets drive primary, ring, and gradient CSS variables on supported workspace surfaces
  • Legacy stored hex values outside the palette remain preserved until an Admin selects a preset
  • Legacy Slate (#475569) remains readable for older saved colors but is not listed in the primary grid

Free-form color entry is not available in the standard Custom Branding UI.

Reset to Prospeno Default restores live presentation to platform styling without deleting the saved preset selection.

Welcome message

Field behavior

  • Entered in Custom Branding → Welcome message on Settings → Company
  • Maximum length: 160 characters when applying branding
  • Plain text only—HTML, Markdown, and links are not supported
  • Appears below the company name on the branded company login panel when branding is live
  • Empty value is allowed; the login page falls back to default presentation copy
  • Legacy messages longer than the limit remain visible until shortened; Apply Branding is blocked until within limit

Pre-authentication visibility

Keep the message concise and avoid confidential information because it may appear before authentication.

Branding activation controls

custom_branding_active

  • True when the Custom Branding company_modules row status is Active
  • Exposed on company and workspace bootstrap payloads
  • Required before branding PATCH fields can be saved
  • When false, branding controls are locked even if a logo is stored
  • Module cancellation or expiry sets this to false while preserving stored configuration

login_branding_enabled

  • Set to true only when an Admin clicks Apply Branding
  • Set to false when an Admin clicks Reset to Prospeno Default
  • Stored on the company record alongside brand_color and login_welcome_message
  • Together with custom_branding_active, determines whether branding is live
  • Can remain false while the module is active—configuration saved but not applied

Live branding requires both custom_branding_active and login_branding_enabled.

Module activation alone does not set login_branding_enabled.

Disabling or expiring the module stops live branding without deleting stored logo, color, or welcome message values.

Apply and reset workflow

  1. 1

    Apply branding

    1. Review welcome message, accent preset, and previews. 2. Confirm Custom Branding module is active. 3. Click Apply Branding. 4. Verify the company login page at /c/{company-code}. 5. Verify supported authenticated workspace accents after sign-in.

  2. 2

    Reset branding presentation

    1. Open Settings → Company → Custom Branding. 2. Click Reset to Prospeno Default. 3. Confirm success notice. 4. Live login and workspace surfaces return to Prospeno defaults. 5. Saved accent and welcome message remain stored for a future apply.

Disabling branding (Reset) is not the same as removing the company logo.

Removing or replacing the logo is a separate Company Identity action.

Cancelling the module stops entitlement and live branding without deleting stored identity assets.

Company login branding

Branded company login (/c/{company-code})

  • Resolves company by login slug derived from company code
  • Shows company logo, company name, welcome message, and branded primary button when branding is live
  • Powered by Prospeno attribution remains on the auth shell
  • Remember Me uses the shared branded Checkbox styling when branding is active
  • Invalid or unknown slug returns a safe workspace-not-available response
  • Inactive company blocks sign-in even when branding assets exist
  • Logout can preserve the company slug for return visits where implemented
  • Responsive layout keeps authentication form behavior on the supported auth shell

Fallback login

  • When branding is not live, the company login route uses default Prospeno presentation
  • Stored logo may still exist but is not shown on login until branding is live

Authenticated workspace branding

Supported branded surfaces

  • Primary action buttons and primary gradients on approved web controls
  • Selected sidebar navigation accent and company logo in the sidebar header when branding is live
  • Checkbox accent, focus ring, and selected-state tokens derived from brand primary variables
  • Selected tabs and focus-visible rings on supported controls
  • CompanyWorkspaceTheme applies CSS variables from the selected preset in light and dark mode

Intentionally unbranded or semantic surfaces

  • Destructive actions and error states
  • Warning, success, and financial health colors
  • Status badges and semantic alert tones
  • System-critical security UI
  • Prospeno attribution, legal links, and product notices
  • Full-page workspace loaders (Prospeno BrandIcon only)

Primary action styling

When branding is live, primary buttons use preset-derived solid and gradient tokens.

Hover states use the preset hover hex; disabled states fall back to muted platform styling.

Loading buttons retain spinner behavior without replacing semantic disabled colors.

Text on primary actions uses the preset foreground color for contrast.

Not every button on every surface is branded—secondary, outline, destructive, and semantic actions keep platform styling.

When branding is inactive, controls fall back to default Prospeno primary tokens.

Preview behavior

Settings previews

  • Sign-in brand panel preview shows logo, welcome message, accent button, and Powered by Prospeno
  • Sidebar brand panel preview shows logo and accent styling
  • Preview state badge: Inactive, Ready to apply, or Active
  • Locked previews use neutral accent when the module is inactive
  • Previews reflect unsaved preset and welcome message selections before Apply Branding
  • Previews are representative mockups—not a full live workspace render

Branded login conditions

  • Condition

    Valid company + module Active + login_branding_enabled

    Result

    Branded company login with logo, welcome message, and accent styling

  • Condition

    Valid company + module Active + login_branding_enabled false

    Result

    Default Prospeno login styling; configuration may be saved but not applied

  • Condition

    Module expired, cancelling, disabled, or inactive

    Result

    custom_branding_active false; default or restricted branding presentation

  • Condition

    Invalid company slug

    Result

    Workspace not available response

  • Condition

    No company logo

    Result

    Company name or initials fallback on login panel

  • Condition

    Missing welcome message

    Result

    Login panel uses default copy without custom welcome text

Status table

Loader and transition behavior

Full-page workspace loaders use the Prospeno BrandIcon—not the company logo.

BrandedWorkspaceLoading does not resolve company branding during preparation.

Workspace bootstrap is prefetched during auth transitions; branding variables apply after bootstrap when live.

Reduced-motion preferences disable loader shine animation in global CSS.

Mobile app loaders and transitions do not use Custom Branding.

Prospeno attribution

Custom Branding is not full white-labeling

Prospeno branding or attribution remains on supported surfaces, including Powered by Prospeno on company login previews and auth shells.

Custom Branding identifies the workspace—it does not represent ownership of the Prospeno software.

Legal links, security messages, and system attribution may remain Prospeno-branded.

Module cancellation and expiry

  • State

    Active

    Settings access

    Admins can edit and apply

    Live branding

    Live when login_branding_enabled is true

    Stored configuration

    Logo, color, and welcome message stored

  • State

    Cancelling

    Settings access

    Read-only locked panel; custom_branding_active is false once status is no longer Active

    Live branding

    Live branding stops

    Stored configuration

    Stored configuration preserved

  • State

    Expired / inactive

    Settings access

    Locked panel with reactivation link

    Live branding

    Default Prospeno presentation

    Stored configuration

    Logo, color, and welcome message preserved

  • State

    Disabled / suspended

    Settings access

    Module unavailable; branding controls locked

    Live branding

    No live custom branding

    Stored configuration

    Historical company identity assets preserved

Status table

Reactivation

  1. 1

    Reactivate through Module Marketplace

    Open /modules or /modules/custom-branding and complete wallet activation or renewal.

  2. 2

    Return to Branding Settings

    Open Settings → Company → Custom Branding.

  3. 3

    Review preserved configuration

    Logo, accent preset, and welcome message should still be present.

  4. 4

    Apply branding again

    Click Apply Branding if login_branding_enabled was previously reset or module expiry cleared live branding.

  5. 5

    Verify surfaces

    Check company login and supported workspace accents after sign-in.

Reactivation restores entitlement (custom_branding_active) but may require explicit Apply Branding to turn login_branding_enabled on again if it was reset.

Accessibility and safety

Use a readable logo with sufficient contrast on dark login backgrounds.

Choose curated presets instead of arbitrary colors to preserve readable primary and focus tokens.

Keep welcome copy short and free of confidential information.

Semantic warning, error, success, and destructive colors remain unchanged for clarity.

Keyboard focus rings remain visible through preset ring tokens.

Upload only logos your company is authorized to use.

Do not use branding to imitate another company or misrepresent product ownership.

Custom Branding vs Company Identity

Company Identity

  • Stores company name, logo, company code, and contact details
  • Available to Admins on Settings → Company without requiring live branding
  • Logo upload persists independently from module entitlement

Custom Branding

  • Applies eligible identity and curated accent settings to supported surfaces
  • Requires active module entitlement and explicit Apply Branding
  • Controls login presentation and workspace accent tokens

Custom Branding vs full white-label

Custom Branding (supported)

  • Company logo on supported login and sidebar surfaces
  • Curated accent presets and welcome message
  • Primary, focus, and checkbox tokens on approved web controls
  • Powered by Prospeno attribution remains

Full white-label (not supported)

  • Removing all Prospeno identity
  • Custom domains
  • Arbitrary themes, fonts, or custom CSS
  • Independent mobile-app branding
  • Complete email or PDF branding across every module
  • Replacement of legal and product attribution

Secondary details

File validation
  • PNG or WebP only
  • Maximum 2 MB
  • Admin-only upload through /api/company/logo
  • Errors: missing file, unsupported type, oversize file, forbidden role
Branding persistence
  • logo_path, brand_color, and login_welcome_message remain on the company record when the module is inactive
  • login_branding_enabled may remain true in storage but has no live effect without active entitlement
Login fallback
  • Public company-login API returns branding.enabled false when module or apply flag is missing
  • Invalid slug returns workspace not available
Reset behavior
  • Reset to Prospeno Default sets login_branding_enabled false only
  • Does not delete logo_path or clear welcome message
  • Distinct from module cancellation and from logo replacement
Module renewal
  • Custom Branding is wallet-purchasable through Module Marketplace
  • Renewal restores Active entitlement; branding may still need Apply Branding
Caching and refresh
  • Workspace bootstrap is private, no-store
  • Users may need to refresh or sign in again to see updated branding on active sessions
Web-only limitation
  • Custom Branding applies to the Prospeno web experience only
  • Mobile Field App branding is not supported

Important limitations

  • Custom Branding is a paid add-on billed through your company wallet.
  • It is not full white-labeling—Prospeno attribution remains on supported surfaces.
  • Branding applies only to supported web login and workspace surfaces.
  • Company logo storage and branding module entitlement are separate.
  • login_branding_enabled and custom_branding_active are separate controls; both are required for live branding.
  • Module cancellation or expiry should not delete stored company identity.
  • Arbitrary CSS, custom fonts, unrestricted colors, custom domains, and mobile branding are not supported.
  • Semantic warning, error, success, and destructive colors may remain unchanged.
  • Users may need to refresh or sign in again after branding changes.
  • Only Admins can upload logos, apply branding, or reset presentation.
  • Welcome messages are limited to 160 characters when applying branding.
  • Branding must not reduce readability, accessibility, or security clarity.

Where to find help

Use the ? button in the web application for the current page guide, Getting Started, Module Guides, and Contact Support.

Related links

Jump to the module, marketplace, or broader help resources.

Custom Branding Guide — Prospeno Docs