Branding authentik per domain with brands and custom CSS

How authentik brands give each domain, wildcard or customer its own login look, default flows and redirect behavior, and what to plan before building them.

On this page

Branding authentik per domain with brands and custom CSS: when teams need it

A brand in authentik is the set of login presentation and default settings that a user sees when they arrive at the sign-in pages for a given domain. Teams need one when a single authentik deployment serves several customers, business units or public-facing sites that should not all look identical. A multi-customer operator, for example, may host partner portals on different domains and want each login page to carry that partner's logo, colors and wording without standing up a separate authentik instance. Brands are the right tool when the differences are cosmetic and routing-related. If the requirement is different authentication policy or different identity sources per tenant, a brand alone will not provide it, and the team should plan for that separately. A brand can apply to a single domain, to a domain wildcard, or to the default used when no other brand matches. Each brand sets a branding title, a logo, a favicon, a default flow background, custom CSS and default flows. The background and custom CSS settings arrived in 2025.4, so any deployment older than that release cannot use them and will need an upgrade before the design work can start. The default flows setting determines which authentication, enrollment and recovery flows a visitor enters from that domain, so it has a direct effect on the login experience and should be reviewed alongside the flows themselves. Before building anything, confirm three things with your own environment: which hostnames and wildcards will receive traffic, which brand is the fallback for unmatched hostnames, and which authauthentik version is running in production. Map each customer or domain to one brand and write down the default flow it should use. Then test the matching logic from each hostname, because overlapping wildcards and a missing default brand are the simplest ways to show the wrong login page to the wrong audience.

Brand settings and when each fits

This table compares each brand setting, what it changes for users, the version it needs, and when a team should set it or keep the default. Read it as a checklist: start with title and logo, add custom CSS only when the look must differ materially, and set default flows only where a domain must land users on a specific journey.

SettingWhat it changesVersion and when to use it
TitleBranding title shown on the login and flow pages for the matched domainAvailable in all supported versions. Use it whenever a customer or domain needs its own name on the sign-in screen.
LogoLogo image shown on the login pages for the matched domainAvailable in all supported versions. Use it for customer-specific identity without changing page structure.
FaviconBrowser tab icon on the login pages for the matched domainAvailable in all supported versions. Use it when users with several customer tabs open need to tell sessions apart.
Default flow backgroundBackground image behind the login and flow pagesAvailable from 2025.4. Use it for a distinct visual per tenant when a plain color or logo is not enough.
Custom CSSStyling overrides on the flow pages for the matched domainAvailable from 2025.4. Use it only when logo and background cannot meet the brief, and test each change after upgrades.
Default flowsFlows used for the matched domain, such as login, enrollment or recoverySet per brand. Use it when one domain needs a different sign-in journey, and keep the global default where one journey fits all.
External user redirectsWhere external users are sent when they reach the brand, instead of the standard flowSet per brand. Use it for partner or contractor domains that should be routed to their own identity source or landing page.

Setting up brands for each customer domain

