Skip to content

Add Gusto to New Expensify (Detailed Design) #85850

Description

@yuwenmemon

Internal GH: https://github.com/Expensify/Expensify/issues/591910

Proposal

What's Next: https://expensify.slack.com/archives/CC7NECV4L/p1769160701024209

Proposal: Add Gusto to New Expensify

Background: We need to get to a world where there's only one Expensify, and that's the vision we're all actively working towards. As part of this reunification effort, we're systematically porting over integrations that our Control customers depend on. HR Integrations are a substantial part of this equation. Collectively, they represent more than 1.5MM in ARR. Gusto is by far our largest HR Integration ($82k MRR / $984k ARR) and must be integrated into New Expensify to enable the full migration of our customer base.

Gusto is our first HR integration to port to New Expensify. It is an HR/payroll platform that syncs employee data into Expensify. Our existing Expensify Classic integration:

  • Syncs employee data - Imports employees from Gusto (email, name, manager relationships) and removes terminated employees
  • Configures approval workflows - Admins can set up either all employees reporting to a single hard-coded final approver, or configure employees to submit to their managers, who forward to a hard-coded final approver.
  • Auto-syncs daily -  A daily auto-sync job keeps Expensify employees in sync with Gusto

Problem: When a Control customer using Gusto wants to manage their workspace in New Expensify, if they navigate to the Workflows page, then they cannot find or configure their Gusto HR integration, which forces them to continue using Expensify Classic for managing workflows and workspace members -- fragmenting their experience and blocking full migration to New Expensify.

Solution: Support our Gusto customers in New Expensify by porting the existing HR integration configuration UI from Expensify Classic. Users will be able to connect their Gusto account, configure approval workflows (Basic or Advanced), and trigger syncs directly from the Workflows and Members pages in New Expensify.

The backend sync logic already exists in Integration-Server and will remain the same. This project focuses on porting the configuration UI from Expensify Classic to New Expensify. The goal is for this to be implemented primarily by external contributors.

This will fall under Q2 #migrate - Web Reunification, CRITICAL - Reunification.

Tasks

  • Post Proposal (full Problem/Solution statement) in #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
  • Email strategy@expensify.com and paste in the Proposal
  • Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
  • Email strategy@expensify.com (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
  • Fill out the High-level of proposed solution section
  • Ensure all employees have permission to comment and edit using Share > Expensify, Inc > Commenter
  • Email stategy@expensify.com 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 strategy@expensify.com 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 strategy@expensify.com 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?
Issue OwnerCurrent Issue Owner: @ShridharGoel

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions