Unify all purchase flows in the Customers Portal to enhance scalability and improve the user experience
# Business value Consolidates 14+ fragmented purchase flows into a single scalable architecture, reducing engineering maintenance burden and enabling rapid launch of new self-service products without building custom flows for each. # Problem There are 14 purchase flows in the Customers Portal, and they lack a consistent user experience and scalable technical implementation. The process for buying Premium or Ultimate differs significantly from purchasing products like Storage or Compute, as well as from upgrading or renewing. This inconsistency increases the engineering team's workload in building and maintaining these various flows. Additionally, if we want to introduce a new product to sell self-service, we have to build yet another purchase flow to support it. ### Current purchase flows 1. Buy Storage 2. Buy Compute 3. Buy .com Premium or Ultimate 4. Buy self-managed Premium or Ultimate 5. Sign up for Community Programs .com subscription (OSS / EDU / Startups) 6. Sign up for Community Programs self-managed subscription (OSS / EDU / Startups) 7. Buy Duo Pro 8. Buy more seats of Duo Pro 9. Buy more seats of .com/self-managed Premium or Ultimate 10. Buy more seats of .com/self-managed Premium or Ultimate during the Change namespace flow 11. Renew Premium / Ultimate / Storage / Duo 12. Renew Community Programs .com subscription 13. Renew Community Programs self-managed subscription 14. Upgrade from .com/self-managed Premium to Ultimate ### Future purchase flows 1. [Duo Enterprise](https://gitlab.com/groups/gitlab-org/-/epics/15366) 2. Enterprise Agile Planning # Proposal Design and build a unified purchase experience (just one flow with different components). It will give us a chance to think about the overall vision for purchase flows in CDot and re-architect them to be scalable. :frame_photo: [Final designs](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/10162) ## Iteration plan <table> <tr> <th>Iteration</th> <th>Scope of work</th> <th>Flows we'll eliminate</th> <th>Status</th> </tr> <tr> <td> :one: </td> <td> Core framework for unified purchase flow * [Epic](https://gitlab.com/groups/gitlab-org/-/epics/18565) * [Issue board](https://gitlab.com/groups/gitlab-org/-/boards/9484834?label_name%5B%5D=Unify%20purchase%20flows%3A%3ACore%20framework) </td> <td></td> <td> [Complete](https://gitlab.com/groups/gitlab-org/-/epics/18565#note_2720835561) :white_check_mark: </td> </tr> <tr> <td> :two: </td> <td> Move [Premium and Ultimate SaaS and Self-managed purchase flows](https://gitlab.com/groups/gitlab-org/-/epics/18567) to the unified flow (both initial and additional purchase) * [Epic](https://gitlab.com/groups/gitlab-org/-/epics/18567) * [Issue board](https://gitlab.com/groups/gitlab-org/-/boards/9485135?label_name%5B%5D=Unify%20purchase%20flows%3A%3APremium%2FUltimate) </td> <td> 1. Buy .com Premium or Ultimate 2. Buy self-managed Premium or Ultimate 3. Buy more seats of .com/self-managed Premium or Ultimate </td> <td> :construction: In progress </td> </tr> <tr> <td> :three: </td> <td>Move Compute Minutes & Storage purchase flows to the unified flow</td> <td> 1. Buy Storage 2. Buy Compute </td> <td> :issue-blocked: </td> </tr> <tr> <td> :four: </td> <td>Move Premium to Ultimate upgrade flow to the unified flow</td> <td> 1. Upgrade from .com/self-managed Premium to Ultimate </td> <td> :issue-blocked: </td> </tr> <tr> <td> :five: </td> <td>Move Duo Pro purchase flows to the unified flow</td> <td> 1. Buy Duo Pro 2. Buy more seats of Duo Pro </td> <td></td> </tr> <tr> <td> :six: </td> <td>Move Community Programs (EDU, OSS, Startup) sign up flows to the unified flow</td> <td> 1. Sign up for Community Programs .com subscription (OSS / EDU / Startups) 2. Sign up for Community Programs self-managed subscription (OSS / EDU / Startups) </td> <td> :issue-blocked: </td> </tr> <tr> <td> :seven: </td> <td>Move renewal flow to the unified flow</td> <td> 1. Renew Premium / Ultimate / Storage / Duo </td> <td> :issue-blocked: </td> </tr> <tr> <td> :eight: </td> <td>Move Community Programs (EDU, OSS, Startup) renewal flow to the unified flow</td> <td> 1. Renew Community Programs .com subscription 2. Renew Community Programs self-managed subscription </td> <td> :issue-blocked: </td> </tr> </table> ## Technical considerations 1. Migrate the [shared purchase flow](https://gitlab.com/gitlab-org/gitlab/-/tree/693587760309277d38bd0824e39b14058a24d1e0/ee/app/assets/javascripts/vue_shared/purchase_flow/components) on GitLab.com as a basis to build the unified purchase flow on Customers Portal depending on the designs. 2. Use a separate request for initial transaction previews and debounced requests for consecutive previews based on form updates. More details here: https://gitlab.com/gitlab-org/customers-gitlab-com/-/merge_requests/10040#note_1923716535. Related epic for shared purchase flow on GitLab.com: https://gitlab.com/groups/gitlab-org/-/epics/5391+ ## Additional resources * [Issues closed as no longer relevant](https://gitlab.com/groups/gitlab-org/-/work_items?sort=updated_asc&state=closed&label_name%5B%5D=purchase%20direction%3A%3Aconsolidate&status=Won%27t%20do&first_page_size=50) (because new purchase flow is being created) <!--triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION--> > [!important] > > This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc. <!--triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION-->
epic