Skip to content

[Tracking] Add a private domain email check to the new user onboarding flow  #51496

Open
3 of 7 issues completed
@MitchExpensify

Description

@MitchExpensify

DESIGN DOC


If you haven’t already, check out our contributing guidelines for onboarding and email [email protected] to request to join our Slack channel!


Issue reported by: @MitchExpensify
Slack conversation: https://expensify.slack.com/archives/C07HPDRELLD/p1729809438307289
Figma file: https://www.figma.com/design/ir27daDKHaB1g4iZCT22K5/Onboarding-v2?node-id=7690-61846&t=VUO5F3YHDzF2O7Sw-1
Pre-design 1: https://expensify.slack.com/archives/C07HPDRELLD/p1730909567485999
Pre-design 1 summary: https://expensify.slack.com/archives/C07HPDRELLD/p1731000105159589
Design Doc: https://docs.google.com/document/d/1JlM9G3jZpaHDlcILWL9170ancMLtOnI2a73dQgX6ENo/edit?tab=t.0

Proposal Add a private domain email check to the new user onboarding flow

Problem

Our product works a bit better when a user signs up with a private email address because we can more reliably get their First/Last name, better name auto created workspaces, etc. Further, our sales processes are enhanced when we know the domain of a user so we can target high-profile leads. Yet, the majority of our users sign up with public emails and/or phone numbers making it harder to catch edge cases where they accidentally create a new account when they should have added a secondary login to an existing account.

Solution

  1. Users sign in to New Expensify for the first time using a phone or public domain email address

  2. We will add a step immediately after signing in to the onboarding flow asking if they have a work email address.

  • This email field will only accept private domain entries, otherwise, it will throw an error: "Please use a valid work email from a private domain"
  1. If they enter a work email and choose to "Log in with my work email" we merge the accounts, making the work email their primary login
  • If the work email is tied to an existing account, we send a magic code and add a step to verify it so that we know they own it before merging.
  1. Once merged, users continue on their onboarding path or get redirected to Classic
  • If the work email is on any policy that is not isPolicyExpenseChatEnabled=true, or is tryNewDot.classicRedirect.dismissed=true, or has no tryNewDot NVP they are routed to Classic. Everyone else goes to the next NewDot onboarding step (Intent)

Work email check step:
image

Magic code step for existing accounts:
image

Tasks

  • Post Proposal (full Problem/Solution statement) in #expensify-open-source '#convert`: https://expensify.slack.com/archives/C07HPDRELLD/p1730909567485999
  • Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
  • Paste Proposal in the space above with a link to the Slack thread
  • Email [email protected] and paste in the Proposal This is not a What's Next proposal but we're using the Design Doc template to make sure its done right
  • Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
  • Email [email protected] (continue the same email chain as before) with the link to your Design Doc This is not a What's Next proposal but we're using the Design Doc template to make sure its done right
  • Host a pre-design meeting (example) in #expensify-open-source to discuss any necessary details in public before filling out the High-level of proposed solution section: https://expensify.slack.com/archives/C07HPDRELLD/p1730909567485999
  • Fill out the High-level of proposed solution section
  • Email [email protected] again with links to the doc and pre-design conversation in Slack This is not a What's Next proposal but we're using the Design Doc template to make sure its done right
  • Add the DesignDocReview label to get the High-level of proposed solution section reviewed
  • Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Host another pre-design meeting in #expensify-open-source to ask for engineering feedback on the technical solution.
  • Fill out the Detailed implementation of the solution and related sections.
  • Re-add the DesignDocReview label to this issue
  • Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Email [email protected] one last time to let them know the Design Doc is moving into the implementation phase
  • Implement the changes
  • Add regression tests so that QA can test your feature with every deploy (instructions)
  • Send out a follow up email to [email protected] once everything has been implemented and do a Project Wrap-Up retrospective that provides:
    • Summary of what we accomplished with this project
    • What went well?
    • What could we have done better?
    • What did we learn?

Sub-issues

Metadata

Metadata

Labels

InternalRequires API changes or must be handled by Expensify staffNewFeatureSomething to build that is a new item.WeeklyKSv2

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions