{"registry_version":"2026.1025.387","generated_at":"2026-10-25T06:27:00Z","content_sha256":"089d16f627d9365e3d0663cc8069203706d7cb23a76c332226e29686968811a5","signed":true,"signature":{"key_id":"ed25519:74ca19268e364242","algorithm":"ed25519","expires_at":"2026-11-24T06:27:09Z","expired":false,"manifest":"/registry/manifest.json"},"id":"google/firebase-auth-email-link","name":"Firebase Authentication with email-link sign-in (on an existing Google Cloud project)","vendor":"Google","status":"verified","last_verified":"2026-10-24","last_researched":"2026-10-24","summary":"Add Firebase to an existing Google Cloud project, turn on email-link (passwordless) sign-in, publish a Firebase Hosting release so the auth handler works, and copy the public web config.","account_model":{"summary":"Firebase is added on top of an existing Google Cloud project; the Google account doing it needs 2-step verification.","accounts":[{"name":"Google account","kind":"personal","owned_by":"the person","required":true,"note":"Must have 2-step verification on to keep accessing Firebase."},{"name":"Google Cloud project","kind":"project","parent":"Google account","required":true},{"name":"Cloud Billing account","kind":"billing","required":false,"note":"If the project already has billing, adding Firebase asks you to confirm the Blaze (pay-as-you-go) plan."}]},"prerequisites":[{"entry":"google/cloud-project-run","note":"An existing Google Cloud project (billing optional)."}],"identity_requires":[],"have_ready":[{"kind":"phone_for_2fa","description":"A phone or security key for Google 2-step verification","why":"Google requires 2-step verification on the account to keep accessing Firebase","needed_for":["enable-2sv"],"auto_check":"none","source_url":"https://console.firebase.google.com/"},{"kind":"live_website","description":"The domain your app runs on (it must be added to the authorised domains)","why":null,"needed_for":["authorised-domains"],"auto_check":"none","source_url":"https://console.firebase.google.com/"}],"steps":[{"id":"enable-2sv","title":"Turn on 2-step verification for your Google account","summary":"Google requires 2-step verification (MFA) on the Google account to keep accessing Firebase; the console showed a deadline banner for 26 Oct 2026. You set it up yourself.","route":"guided","gate":"2fa","human_only":true,"gate_label":"You enter a 2-step code","depends_on":[],"optional":false,"url":"https://myaccount.google.com/security","lead_time":null,"preflight":["mfa_enabled"],"captures":null},{"id":"add-firebase","title":"Add Firebase to the existing Google Cloud project","summary":"In the Firebase console choose to add a project and pick your existing Google Cloud project. You accept the Firebase terms yourself; the API cannot do this for you. If the project has billing enabled you are asked to confirm the Blaze (pay-as-you-go) plan.","route":"guided","gate":"human_terms","human_only":true,"gate_label":"You accept the terms","depends_on":["enable-2sv"],"optional":false,"url":"https://console.firebase.google.com/","lead_time":null,"preflight":[],"captures":null},{"id":"initialize-auth","title":"Initialise Authentication (Identity Platform)","summary":"Call the Identity Toolkit Admin API initializeAuth for the project (or open Authentication once in the console) before changing any auth configuration.","route":"api","gate":"none","human_only":false,"gate_label":null,"depends_on":["add-firebase"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"enable-email-link","title":"Turn on email-link (passwordless) sign-in","summary":"Enable the Email provider with passwordless (email link) sign-in in the project's auth config.","route":"api","gate":"none","human_only":false,"gate_label":null,"depends_on":["initialize-auth"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"authorised-domains","title":"Add your app domain to the authorised domains","summary":"The authorised domains list must include the domain your app runs on, or sign-in links will not work there.","route":"api","gate":"none","human_only":false,"gate_label":null,"depends_on":["initialize-auth"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"hosting-release","title":"Publish a Firebase Hosting release","summary":"The project gets a default Hosting site, but it serves nothing until a release is published. Publish one (for example `firebase deploy --only hosting` with a placeholder page) so /__/firebase/init.json is served and the auth action handler works.","route":"guided","gate":"none","human_only":false,"gate_label":null,"depends_on":["add-firebase"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"action-url","title":"Custom action URL (only if you need one)","summary":"The email action URL cannot be changed through the Admin API. If you want the link to open on your own domain, change it by hand in the console under Authentication, Templates.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["enable-email-link"],"optional":true,"url":"https://console.firebase.google.com/","lead_time":null,"preflight":[],"captures":null},{"id":"web-config","title":"Register a web app and copy its config","summary":"Register a web app in the Firebase project and copy apiKey, authDomain and appId into your environment. These are public web config values, not secrets.","route":"guided","gate":"none","human_only":false,"gate_label":null,"depends_on":["add-firebase"],"optional":false,"url":"https://console.firebase.google.com/","lead_time":null,"preflight":[],"captures":null}],"gates":[{"step":"enable-2sv","gate":"2fa","label":"You enter a 2-step code"},{"step":"add-firebase","gate":"human_terms","label":"You accept the terms"},{"step":"action-url","gate":"human_submit","label":"You press submit"}],"lead_times":[],"outputs":[{"name":"FIREBASE_API_KEY","description":"Firebase web API key (public web config, not a secret; restrict it by referrer if you wish)","secret":false,"example_format":"AIza… (39 characters)","environments":null},{"name":"FIREBASE_AUTH_DOMAIN","description":"Auth domain from the web config","secret":false,"example_format":"<project-id>.firebaseapp.com","environments":null},{"name":"FIREBASE_APP_ID","description":"Firebase web app id","secret":false,"example_format":"1:<project-number>:web:<hex>","environments":null}],"renewals":[],"estimated_minutes":null,"guide_url":"https://verapli.com/guides/google/firebase-auth-email-link"}