Description
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
-
Users sign in to New Expensify for the first time using a phone or public domain email address
-
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"
- 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.
- 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 istryNewDot.classicRedirect.dismissed=true
, or has notryNewDot
NVP they are routed to Classic. Everyone else goes to the next NewDot onboarding step (Intent)
Magic code step for existing accounts:
Tasks
- Post Proposal (full Problem/Solution statement) in
'#convert`: https://expensify.slack.com/archives/C07HPDRELLD/p1730909567485999#expensify-open-source
- 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
-
EmailThis is not a What's Next proposal but we're using the Design Doc template to make sure its done right[email protected]
and paste in the Proposal - Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
-
EmailThis is not a What's Next proposal but we're using the Design Doc template to make sure its done right[email protected]
(continue the same email chain as before) with the link to your Design Doc - 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
-
EmailThis is not a What's Next proposal but we're using the Design Doc template to make sure its done right[email protected]
again with links to the doc and pre-design conversation in Slack - 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
Assignees
Labels
Type
Projects
Status