Get started

Rebranding a SaaS product checklist: plan the cutover across every surface

Approval of the new identity and delivery of an asset folder do not complete a SaaS rebrand. A defined rollout wave is complete only when every required consumer has a current-to-target mapping, the intended artifact has reached the deployed product, representative states have been observed, and unresolved exceptions have owners. Use this checklist to make the cutover inspectable.

Updated October 4, 2026

1. Define the rebrand before inventorying assets

Start by naming the decisions that are changing. Rebranding can involve positioning, product naming, messaging, visual identity, interface rules, implementation artifacts, customer communication, or several of these at once. Treat them as one task and ownership and acceptance become impossible to see.

For each category, record one of four statuses: replace, preserve, unresolved, or not applicable. Preserve matters as much as replace. If the product name and navigation vocabulary are staying, write that down so a visual rollout does not accidentally become a copy rewrite. If the logo changes but the legal entity name does not, state that boundary. If the target identity has no approved rule for data visualization, leave that decision unresolved instead of improvising a chart palette during implementation.

Scope statusMeaningExample
ReplaceReplaceAn approved target supersedes the current decision.Map the old primary-action treatment to the new semantic primary role.
PreservePreserveThe current decision remains authoritative.Keep product terminology and task labels unchanged.
UnresolvedUnresolvedAn authorized owner must decide before affected consumers can pass.No approved treatment exists for dense charts in dark mode.
Not applicableNot applicableThe category does not affect this rollout wave, and the reason is recorded.No naming change is included in the visual refresh.
A scope declaration separates each decision from its downstream work.

Do not turn uncertainty into policy

A temporary implementation choice may unblock a screen, but it does not settle an unresolved brand decision. Record the choice as an exception, name its owner, and set a retest trigger.

Freeze the current and target contracts

Give each side of the migration an identity and version. The current contract is the version customers see before the wave; the target contract is its approved replacement. Record who approved each one, its owner, explicit exclusions, unresolved decisions, and the precedence rule to use when two sources disagree.

  • Current source name, version, location, owner, and approval state
  • Target source name, version, location, owner, and approval state
  • Decisions being replaced and decisions explicitly preserved
  • Excluded products, regions, tenants, channels, or environments
  • Unresolved decisions and the person authorized to settle each one
  • Conflict precedence, such as approved target source before generated artifact, and an authorized project exception before a shared default

This contract stops a recent export from silently outranking the approved source simply because it is easier to install. Generated files carry decisions. Being newer does not give them decision authority.

2. Treat the new kit as target-state input, not migration proof

A complete design kit makes the target state concrete. It can supply semantic light and dark colors, typography roles, spacing, layout guidance, motifs, usage rules, and implementation artifacts. It cannot describe your previous brand, decide how every old role maps forward, identify all product consumers, validate local exceptions, or prove what a deployed customer sees.

Ambient Sage v1 is a bounded example. Its public record identifies 28 semantic light and dark tokens, Plus Jakarta Sans for heading and body roles, JetBrains Mono for technical strings, DESIGN.md, and implementation delivery paths. Those facts support a specific target intake. They do not prove compatibility with a particular SaaS application or show that a rebrand is complete.

Token specimen · real values

Ambient Sage

Live render

Ambient Sage's actual tokens — the same values its exports use.

Color tokensSemantic roles with HEX / HSL / CMYK

Color tokens

Ambient Sage
light · HEX · HSL · CMYK

Core

#F3F4EF

background

H 72 · C0, 0, 2, 4

#1A1C17

foreground

H 84 · C7, 0, 18, 89

#E5E6E0

card

H 70 · C0, 0, 3, 10

#ECEEE8

muted

H 80 · C1, 0, 3, 7

#D8D9D2

border

H 68.57 · C0, 0, 3, 15

Brand

#FEE951

primary

H 52.72 · C0, 8, 68, 0

#1A1C17

primary-fg

H 84 · C7, 0, 18, 89

#E5E6E0

secondary

H 70 · C0, 0, 3, 10

#F7E464

accent

H 52.24 · C0, 8, 60, 3

