Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
15 of 21 tasks
MitchExpensify opened this issue Oct 25, 2024 · 82 comments
Closed
15 of 21 tasks
Assignees
Labels
Internal Requires API changes or must be handled by Expensify staff NewFeature Something to build that is a new item. Weekly KSv2

Comments

@MitchExpensify
Copy link
Contributor

MitchExpensify commented Oct 25, 2024

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?
@MitchExpensify MitchExpensify added Daily KSv2 Internal Requires API changes or must be handled by Expensify staff Planning Changes still in the thought process labels Oct 25, 2024
@MitchExpensify MitchExpensify self-assigned this Oct 25, 2024
@melvin-bot melvin-bot bot added the Overdue label Oct 28, 2024
@anmurali
Copy link

Do we want to add this in the Stage 1 flow? @MitchExpensify

@MitchExpensify
Copy link
Contributor Author

That's the idea @anmurali, do you think it makes sense to add for everyone signing up before the "what would you like to do today?" options or after a choice on that screen and only for certain options?

image

I think track, manage, and get paid back all indicate a higher chance the user should have logged in using their work email so I'd lean to the latter (Adding the check after the welcome message only for certain choices)

@melvin-bot melvin-bot bot removed the Overdue label Oct 29, 2024
@anmurali
Copy link

So long as it is optional, I would try it across the board and if conversion through the stage 1 funnel falls, we can do something else.

@shawnborton
Copy link
Contributor

Posted some ideas to Slack here, working from this Figma file here

@MitchExpensify
Copy link
Contributor Author

@MitchExpensify MitchExpensify added Daily KSv2 and removed Monthly KSv2 labels Nov 6, 2024
@MitchExpensify
Copy link
Contributor Author

Pre-Design summarized - https://expensify.slack.com/archives/C07HPDRELLD/p1731000105159589

Will update this issue as a next step

@MitchExpensify MitchExpensify added NewFeature Something to build that is a new item. and removed Planning Changes still in the thought process labels Nov 8, 2024
Copy link

melvin-bot bot commented Nov 8, 2024

Current assignee @MitchExpensify is eligible for the NewFeature assigner, not assigning anyone new.

@melvin-bot melvin-bot bot added Weekly KSv2 and removed Daily KSv2 labels Nov 8, 2024
Copy link

melvin-bot bot commented Nov 8, 2024

⚠️ It looks like this issue is labelled as a New Feature but not tied to any GitHub Project. Keep in mind that all new features should be tied to GitHub Projects in order to properly track external CAP software time ⚠️

Copy link

melvin-bot bot commented Nov 8, 2024

Current assignee @shawnborton is eligible for the NewFeature assigner, not assigning anyone new.

@MitchExpensify MitchExpensify changed the title [Tracking] Add a private domain email check to the new user onboarding flow Add a private domain email check to the new user onboarding flow Nov 8, 2024
@MitchExpensify MitchExpensify added Daily KSv2 and removed Weekly KSv2 labels Nov 8, 2024
@melvin-bot melvin-bot bot added the Overdue label Nov 11, 2024
@shawnborton
Copy link
Contributor

Not overdue, I think we're all good from a mockup standpoint at least.

@melvin-bot melvin-bot bot removed the Overdue label Nov 11, 2024
@melvin-bot melvin-bot bot removed the Overdue label Mar 14, 2025
@melvin-bot melvin-bot bot added the Overdue label Mar 24, 2025
@blimpich
Copy link
Contributor

blimpich commented Mar 24, 2025

Not overdue, we're working through this. Seems like we need one more backend update to make the frontend able to do what it's trying to do. I'm working on the backend update.

See this comment for more details.

@melvin-bot melvin-bot bot removed the Overdue label Mar 24, 2025
@melvin-bot melvin-bot bot added the Overdue label Apr 2, 2025
@blimpich
Copy link
Contributor

blimpich commented Apr 2, 2025

Not overdue, we're close, frontend is moving along and is actively being reviewed here.

@melvin-bot melvin-bot bot removed the Overdue label Apr 2, 2025
@blimpich
Copy link
Contributor

Update

We found another bug that requires a backend fix. I'm working on it. That will delay releasing this till next week though. Lots of edge cases with this feature since we're doing two tricky things at once: merging two accounts and then actively logging out of the old account and logging into the new account seamlessly without any visual hiccups or actions needed by the user.

@blimpich
Copy link
Contributor

Waiting on backend fix to be deployed so that the frontend can use it. We don't deploy on Fridays so this has to wait till Monday.

@blimpich
Copy link
Contributor

FE has been merged! Woot! Now we move on to QA, and if that goes well, deployment. There will probably be some follow up to fix some edge cases / bugs, but this is good news!

@blimpich
Copy link
Contributor

blimpich commented Apr 17, 2025

Update:

Things are going well! FE was merged and deployed to staging. We hit some deploy blockers, but all have either been demoted or fixed. Things are looking good!

I've got a follow up BE issue here that I have a PR up for. But after that is done we are just waiting to see the FE PR hit production on Monday, and fixing any issues that arise there. Very happy here! 😄

@blimpich
Copy link
Contributor

FE was deployed to production! We also have a PR merged in for a backend fix for one of the last remaining bugs/edge-cases we know about for this.. That should get deployed to prod on Monday. We may get a few more bugs that crop up over the next few weeks, but the hard part is done! 🥳

@blimpich
Copy link
Contributor

blimpich commented Apr 21, 2025

We've deployed to production! We're still waiting on this backend edge case fix to get deployed to Auth. Backend fix is also deployed to production!

I think now we just need to handle payment to Gandalf. @MitchExpensify can you handle paying the agreed upon amount to @allgandalf for completing the FE portion of the design doc?

@MitchExpensify
Copy link
Contributor Author

Yes, I can, @allgandalf. Have we already agreed on an amount? Remind me please 😎

@blimpich
Copy link
Contributor

Yes we agreed to $1000 here 👍

@allgandalf
Copy link
Contributor

yeah yeahhhhh, send the 💸

Image

@blimpich
Copy link
Contributor

Added some cleanup items and assigned them to myself.

@MitchExpensify
Copy link
Contributor Author

@allgandalf
Copy link
Contributor

accepted @MitchExpensify !! thanks

@MitchExpensify
Copy link
Contributor Author

Paid! Thanks, @allgandalf

@blimpich
Copy link
Contributor

We technically still have this last little follow up PR here. Once that is done I think we can close.

@blimpich
Copy link
Contributor

blimpich commented May 2, 2025

Closing as we just merged our last follow up PR. I have some cleanup issues that I'll handle separately, but I consider this done.

@blimpich blimpich closed this as completed May 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Internal Requires API changes or must be handled by Expensify staff NewFeature Something to build that is a new item. Weekly KSv2
Projects
Development

No branches or pull requests