How hard is it to migrate from Firebase Authentication to Zitadel?
Your user accounts can move from Firebase Authentication to Zitadel, but your password hashes cannot. Firebase uses a modified scrypt algorithm with project-specific keys that Zitadel cannot process, so any hashes you export must be discarded. How hard the move is depends on how your users will sign in after cutover, and that choice shapes most of the plan. Zitadel's Firebase guide documents two import paths: a bulk import that requires a password reset at first login, and just-in-time migration that checks credentials against Firebase's REST API while Firebase is still in use.
The short answer is that a bulk import is simpler to build, because it removes the dependency on Firebase once the import is complete, but it asks every user to reset a password. Just-in-time migration keeps existing passwords working, but it means Firebase must stay reachable, your team must run two systems for longer, and sign-in code must handle both paths. Zitadel suggests a migration window of about 30 to 90 days for this work. Treat that as a starting point to test against your own login patterns. Accounts that sign in through Google or other federated providers also need a check, because you must confirm how their identifiers map to Zitadel users.
Before you choose, export a count of accounts by sign-in method and by last login date from your Firebase project. Dormant accounts are often good candidates for a forced reset during bulk import. Active users who sign in with a password are the group that benefits most from just-in-time migration. Confirm with your application owners which clients call Firebase directly, what code changes each one needs, and how long your migration service can keep calling the Firebase REST API. Also decide how users will be told about the reset, because support volume during the window is often the largest operational cost.
The work is planned and carried out in your own infrastructure. The Zitadel instance, its PostgreSQL database (versions 14 through 18 are supported), the import tooling and any service that verifies logins during the migration window run in your cloud account or data center. Firebase service account credentials should stay in your secrets store and be removed once the window closes. Effort follows the number of applications, identity providers and the password strategy you choose. DeployOpen plans and implements this sequence against a written scope, so the decisions above should be settled before that scope is drafted.
What maps cleanly from Firebase Authentication to Zitadel and what does not
This table compares the main Firebase Authentication capabilities with their closest Zitadel equivalents and notes where the migration needs design work. Read each row as a starting point, then confirm every field against Zitadel's Firebase migration guide before you plan the import. The main takeaway is that password hashes cannot be carried over, so the credential path is the decision that shapes the rest of the project.
| Firebase Authentication capability | Zitadel equivalent | Migration notes |
|---|---|---|
| User profiles and identifiers | Users within an organization, identified by login name and user ID | Map Firebase UIDs to Zitadel user identifiers and keep a lookup table so existing application references still resolve. Confirm field mapping against the Firebase guide. |
| Email verification state | Verified email flag on the user | Carry the verified state over where the import format supports it. Confirm whether unverified users need a verification step after cutover. |
| Google sign-in provider | Google as a federated identity provider | Configure Google in Zitadel and confirm that users link to the same identity by email or subject. Test account linking before bulk import. |
| Email and password sign-in | Password login with a local credential | Firebase password hashes cannot be imported into Zitadel, so users must set a new password through a reset or just-in-time verification. Plan the user communication early. |
| Password hashes | Not carried over | Firebase uses a proprietary modified scrypt with project-specific keys that Zitadel cannot process. Discard imported hashes and choose between forced resets and just-in-time migration. |
| Custom claims | Roles, grants and project-level claims | Custom claims do not map automatically. Define an explicit mapping from each Firebase claim to a Zitadel role or grant, and confirm claim names and token contents in a test project. |
| Firebase projects and tenants | Organizations, projects and roles | Zitadel organizations, projects and roles need an explicit design. Decide how each Firebase project maps to a Zitadel organization and project before importing any users. |
Why Firebase password hashes cannot be imported into Zitadel
Zitadel cannot import the password hashes that Firebase Authentication stores, so the migration plan has to account for that from the start. Firebase hashes use a proprietary modified scrypt algorithm with project-specific keys, and Zitadel cannot process them. The Zitadel Firebase guide therefore treats imported Firebase hashes as data to discard. Your export may still contain hash fields, and the import process should not carry them into Zitadel. Confirm this behavior against the current Zitadel Firebase guide and your chosen import tooling before you set a cutover date, because the decision affects every user record you move.
In practice, each Firebase user ends up in one of two states. Either the user sets a new password in Zitadel, or Zitadel verifies the submitted password against Firebase during a transition period. Outside those two paths, existing passwords cannot be carried over. Users who never sign in during the window will need a reset later, so support should expect that volume. Before the import, identify which accounts are active, which rely only on federated or social sign-in, and which use factors such as passkeys that the Firebase export will not describe.
The Zitadel guide offers two routes. Bulk import moves user records ahead of the cutover and requires a password reset at first login. This keeps the cutover simple, but every user passes through a reset prompt. Just-in-time migration leaves credentials in Firebase: when a user signs in, Zitadel checks the password against Firebase's REST API. The guide suggests a migration window of about 30 to 90 days for this approach. Choose a route before you build the import pipeline, because just-in-time depends on Firebase staying reachable and correctly configured for the whole window. Confirm with Zitadel what it stores after a successful check.
Before the window opens, confirm three things with your own team: how long the Firebase project, its API configuration and its user records remain available after cutover, who approves ending Firebase verification, and how the help desk will handle reset requests. Treat the 30 to 90 day figure as a starting range from the guide and adjust it to your user base. Write the window end date into the runbook, and test one account through each path in a staging environment. Extend the window if reset volume or failed verifications stay high near the planned end.
Two documented import paths for Firebase users into Zitadel
Zitadel's Firebase guide documents two ways to move users, and both are shaped by the same constraint: Firebase password hashes cannot be carried over. Compare the source access, user experience and operating owner of each path before you choose one, or split users between them.
Bulk import with forced resets
Export your Firebase user records, load them into Zitadel in one batch, and require every user to set a new password at first login. Your team needs an export of identifiers, emails and profile fields, and no working password is needed. Users experience one reset step before they can sign in. Your platform team usually owns the export and import, with DeployOpen running them if you scope that work. Confirm the current import format and steps in the Zitadel guide before you schedule a cutover.
Just-in-time migration with a grace period
Keep Firebase as the credential check for a limited window. When a user signs in, Zitadel verifies the password against Firebase's REST API, so users keep their existing passwords. This path needs a Firebase project that stays reachable, API access that your team can keep running, and a planned end date. The guide suggests a migration window of about 30 to 90 days. Your platform and security teams must own that dependency, and any users who never sign in will still need a reset after Firebase is retired.
Discarding Firebase password hashes
Firebase uses a proprietary modified scrypt algorithm with project-specific keys, which Zitadel cannot process. Any password hashes you export from Firebase must be discarded, so neither path carries a password over unchanged. This decision belongs to your security owner and the team that signs off on authentication changes. Record it in your migration plan, because it determines whether users face a reset, a live check, or both, and it affects what your auditors will ask to see.
Migration guides index
Zitadel publishes migration guides for several identity sources, and the Firebase guide sits within that set. Use the index as the entry point to confirm current steps, supported import formats and any changes since your plan was written. Check the guide against the Zitadel version you will deploy, since the import steps belong to the product release. Assign one owner to confirm the steps in writing before the migration window is scheduled.
Choosing between bulk import with resets and just-in-time migration
The choice comes down to whether users reset their passwords at first Zitadel login or keep their existing password, with Zitadel verifying it against Firebase at sign-in. Both paths start from the same constraint: Firebase uses a proprietary, modified scrypt algorithm with project-specific keys that Zitadel cannot process, so imported Firebase password hashes must be discarded. Zitadel's Firebase guide offers bulk import with password resets at first login, or just-in-time migration that checks credentials against Firebase's REST API, and suggests a migration window of about 30 to 90 days. Decide on three measures: how much friction users absorb, how much help desk load you accept, and how long Firebase must stay reachable and connected.
Bulk import with resets gives every account one predictable event. Users receive a reset request and set a new password at first login, so the help desk should expect a spike in the days after cutover. Test the reset email flow, the sender domain and spam filtering before any user is moved. Just-in-time migration keeps passwords unchanged, so most users notice nothing beyond a normal login. The cost shifts to failure handling. An account missing from Firebase, a password that fails, a lockout or a Firebase API error all appear as sign-in problems that support must triage. Ask the vendor guide how each case is reported and where the evidence lives, and have the support team work through those cases before the window opens.
The main operational difference is dependence on Firebase. A bulk import with resets can be cut over once the export is complete, subject to confirming the export and cutover steps in the vendor guide. Just-in-time migration keeps the Firebase project and its REST API in the sign-in path for every account that has not yet logged in. Firebase must stay available, the credentials used for those API calls must remain valid, and the connection cannot be removed until the window closes. The 30 to 90 day range in Zitadel's guide is a starting point to size against your own data. The right length depends on your user base and on how many accounts are dormant. Dormant accounts drive the decision, because users who never return keep the source connected indefinitely unless you plan a reset path for them. Confirm with the Firebase project owner which last sign-in data the project holds and how you can export it.
Many teams split the approach: they import active accounts with resets and leave dormant accounts on just-in-time migration or run a later reset campaign for them. Treat this as a design decision to confirm against the vendor guide, including whether both paths can run on the same Zitadel instance and how the sign-in logic handles each account. Get sign-off from the client's risk owners, who should decide how long the Firebase project, its API credentials and its configuration stay live, and who holds them. Record the window end date, the named owner of the Firebase project, the rule for retiring the connection, and the point at which unmigrated accounts are forced through a reset.
Migration sequence with a parallel run and cutover
This sequence moves users and applications from Firebase Authentication to self-hosted Zitadel without importing password hashes, which Zitadel cannot process. It runs inventory, build, pilot, parallel run, cutover and decommission in order, and each step closes with a client output and a sign-off before the next begins.
Inventory Firebase projects, users, providers and claims
Your team and DeployOpen list every Firebase project, user population, sign-in provider, custom claim and client application that depends on Firebase Authentication. We record which users have password accounts, which sign in through Google or other federated providers, and which claims applications read from tokens. The output is a migration inventory. You sign off on it, including which user groups go through bulk import and which go through just-in-time migration. The next step waits on that sign-off.
Build the Zitadel test instance and identity model
DeployOpen builds a self-hosted Zitadel test instance in your infrastructure, using a PostgreSQL version that the Zitadel documentation supports. We model instances, organizations, projects, roles and applications to match the inventory, and configure the identity providers that federate sign-in. You receive a test environment and a written organization and project model that covers tenant boundaries and role grants. Your sign-off on that model is required before pilot accounts are created.
Pilot with internal accounts
Internal staff accounts are migrated into the test instance first, using the same import path planned for customers. Testers sign in to each migrated application, exercise password reset and MFA or passkey enrollment, and check token claims against what each application expects. DeployOpen logs defects, corrects mapping rules and reruns the import until results match the inventory. The output is a pilot report with defect status. You sign off that sign-in flows and claims are acceptable before the parallel run begins.
Run both systems in parallel
Firebase and Zitadel run side by side for the grace period you agree. On the just-in-time path, applications send credentials to Zitadel, which verifies them against Firebase's REST API and stores the user after the first successful sign-in. On the bulk path, imported users are required to reset their passwords at first login. Zitadel's Firebase guide suggests a window of about 30 to 90 days, and the length you choose should reflect your user base. The output is a runbook, monitoring of sign-in success and error rates, and a go or no-go decision.
Cut over applications by redirect and token configuration
Each application is repointed to Zitadel by changing its OIDC issuer, client ID, redirect URIs and token validation settings, in an order you agree with us. Redirect URIs are registered in Zitadel before the switch, and the Firebase configuration stays available until rollback is no longer needed. The output is a cutover record for each application, with test evidence and written rollback steps. You sign off on each application before the next one moves.
Decommission Firebase after the window closes
When the window closes, Firebase sign-in is disabled for each application, and remaining user data is exported and archived under your retention policy. DeployOpen removes Firebase client configuration, service account keys and just-in-time integration code, then documents what was archived and where. The output is a decommission record, an archive manifest and confirmation that no application still calls Firebase Authentication. Your records and retention decisions determine how long the archive is kept.
What drives the cost and duration of a Firebase to Zitadel migration
This table lists the factors that change how much work a Firebase to Zitadel migration takes and how long it runs. Read each row against your own user counts, applications and sign-in methods, and use the quote column to ask every partner for the same scope. The main takeaway is that application count, claim logic and team coordination often shape the effort as much as account volume.
| Driver | Why it matters | What to ask for in a quote |
|---|---|---|
| User accounts and activity | Account count sets import and reconciliation volume. Active users set how much sign-in traffic still reaches Firebase during the grace period. | Account counts per Firebase project, monthly active users, and the import batch plan. |
| Firebase projects and applications | Each Firebase project has its own keys and configuration, so every project and client app needs its own import and repointing work. | Count of Firebase projects, client apps and environments, each mapped to a Zitadel project or application. |
| Custom claims and role logic | Custom claims must be mapped to Zitadel roles and grants, which takes design and token testing for each application. | Inventory of custom claims per app, the target role model, and who approves the token contents. |
| Sign-in providers | Each Firebase sign-in method needs a matching Zitadel identity provider, and linked accounts must resolve to one user. | List of enabled Firebase providers, the Zitadel provider configured for each, and the account linking rules. |
| Forced reset or just-in-time migration | Forced reset needs less build work but adds user friction. Just-in-time needs a verification path against Firebase's REST API and more testing. | Recommended approach with reasons, the verification flow design, and test cases for both paths. |
| Length of the grace period | Zitadel's Firebase guide suggests a migration window of about 30 to 90 days. Longer windows keep Firebase verification running and both systems in support longer. | Window length in days, the date Firebase verification stops, and the plan for users who miss it. |
| Self-hosted Zitadel and PostgreSQL | Self-hosted Zitadel uses PostgreSQL 14 through 18. Sizing, high availability and backup testing add work beyond the migration itself. | Target platform (Docker Compose, Kubernetes or binaries), PostgreSQL version, HA design, and restore test results. |
| Zitadel Cloud or self-hosting | Zitadel publishes its own plans, and Zitadel Cloud pricing is separate from self-hosting. The deployment model changes which costs apply. | Which deployment model is in scope, and whether Zitadel plan or license costs are included in the quote. |
| Testing and cutover coordination | Login flows, token claims and each application's callback URLs must be tested with the teams that own them before the switch. | Named owners per application, test environment access, the cutover window, and rollback steps agreed in writing. |
What usually goes wrong when moving off Firebase Authentication
Most failures in a Firebase Authentication move come from decisions made before the import and from settings that change at cutover. Each card names a failure, the check that prevents it, and the client team that should own that check.
Hashes discovered too late
Firebase stores passwords with a proprietary modified scrypt configuration tied to project-specific keys, and Zitadel cannot process those hashes, so they must be discarded on import. Teams that learn this during cutover often end up forcing every user through a password reset. Prevention: inventory which users hold password credentials and which sign in through Google, Apple or other providers, then confirm the import path in a test project before scheduling. Owner: the identity lead, with application owners approving the login methods they expect to keep.
Firebase shut down early
Just-in-time migration verifies credentials against Firebase's REST API, so the Firebase project must stay reachable until the window closes. Disabling the project, rotating its API keys or deleting users early breaks sign-in for everyone not yet migrated. Zitadel's guide suggests a window of about 30 to 90 days, which the client should test against its own activity data. Prevention: write the shutdown date into the cutover plan only after reviewing how many accounts remain unmigrated. Owner: the cloud or platform owner who controls the Firebase project, with change approval from the IT service owner.
Inactive users lost in the window
Users who do not return before the window closes have no migrated account and no stored password, so their access disappears without an explicit decision. The outcome affects customer relationships and retention obligations as much as the technical import. Prevention: export last sign-in dates from Firebase before cutover, group inactive accounts by application or segment, and decide for each group whether to migrate in bulk with reset emails, send advance notice, or retire the accounts under the retention policy. Owner: the product or customer success lead for each application, with legal or privacy review of retirement decisions.
Claim and role mismatches
Firebase custom claims and the roles an application reads from them rarely map one to one onto Zitadel projects, roles and grants. A token that carries a different role name, or omits the organization context an application expects, can pass authentication and still fail authorization. Prevention: export the claim names each application reads, define matching Zitadel project roles and grants, and test every permission path with migrated test users before any production user moves. Owner: application owners, who know which claims their authorization code checks.
Redirect and token configuration errors
Cutover often fails on redirect URIs, allowed origins, token audience and issuer values, and client secrets that differ between Firebase-based and Zitadel-based settings. A missed redirect URI blocks sign-in for the whole application, and a wrong issuer causes token validation to fail in services that were not otherwise changed. Prevention: build a checklist of every client, redirect URI, logout URI and API audience, verify each in staging, and keep the previous configuration available for rollback. Owner: the platform or DevOps team that deploys application configuration, with the application team confirming token checks.
Dormant accounts with unverified emails
Firebase accounts that never verified their email address, or that have been idle for years, create identity records that are hard to trust. Migrating them unchanged carries unverified addresses forward, and some of those addresses may now belong to someone else. Reset emails sent to stale addresses can bounce or be ignored. Prevention: classify accounts by verification status and last activity, decide whether each class is migrated, held or deleted, and define the verification step users complete on first login. Owner: the security or identity governance lead, with the data protection officer setting deletion criteria.
What the migration needs from your team
Most of what this migration needs from your team must be settled before DeployOpen can finalize scope, because the choice between bulk import with forced resets and just-in-time migration depends on facts only your team holds. Firebase password hashes cannot be carried into Zitadel, so the path you take depends on how many users you have, which applications sign in against Firebase, and whether you can accept a grace period in which both systems answer logins. Zitadel's Firebase guide suggests a migration window of about 30 to 90 days, and choosing the length of that window is one of the first decisions to make.
Start with access to the Firebase projects. The migration engineer needs an account with enough administrative rights to export users, read the Authentication configuration and confirm the web API key that client apps use for REST sign-in. Ask for a service account or a named administrator rather than a personal login, and confirm which projects are in scope, such as production and staging. Also list every sign-in provider enabled in each project. Google, Apple and SAML providers do not carry password hashes, so those users need separate federation planning and should not be counted with the password migration.
Next, provide an inventory of applications and their Firebase SDK usage. List each web, mobile, backend and serverless component that calls Firebase Authentication, with the SDK and version it uses, where it verifies ID tokens, and which claims or custom claims downstream services read. This inventory sets the repointing work and the token verification changes. Flag any mobile build that must pass app store review before it can change, because a late discovery of a client that cannot be updated quickly is a frequent cause of scope change.
Your team also needs to make two policy decisions and a hosting decision. Decide the password policy Zitadel will enforce for migrated users, including minimum length, complexity and whether every user must reset at first login or only those who have not signed in during the window. Name an owner for user communication, covering email notices, in-app messages, support scripts, legal review where needed and the date after which Firebase sign-in stops. On hosting, provide a Kubernetes cluster or Linux and Docker host for self-hosted Zitadel, with TLS, DNS, backups for PostgreSQL and an outbound network path to Firebase's REST endpoints during the grace period. Confirm that the PostgreSQL version you plan to use is within the supported range of 14 through 18.
Name owners for testing and cutover before the work starts. You need a testing lead who signs off test cases for sign-in, password reset, token issuance and application callbacks, a cutover lead who holds the go or no-go decision, an owner for each affected application and a security approver for changes to authentication. In return, DeployOpen reviews these inputs and provides a written scope that covers the recommended migration path, the application repointing tasks, a test plan, a draft cutover runbook and the effort that follows from these inputs. Engagements are fixed-scope, and the quote follows from that written scope. Ask for the scope to state which of these inputs it depends on, so any gap shows up before work begins.
Questions buyers ask before moving off Firebase Authentication
How much does a Firebase to Zitadel migration cost?
DeployOpen does not publish prices, and the cost follows from a written scope. The main cost drivers are the number of applications that sign users in, the number of users and their sign-in methods (email and password, social providers, phone, multi-factor), the custom claims and roles to map, and whether you choose bulk import or just-in-time migration.
One-time costs include planning, the migration build, testing and cutover. Recurring costs include hosting, PostgreSQL, Kubernetes or Docker capacity, backups and upgrades, which your team or a support retainer covers. For context on the subscription side, Zitadel's public Cloud pricing lists a Free plan at US$0 per month for up to 100 daily active users, a Pro plan at US$100 per month including 25,000 daily active users, and a custom-priced Enterprise plan. Ask every quote to separate one-time and recurring costs and to list what is excluded.
How long does moving users off Firebase Authentication take?
The timeline depends mostly on how long users need to move and how many applications must switch. Zitadel's Firebase guide suggests a migration window of about 30 to 90 days, during which just-in-time migration can verify credentials against Firebase.
Bulk import removes the Firebase dependency sooner, but every user must reset their password at first login, so the communication plan takes time. Other drivers include the number of client applications to repoint, custom claims, testing across staging and production, and approvals from security and application owners. Ask for a schedule with named milestones: discovery, build, pilot, cutover and end of the window. Treat the 30 to 90 day figure as Zitadel's guidance, and confirm your own window with application owners and your risk team before fixing dates.
Can our own engineers migrate from Firebase Authentication to Zitadel?
Yes, a capable team can do it, but the work needs several skills at once. You need people who can deploy and operate Zitadel. Zitadel documents self-hosting on Linux and macOS binaries, Docker Compose and Kubernetes, and it recommends a Kubernetes cluster with the official Helm chart for high availability.
Zitadel stores its data in PostgreSQL, with versions 14 through 18 supported, so database administration is required. The migration also needs someone who understands OpenID Connect and Firebase project administration, plus developers who can change each application's sign-in code. Many teams keep operations in-house and bring in a partner for the migration build, cutover and testing. Compare both options against the same written scope, including who owns operations after cutover.
What do we need from our staff during a Firebase migration?
Staff time is often the largest unplanned cost. Name an owner for each application that signs users in, since each one must be repointed and tested. Firebase administrators need to provide project access, support the user data export and confirm which sign-in providers are enabled.
Security and compliance staff review the password reset approach, the handling of exported user data and the access rules in Zitadel. Support and communications teams prepare messages for users, especially if bulk import forces password resets at first login. Business owners decide the cutover date and accept the risk for any users who miss the window. Ask the partner to list these roles by name and expected involvement in the written scope, and confirm availability before work starts.
Do users have to reset their passwords when moving from Firebase?
With bulk import, usually yes. With just-in-time migration, not necessarily. Firebase hashes passwords with a proprietary modified scrypt algorithm and project-specific keys that Zitadel cannot process, so the imported hashes must be discarded.
With bulk import, users create a new password at first login. With just-in-time migration, Zitadel checks the submitted password against Firebase's REST API when a user signs in during the migration window, so users who return during that period keep their existing password. Users who never return still need a reset path once the window closes. Confirm with the vendor how this works for accounts with social providers, multi-factor settings and unverified email addresses, since these cases often need separate handling.
How long must Firebase stay connected after a just-in-time migration?
Firebase must stay connected for as long as the just-in-time window is open, because each sign-in during that period checks credentials against Firebase's REST API. Zitadel's guide suggests a window of about 30 to 90 days.
The right length depends on how quickly active users return, how many inactive accounts you need to cover, and how much risk you accept for users who never sign in again. Plan the shutdown as a deliberate step: remove the Firebase dependency from the migration configuration, disable the Firebase sign-in path in each application, and document what happens to users who return after the window. Confirm with your Firebase administrators which project resources and API access must remain in place until then, and when they can be retired.
Do we need to run Firebase and Zitadel in parallel?
Not always, but a parallel period is often the lower-risk path. Just-in-time migration depends on it: Firebase keeps verifying credentials while Zitadel serves the applications that have already moved. Bulk import with forced resets can cut over in a single step, but it still needs a rollback plan, because users who cannot sign in are blocked until the new system works.
Whichever approach you choose, decide which applications move first, how sessions and tokens are handled at cutover, and who can authorize a rollback. Pilot with a small group of internal users before broad cutover. Ask the partner to show the cutover runbook and rollback steps in the written scope, and confirm with your application owners whether each application can accept both sign-in paths at once.
What should we check before choosing a Firebase migration approach?
Start by inventorying what Firebase does for you today. List every application that calls Firebase Authentication, the sign-in methods enabled, the custom claims in use, and whether any users rely on multi-factor or social sign-in.
Next, check whether your organization can accept a forced password reset for its user base and whether your support teams can handle the volume that follows. Then confirm that Zitadel supports the identity providers and login methods you need, including passkeys with password fallback if you want passwordless sign-in. Finally, agree the migration window, the rollback plan and an owner for each decision. These checks determine whether bulk import or just-in-time migration fits your situation far more than any preference for one method.
How DeployOpen works on this
DeployOpen plans and implements self-hosted Zitadel inside your own infrastructure, so the Firebase migration runs against identity systems you control. We start by deciding whether bulk import with forced resets or just-in-time migration fits your user base, then build and test the chosen path before cutover.
How we scope
- Engagements are fixed-scope, with the migration path, user counts and applications agreed in writing before work starts
- The written scope covers which Firebase projects, sign-in methods and client apps move, and how each is repointed to Zitadel
- Confirm with us whether a grace period of about 30 to 90 days, the window in Zitadel's Firebase guide, suits your user base
How we build
- We deploy self-hosted Zitadel on the Linux, Docker Compose or Kubernetes setup your environment supports, backed by PostgreSQL 14 through 18
- We build the chosen path: a bulk import with first-login password resets, or a just-in-time flow that verifies credentials against Firebase's REST API
- We test sign-in, password reset, token issuance and application callbacks against a staging copy before any production user is moved
How we hand over
- You receive written configuration, runbooks for the migration window and a record of the import or just-in-time decisions made
- Handover covers how to retire the Firebase dependency once the grace period closes and how to disable the just-in-time path safely
- We walk your operations team through the Zitadel instance, organizations, projects and applications that now hold your users
How we support
- Post-cutover support, upgrades to later Zitadel releases and continuous testing are available as retainers
- Ask whether a retainer covers monitoring of the migration window and fixes for users who fail to sign in during it
- Confirm with Zitadel's pricing page which support tier and technical account management options apply to your deployment