#FEE951

ring

H 52.72 · C0, 8, 68, 0

Semantic

#C0392B

destructive

H 5.64 · C0, 70, 78, 25

#FFFFFF

destructive-fg

H 0 · C0, 0, 0, 0

#2D7238

success

H 129.57 · C61, 0, 51, 55

#C97D12

warning

H 35.08 · C0, 38, 91, 21

#545651

muted-fg

H 84 · C2, 0, 6, 66

Charts

#FEE951

chart-1

H 52.72 · C0, 8, 68, 0

#4A8FD4

chart-2

H 210 · C65, 33, 0, 17

#6BBF8A

chart-3

H 142.14 · C44, 0, 28, 25

#E07498

chart-4

H 340 · C0, 48, 32, 12

#E8A24B

chart-5

H 33.25 · C0, 30, 68, 9

Type scaleHeading, body, and mono in the kit's fonts

Typography

Ambient Sage

Scale: compact-product

Density: balanced

Heading · Plus Jakarta Sans · 1.875rem

Ship beautiful product faster

Subheading · Plus Jakarta Sans · 1.375rem

A warm-sage neutral-surface mobile kit with a single vivid yellow accent, flat tonal cards, and oversized display numerals.

Body · Plus Jakarta Sans · 1rem

Ambient Sage uses a near-white warm-sage canvas (#f3f4ef) with card panels distinguished only by a tonal shift to #e5e6e0, never by shadows or borders. A single vivid yellow (#fee951) is the only saturated color and appears sparingly at component scale as orbs, button fills, and focus rings. Primary data values render as oversized bold hero numerals with a small superscript unit. Typography is a friendly rounded geometric (Plus Jakarta Sans) with no uppercase and no tight tracking, while JetBrains Mono is reserved for hex codes and technical strings. Generous rounding and luminance-only contrast give the whole system a calm, minimal feel.

Mono · JetBrains Mono · 0.8125rem

npx shadcn add ambientsage.json

Aa

Plus Jakarta Sans · Heading

400500600700

Aa

Plus Jakarta Sans · Body

400500600700

ABCDEFGHIJKLM NOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789 & @ # % →

Radius & spacingCorner radius, elevation, and spacing steps

Tokens

Ambient Sage primitives
density: balanced

Radius scale

sm · 0.375rem
md · 0.75rem
lg · 1.25rem
xl · 1.75rem

Component radius

button
card
input

Elevation

level 1
level 2
level 3
level 4

Spacing · base 4px

1x
2x
3x
4x
6x
8x
Ambient Sage v1 can fill the target-source side of an intake record. The old-to-new mappings, product consumers, exceptions, accessibility evidence, and runtime observations still belong to the adopting team.
Target source: Ambient Sage
Target version: v1
Approval state: [required, unresolved]
Authority: [required, unresolved]
Delivered inputs: semantic light/dark colors; typography; spacing; layout and usage guidance; DESIGN.md; selected framework export
Prior brand source: [required, unresolved]
Current-to-target mappings: [required, unresolved]
Named product consumers: [required, unresolved]
Approved exceptions: [conditional]
Accessibility evidence: [required by acceptance scope, unresolved]
Runtime observations: [required by rollout scope, unresolved]
Bounded target-state intake example. Bracketed fields must be completed by the adopting team.

Inspect a complete target system before mapping the cutover

Use a published kit to see how semantic colors, typography, spacing, and component guidance fit together. Record it as one versioned migration input rather than evidence that the product has already changed.

3. Inventory every SaaS consumer and state

Inventory consumers rather than file types. A row called website updated hides the places where the old identity survives: an error boundary, a billing receipt, a help article screenshot, a password-reset message, or a chart tooltip that appears only in dark mode.

Begin with customer reach and product risk. A high-traffic landing page has broad reach. Sign-in, checkout, billing, account recovery, destructive actions, and permission errors carry higher task risk. These dimensions help you select representative consumers and rollout waves, but they do not remove any required surface from the register.

Surface | Representative consumers | Required states and conditions
Public site | home, pricing, signup entry, campaign landing pages | default, narrow viewport, dark mode if supported
Authenticated app | shell, navigation, dashboard, settings, billing | loading, empty, populated, error, disabled
Forms | signup, sign-in, recovery, profile, checkout handoff | default, focus, invalid, submitting, success
Data UI | tables, filters, charts, exports | sparse, dense, long labels, no data, error
Documentation | docs shell, code samples, screenshots, release notes | desktop, mobile, light/dark if supported
Lifecycle messages | verification, reset, invitation, billing, cancellation | major clients, long names, plain-text fallback
Support content | help center, macros, status messages, attachments | current article, cached image, embedded widget
External identity | social profiles, app listings, favicons, share cards | cropped, small-size, stale-cache checks
Approved exceptions | partner widget, legacy area, white-label tenant | owner, reason, expiry or retest trigger
Surface-and-state inventory starter. Replace generic entries with the named consumers, environments, locales, and supported conditions of the product.

List light and dark modes separately when the product supports both. Add responsive conditions based on behavior, not a ceremonial list of device widths. Record long translations, long customer names, zero and large values, permission differences, reduced-motion behavior where relevant, and third-party or white-label boundaries. Any of these conditions may select a different asset, token, layout, or component path.

A surface is not a screenshot

A screenshot captures one consumer in one condition. Keep it as evidence for that observation, but do not treat it as proof that every state, mode, locale, or deployment follows the same contract.

4. Map old decisions to semantic roles

A search-and-replace pass over hex values, font names, and logo filenames cannot safely migrate a SaaS brand. The same old blue may represent a primary action, selected navigation, an informational message, and a chart series. Those meanings may require different target roles even if they once shared a value.

Map from old meaning to new meaning first. Then connect the new meaning to the project implementation. Color roles may include background, foreground, primary, destructive, success, warning, border, focus ring, and chart series. Typography roles may include heading, body, label, numeric, and technical strings. For spacing and shape, record whether the change belongs to a shared scale, a component contract, a layout rule, or a named exception.

Decision pointLiteral replacementSemantic mapping
InputInputAn old value and a new value.An old role, target role, and governing rule.
ReachReachEvery matching literal, whether related or not.Named consumers that use the role.
ModesModesUsually handled as another replacement pass.Light and dark values remain behind one stable role.
ExceptionsExceptionsEasy to overwrite or leave hidden.Recorded with authority, reason, owner, and retest trigger.
DiagnosisDiagnosisA wrong result looks like another stray value.The team can inspect source, mapping, component, exception, deployment, and render in order.
Semantic migration preserves intent. Literal replacement preserves only a coincidental value match.

When one old role splits into several target roles, record the split explicitly. When several old values collapse into one semantic role, list every affected consumer. The existence of a target token does not prove migration. A consumer passes only when it uses the intended mapping and its observed result meets the recorded expectation.

5. Complete the current-to-target cutover register

Use one row for each decision and consumer boundary that can fail independently. A global row called colors is too broad. A row for the primary-action role across a shared button contract may be suitable when the same implementation governs every named consumer. A locally overridden checkout button needs its own row because it has a separate failure path.

Record ID: [required]
Rollout wave: [required]
Consumer and environment: [required]
Reach and risk: [required]
Current source and version: [required]
Target source and version: [required]
Preserved or replaced decision: [required]
Old artifact or role: [required when one exists]
Target semantic role or rule: [required]
Emitted artifact and version: [required]
Project mapping: [required]
Mode, state, viewport, locale, and data condition: [required]
Expected result: [required before observation]
Observed result and evidence location: [required for acceptance]
Evidence state: approved | delivered | mapped | deployed | observed
Exception and authority: [conditional]
Implementation owner: [required]
Correction owner: [conditional]
Rollback trigger and action: [required before deployment]
Retest trigger: [required]
Disposition: accept | revise | block
Release authority: [required, separate from artifact supplier]
Copyable current-to-target cutover row. Use not applicable only with a reason; use unresolved when required evidence or a decision is missing.

Classify every field as required, conditional, unresolved, or not applicable. Conditional fields need a named condition. An old artifact is required when a previous implementation exists, while an exception is conditional on an authorized deviation. Not applicable needs a reason. It must not become a softer spelling of not checked.

Keep five evidence states separate

Evidence stateWhat it provesWhat it cannot prove
ApprovedApprovedAn authorized owner accepted the target decision.An artifact contains it or a product uses it.
DeliveredDeliveredA named artifact exists at a recorded version.The project mapped, deployed, or rendered the artifact correctly.
MappedMappedThe project connects the target role or rule to a recorded implementation path.The deployed build contains the mapping or produces the expected result.
DeployedDeployedA recorded release reached a named environment.Caches, overrides, states, and consumers produce the expected result.
ObservedObservedA named consumer produced a recorded result under stated conditions.Unobserved surfaces, states, modes, locales, or environments also pass.
Each evidence state answers a different question and has a different proof boundary.
A rebrand is complete only at the boundary its evidence actually covers.

6. Plan rollout waves and mixed-version coexistence

A large SaaS product rarely changes atomically. During a phased rollout, old and new branding may coexist across deployments, cached assets, email clients, documentation, mobile releases, embedded widgets, or customer-controlled environments. This coexistence is manageable when its boundary is deliberate.

  1. 1

    Name the wave

    Define the exact consumers, environments, locales, modes, and states included. Everything else remains outside this wave rather than implicitly passing.

  2. 2

    Define the compatibility boundary

    Record which old artifacts must remain available, which new artifacts are additive, and which consumers cannot understand the target version yet.

  3. 3

    List expected temporary mismatches

    Name acceptable mixed-version combinations, their reason, owner, customer impact, and expiry or retest trigger. An expected mismatch is still visible work.

  4. 4

    Control asset and cache identity

    Version files and generated artifacts so a stale cache cannot silently pair a new interface with an old logo, font, or token bundle. Record how the deployed version will be identified.

  5. 5

    Sequence communication dependencies

    Coordinate documentation, support material, lifecycle messages, release notes, and customer communication with the product surfaces they describe. Avoid announcing a universal change while required consumers remain deliberately old.

  6. 6

    Set rollback before release

    Define observable triggers, the affected wave, the restoration action, the owner allowed to invoke it, and the evidence needed before retrying.

Useful rollback triggers are specific enough to act on. Examples include an unreadable primary task in a supported mode, missing or misleading identity on sign-in or billing, a font-loading failure that materially disrupts completion, an unapproved name in customer communication, or a semantic mapping that changes protected status meaning. General dislike is feedback to investigate; it is not an executable rollback trigger.

Rollback the smallest safe wave

A fault in one deployment or consumer does not automatically invalidate the approved identity. Roll back or block the affected wave unless evidence shows that the target source or shared artifact is wrong for every downstream consumer.

7. Verify representative consumers by reach and risk

Choose representative consumers that expose different failure paths. Include a high-reach public surface, a critical authenticated task, a dense data surface, a form with validation, a lifecycle message, and any protected or exceptional area. Add consumers when the architecture, rendering path, content, or risk differs. Five screenshots of the same card component do not amount to broad coverage.

  • Confirm that the deployed consumer identifies the expected artifact and version.
  • Inspect light and dark modes independently where both are supported.
  • Exercise the default, hover, focus, disabled, loading, empty, populated, success, warning, destructive, and error states that the consumer supports.
  • Use realistic short and long content, large and zero values, translated copy where in scope, and constrained viewports.
  • Check focus visibility, text-spacing resilience, keyboard completion, zoom behavior, and relevant assistive-technology paths against the stated accessibility scope.
  • Confirm that protected surfaces remain unchanged when the new mapping should not reach them.
  • Capture the observation, conditions, date, environment, evidence location, and reviewer in the same register row.

Accessibility evidence follows the same boundary discipline. A token contrast check or isolated component fixture can catch useful problems, but it cannot establish that the composed product works with real content, routing, focus order, keyboard paths, zoom, and assistive technology. Test the shared system, then retest representative product consumers.

8. Diagnose the first divergent layer

When the result is wrong, compare the expected and observed results, then inspect the chain in authority order. Stop at the first layer that diverges. That layer usually owns the correction, and fixing it may clear the downstream symptoms.

  1. 1

    Target source

    Is the intended role or rule explicit, current, approved, and owned? If not, return the decision to the brand authority.

  2. 2

    Emitted artifact

    Does the recorded export contain the expected role, value, asset, mode, and version? If not, correct or regenerate the artifact.

  3. 3

    Project mapping

    Does the application map the target role to the intended framework variable, style, asset, or configuration? If not, the adopting project owns the mapping fix.

  4. 4

    Component contract

    Does the shared component consume the mapped role in the affected variant and state? If not, correct the component instead of patching each screen.

  5. 5

    Local exception

    Does an authorized or stale page-level, tenant-level, responsive, or state-specific override replace the shared result? Validate its authority before changing it.

  6. 6

    Deployment

    Did the reviewed artifact and mapping reach the named environment? Compare release identity and asset identity without assuming that a successful build was deployed.

  7. 7

    Rendered consumer

    Under the recorded mode, state, viewport, locale, data, cache, and user conditions, does the consumer match the expectation? Record the exact difference and its owner.

This sequence keeps corrections narrow. If the artifact is wrong, a page-level CSS patch hides the source failure and creates another exception. If the source and artifact are correct but one stale local override wins, changing the global token risks unrelated consumers. Diagnose before editing.

9. Choose accept, revise, block, or rollback

Make the decision for the declared wave, not for an imaginary whole-product rebrand. The disposition should name remaining exceptions, correction owners, retest triggers, rollback readiness, and the person who holds release authority. An artifact supplier can provide target-state inputs. The consuming SaaS team still owns product behavior, rollout evidence, and release approval.

DispositionUse it whenRequired follow-up
AcceptAcceptEvery required row for the wave has acceptable observed evidence, and any exceptions are authorized and bounded.Record the accepted scope, evidence, exceptions, and triggers that make the decision stale.
ReviseReviseThe target remains viable, but a correctable mapping, artifact, component, exception, or observation failed without making continued exposure unsafe.Assign the first divergent layer, correction owner, and exact retest scope.
BlockBlockRequired evidence is missing, authority is unresolved, a critical task or protected meaning fails, or rollback is not ready.Do not advance the wave. Resolve the blocking condition and repeat the affected checks.
RollbackRollbackA deployed wave meets a predefined rollback trigger and restoration is safer than continued exposure.Restore the recorded prior version, verify recovery, preserve the evidence, and open a bounded correction and retest.
Use the disposition that matches the evidence and customer risk.

An accepted target identity cannot overrule a blocked rollout. They are separate decisions. A revised rollout also does not mean the brand strategy failed. It means the migration chain has a correctable divergence.

10. Measure the rollout and this guide separately

For the rebrand, choose measures that match its stated purpose and rollout risk. Track task completion, support issues tied to identity confusion, error rates on changed critical flows, adoption of the target artifact, unresolved register rows, exception age, and rollback events. Visual completion and asset delivery are not customer outcomes.

For this guide, the exact query has no monthly-volume estimate in the frozen United States English dataset, so demand magnitude remains uncertain. Evaluate discovery after 7, 14, 30, 60, and 90 days using impressions, discovered queries, average position, clicks, and click-through rate for the canonical page, segmented by country and locale. Then inspect subsequent kit, generator, export, pricing, signup, kit-save, and checkout activity. Checkout starts and browser returns indicate progression, not purchases. Stripe-confirmed purchases and revenue remain the authoritative commercial outcomes.

Traffic is not the acceptance decision

A ranking gain without qualified product exploration or activation is weak evidence of business value. Landing attribution can show association, but it does not by itself prove an ordered same-user journey through every funnel step.

Start with the highest-reach customer-facing surface in the next rollout wave. Complete one current-to-target register row through observed evidence, assign every unresolved field, and only then approve the wave or expand the migration.

Sources