This sequence takes a shared authentik instance and gives each customer hostname its own login look and default flows, with a default brand as the fallback. Each step ends with a check so you know the mapping works before customers see it.

  1. Confirm the authentik version supports custom CSS

    Before any design work, confirm the running authentik version is 2025.4 or later, because custom CSS and background support for brands arrived in that release. Check the version in the admin interface and compare it with the releases page. Also confirm the version is one that receives security fixes: the security policy lists 2026.5.x and 2026.8.x as supported, and the project announces security releases at least 24 hours in advance. If you are on an older line, plan the upgrade before branding, since the custom CSS fields will not be available. Done when the version is recorded in your change ticket and it is on a supported line.

  2. Define the domain and wildcard map

    Write down every hostname that will reach this instance, such as each customer's login subdomain, and note which ones should share a look through a domain wildcard. Brands apply to a single domain, a domain wildcard, or as the default, so decide where each customer falls and which hostname gets the default brand. Confirm the DNS records and reverse proxy routes for each hostname point to the same authentik instance. Illustrative example: one wildcard for a family of partner portals and one exact match for a single customer with a separate identity. Done when the map is signed off and every hostname has exactly one intended brand.

  3. Create the default brand

    Create the default brand first. It catches any hostname that does not match a specific brand, so it should show neutral, approved branding and not a customer's look. Set the branding title, logo, favicon, and default flow background, then assign the default authentication, enrollment and recovery flows you intend every unmatched hostname to use. Confirm the flow assignments are the ones your access policy requires, because a generic fallback can expose enrollment or recovery paths you meant to restrict. Done when a request to an unmatched hostname shows the default brand and the expected flows.

  4. Create per-domain brands with logo and favicon

    For each customer domain or wildcard in the map, create a brand that matches exactly one entry. Upload the logo and favicon assets, and set the branding title that users will see in the browser and on the login page. Keep asset files at sizes and formats your design team has approved, and record which file belongs to which brand so future changes are traceable. Avoid reusing one brand across customers unless the map says so. Done when each brand lists the intended hostname, and the logo and favicon display correctly on that hostname.

  5. Add custom CSS and background images

    Add the custom CSS and flow background for each brand, starting from the default brand so that non-visual settings stay consistent. Keep selectors narrow and test changes in one brand at a time, since CSS written for one customer can affect another if a brand was linked to the wrong hostname. Store the CSS in version control alongside the rest of your configuration so changes are reviewed. Confirm the background image loads from the instance and that the page remains readable on narrow screens. Done when each brand renders its CSS and background on its own hostname and no other brand changes.

  6. Assign default flows for each brand

    Assign the default flows for each brand according to the customer's access rules. Enrollment and recovery flows should match the policies agreed for that customer, such as invitation-only enrollment or a recovery path that requires verification. Check that each brand points at flows that exist and are bound to the policies you expect. Review the result with the people who own those policies, because a flow assigned to the wrong brand can change who is allowed to sign up or reset a password. Done when a written table lists each hostname, its brand, and its three default flows, and the table matches the live configuration.

  7. Test each hostname in a private window

    Test every hostname in a private browser window so cached sessions do not hide the result. For each one, load the login page, confirm the title, logo, favicon, background and CSS match its brand, and walk through the default flow to the point of sign-in. Also load an unmatched hostname to confirm it falls back to the default brand. Record the results in a test log with the hostname, the brand shown and any mismatch. Done when every hostname passes and the log is attached to the change record, with any mismatch fixed and retested.

Security risks in custom CSS and per-domain branding

A brand controls what a user sees before they type a password, so a brand change is a change to your login surface. The cards below cover who may edit brands, what custom CSS can do, how the shared default brand is protected, how lookalike domains are handled, how changes are audited, and what to re-check when upgrades touch templates.

Limit who can edit brands

Brand records, uploaded logos and custom CSS are configuration that can change what every user on a domain sees at sign-in. Give brand editing to a small named group, separate from the people who manage providers, flows and policies. Check that a support or helpdesk role can view brands without being able to change CSS or assets, and review that group membership on the same cycle as other administrator access.

Treat custom CSS as untrusted code

Custom CSS is executable in the browser of anyone who signs in. Overly broad selectors can hide error messages, restyle form fields so a fake input looks real, or hide the domain or certificate cues users rely on. Keep CSS minimal, scope selectors to the login elements you need, and test each change in a browser with the password field and error states visible before it reaches production.

Protect the shared default brand

The default brand applies to any request that does not match a more specific domain brand, so a bad change there reaches every domain that falls through to it. Keep a copy of the current default logo, background and CSS under version control, and require a second person to approve edits to it. Confirm which domains currently rely on the default before you change it.

Watch for lookalike login domains

Brands are matched by domain, so the brand set for your own hostnames can make a customer's login look official on a hostname you do not control. Attackers who register a near-identical domain can copy a brand's logo and colors for phishing. Maintain an inventory of every hostname that serves a brand, monitor certificate transparency logs for look-alikes of those names, and report lookalikes to the registrar and your abuse contacts.

Audit every brand change

A brand change is hard to spot after the fact because the login page still works. Record who changed a brand, what changed in the logo, favicon, background or CSS, and when. Compare the stored CSS against the approved copy on a schedule, and forward authentik's event log to your central logging so a change to a brand appears in the same review queue as provider and policy changes.

Re-check branding after upgrades

Upgrades can change the markup, class names or template structure that your custom CSS depends on. A selector that worked on one release can stop matching on the next, leaving a page that looks broken or exposes unstyled fields. Before any upgrade, load each brand's login, enrollment and recovery pages on a staging copy, compare them with the previous release, and confirm the release notes list no template changes that affect your CSS.

Redirecting external users and choosing where they land

What does an authentik brand's external user redirect do?

The authentik branding documentation describes external user redirects as a brand setting that decides where a user goes when a login request arrives on that brand's domain. A brand can apply to a single domain, a domain wildcard, or as the default, so the domain the user types in selects the brand and its redirect. The field names and the rules for which users count as external are set out in the docs, so read them against the version you run before you design around them. In practice, one authentik deployment can present different entry points to different customers without a separate instance for each. Confirm the behavior in a test environment first.

When should a customer be sent to its own identity portal?

Send a customer to its own identity provider or portal when its staff must authenticate against systems it controls, or when a shared login would confuse its users or show the wrong brand. Common cases are:

  • The customer runs its own directory or single sign-on and already manages its users and MFA there.
  • The customer's contract or security review requires its users to sign in on the customer's own domain.
  • The customer needs a self-service portal that belongs to the customer, not to your tenant.

Keep the shared login for users whose accounts you manage. Decide per customer and write the decision into the scope so the customer, your team and any auditors see the same answer.

What breaks if an authentik redirect target is wrong?

A wrong redirect target usually sends users to a page where they cannot sign in, or into a loop between two login pages. Other failures include a customer's users landing on your shared login and seeing another organization's branding, or a domain with no brand of its own falling back to the default brand and its flows. Users then report lockouts that look like password problems, which slows diagnosis. Check each brand by signing in from its domain with a test account for each user type, and watch the authentik logs for repeated redirects. Treat the redirect target as a change to production access and write the rollback step before you switch it.

How do I test external user redirects before a customer goes live?

Test each brand with one account per user type, starting from the domain the customer will actually use. Use a staging instance with the same brand settings as production. Record the expected landing URL for each scenario, and include a domain with no brand so the default brand path is covered. Check that the redirect target accepts the sign-in, that the return path works, and that no login loop appears in the browser or in authentik's event log. Repeat the test after every upgrade, because branding and flow behavior can change between releases, and check the release notes for the version you run.

Does sending external users to another portal change my authentik cost?

It can, depending on who signs in and how your design counts them. The authentik pricing page lists three editions: Open Source at no charge with community Discord support only, Enterprise at $5 per user per month billed annually plus $0.02 per external user per month, and Enterprise Plus starting at $20k annually. The enterprise-only features named on that page do not include branding, but confirm which edition your redirect design needs. Before you commit, ask authentik how users who authenticate through another portal are counted, and get the answer in writing with your quote.

Who owns brand and redirect settings after handover?

Your platform team usually owns the brand objects, default flows and redirect settings in authentik, because they change the access path for every domain. The customer owns its own portal, its domain certificates, its user lifecycle and its MFA policy when it runs its own identity provider. Put both lists in the written scope with a named contact on each side. Without that split, a change to a customer domain can break sign-in, and each side may assume the other tested it. Review the split whenever a customer adds a domain or changes its identity provider.

Can DeployOpen set up brand redirects for our authentik deployment?

Yes, as part of a fixed-scope engagement, provided the redirect work is written into the scope. DeployOpen plans, implements, documents and supports self-hosted open-source platforms inside your own infrastructure, and this includes authentik. Most engagements agree scope, deliverables and timelines in writing before work starts, and a quote follows from that written scope. To scope redirects accurately, bring the list of domains, the customers and their identity sources, the expected landing page for each, and the test accounts you will use. Ongoing support and upgrades are available as retainers.

Limits to confirm before you promise per-customer branding

Per-domain branding looks simple on a slide, but the login experience has more surfaces than the brand settings suggest. The cards below cover what to verify with the authentik version you plan to run, the edition you will license, and the flows your users actually take before you promise a customer a finished look.

Which screens the brand changes

A brand sets the title, logo, favicon, default flow background and default flows for the domain it matches. Confirm which pages your users reach that still show generic authentik text, such as error pages, consent prompts, application-specific messages or flows that are not the default for the brand. Build a list of every screen a customer's users will see, then mark which ones the brand controls and which ones you must accept as shared.

Custom CSS depends on version

Custom CSS for brands arrived in 2025.4, so any deployment on an older release cannot use it. Selectors that target the login interface can change between releases, which means a stylesheet that works today may shift after an upgrade. Pin the version you will run, record the selectors you rely on, and retest the stylesheet on every upgrade in a staging instance before it reaches customers.

Asset size and format rules

Logos, favicons and background images are uploaded per brand, and each one adds to what your users download on every login page load. Ask the vendor or check the branding documentation for accepted formats, maximum sizes and recommended dimensions before collecting files from customers. Keep one approved asset set per brand so that designers, operators and auditors can all point to the same versions.

Edition differences to confirm

The open-source edition is free and supported through the community Discord, while enterprise features such as Google Workspace and Microsoft Entra ID integrations are listed separately on the pricing page. Confirm with the vendor that branding features you plan to promise are available in the edition you will license, and check whether any support commitment you make to a customer depends on a paid support tier.

Testing across email and mobile

Branded login pages are not the only surface. Recovery and invitation emails, enrollment prompts and one-time code screens each need their own check, and mobile browsers and embedded app webviews can render CSS differently. Build a test matrix that covers each brand, each default flow, desktop and mobile browsers, and the email templates your customers receive, and sign off the matrix before you promise the look.

Domain matching and redirects

A brand applies to a single domain, a domain wildcard or as the default, so overlapping patterns can send a customer to the wrong look. External user redirects also need checking so that users are not sent to a page outside the intended brand. Document every hostname, wildcard and default in one table, and test each entry with a user who belongs to that customer before go-live.

What to plan before building a brand matrix

The effort of a brand matrix is set by three counts before anyone touches a logo: how many domains and wildcards will resolve to authentik, how many customers or tenants need their own look, and how many of those brands also need their own default flows. A brand applies to one domain, a domain wildcard or as the default, so a single shared login page with a few customer logos is a different job from one brand per customer with separate enrollment and recovery entry points. Write this mapping down as a table of hostnames, brands and flows before building. Ask who decides when a new customer domain is added, because each addition is a configuration change that someone must test, not just a DNS entry.

Ownership of the assets and CSS needs an answer before handover. Logos, favicons, background images and the custom CSS introduced in 2025.4 are configuration held in authentik's database, so the team that edits them must be named, and the reviewer for visual and accessibility checks must be named too. Custom CSS is the riskiest element because it can hide or displace fields on login and recovery pages. Agree who may change it, how changes are reviewed, and which fallback brand is used if a stylesheet breaks a flow. Confirm the exact fields and CSS behavior against the branding documentation for your release, since these settings are the ones most likely to change between versions.

Move brand changes through staging before production, and treat them as data changes. The server, the worker and PostgreSQL together hold the configuration, and PostgreSQL stores all configuration except uploaded files, so a brand edit is recorded in the same database that backups must capture. Plan a backup before each batch of brand changes, and keep the assets in version control where your process allows. Test each brand on every hostname it serves, including login, enrollment and recovery pages, and repeat those checks after every authentik upgrade. Ask your partner or internal team to confirm how the staging environment will mirror production domains, since a brand that works on a test hostname may not behave the same on the live one.

Branding authentik per domain: questions buyers ask

What drives the cost of a multi-brand authentik setup?

The main cost driver is how many brands you need and how different they are. Each brand needs its own logo, favicon, title, background and optionally custom CSS, plus a default flow, and each of those choices has to be designed, reviewed and tested against every login path your users take. Costs split into one-time design and build work, testing across browsers and devices, and any later changes. Ask for a written scope that lists each brand, each domain or wildcard it applies to, which flows it uses, and whether custom CSS is in or out. A brand that reuses the default look and flows is far less work than one with its own CSS and enrollment behavior.

How long does a typical authentik brand rollout take?

The duration depends on the number of brands, the amount of custom CSS, and how many flows each brand must change, so there is no standard figure to quote here. Ask for a written scope with a timeline that separates design approval, build, testing against each domain, and cutover. Timelines also depend on how quickly your team reviews visual designs and how many rounds of revision you expect. A rollout that moves a few brands with default flows will be much shorter than one that rebuilds login pages for many customers at once.

What does the work need from our team?

You need a named approver for brand designs, someone who can supply final logos, favicons and background images, and an owner for DNS and the reverse proxy that serves each domain. Your team also needs to confirm which domains or wildcards each brand covers, and which users are routed to each brand. If you use custom CSS, expect a technical reviewer who can check it against the authentik version you run. Ask the partner to list these inputs in the written scope so that delays are visible before work starts.

Can our own staff set up brands without outside help?

Yes, a team with administrator access to authentik can create brands in the admin interface, upload images and set default flows. The harder part is custom CSS: it must be written against the markup of the authentik version you run, tested on each domain, and kept working through upgrades. Confirm your team's experience with the admin interface, CSS, and your reverse proxy configuration. If those skills are thin, a fixed-scope engagement can cover the design and build while your staff take over operation.

What changes when we add a new customer domain?

Adding a domain means creating or extending a brand that matches the new domain or wildcard, then confirming the default flow, branding title, logo and any CSS behave correctly on that domain. You also need DNS, TLS certificates and reverse proxy routing for the domain to reach authentik. Each new domain adds test cases for login, enrollment and recovery, because those flows may be served under different brands. Ask whether the scope includes ongoing additions and how each new domain is tested before it goes live.

Do custom CSS and brand changes survive authentik upgrades?

Brand settings that use built-in fields are generally stable, but custom CSS depends on page structure that can change between releases, so it should be retested on every upgrade. Custom CSS support was added in 2025.4, so older deployments need that version or later before you can use it. Confirm the target version with the authentik release notes before you design the look, and include CSS regression checks in your upgrade plan.

What risks should we review before branding login pages?

The main risks are a brand that does not match the domain a user actually visits, default flows that send users to the wrong enrollment or recovery path, and CSS that hides form fields or error messages. Test each brand with real domains, check that error states remain readable, and confirm that branding does not change security settings. Ask the partner how they test brands on each domain and how a broken brand is rolled back.

How DeployOpen scopes and delivers per-domain branding

Per-domain branding touches hostnames, login pages, default flows and customer expectations, so the work is easiest to control when it is scoped in writing first. The cards below follow the order we use: agree the scope, map domains to brands, build in your infrastructure, test each hostname, hand over, then decide on ongoing support.

Written fixed scope first

Before any build, we agree in writing which brands exist, which domains or wildcards each one covers, which default flows each brand uses and which assets are in scope. Logos, favicons and background images are supplied by you, so the scope should name each file and its owner. Ask for a written scope that lists brands, hostnames and assets as separate line items, because that list is what the quote follows.

Domain and brand mapping

Each hostname is matched to exactly one brand, using a single domain, a domain wildcard or the default brand. Overlaps between a wildcard and a specific domain are the most common source of a customer seeing the wrong login page, so the mapping is reviewed with your team before configuration. Confirm who owns each DNS record and certificate for every customer domain.

Build in your infrastructure

Brand configuration, custom CSS and assets are applied to your own authentik deployment, running on infrastructure you control. Changes are made as versioned configuration so they can be reviewed and reproduced in a staging instance first. Ask where the staging copy will run and who can approve a change to production branding.

Testing per hostname

Each hostname is tested on its own, including the login page, the enrollment and recovery screens, the favicon and the background image. Custom CSS is checked against supported browsers and at common screen sizes, and the test record notes which default flow each hostname reaches. Ask for the test cases as a deliverable so your team can repeat them after future changes.

Handover documentation

We document the brand inventory, the domain mapping, the CSS files and their purpose, the default flow per brand and the steps to add a new customer domain. The handover also covers which settings belong to your administrators and which were left to the implementation team. Ask that the document is kept in your own repository, not only in a delivery folder.

Optional retainers for brand upkeep

Customer brands change, new domains are added and each authentik upgrade can affect custom CSS. A retainer can cover brand changes, CSS review at upgrade time and regression testing per hostname. Ask what is included each month, how urgent requests are handled and how upgrade testing is scheduled against the authentik release notes.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.