Description
Summary
Gitpod's SaaS pricing shall be based on usage rather than number of seats (current state).
Context
We believe the value received by teams and individuals is correlated with the time spent using Gitpod which makes usage hours (not seat count) our value metric. While seat count serves as a proxy, we believe usage is a more accurate predictor of customer value. Hence, we believe our current pricing creates friction in turning users into paying customers and limiting the potential upside of large clients for Gitpod (fixed €35 for unleashed plan).
Value
Align value users gain with what they pay.
Make it easier for new team members to join a team and grow into the product as they use it more often.
Moving away from the existing user-based subscriptions to usage-based pricing has become more important because we need this to ship Different Workspace Classes as well as allowing for flexible workspace timeouts.
Acceptance Criteria
Users and teams can purchase credits and use them run workspaces.
Measurement
TBD
Growth Area
Expansion
Persona(s)
No response
Hypothesis
- Gitpod is most valuable in team settings (i.e. >1 contributor to the codebase).
- Ephemeral dev environments are mostly useful for projects with 2+ contributors. Single-person projects can easily live in a long-lived workspace.
- Seat-based pricing leads to situations in which the customer pays even though they are not using the product.
(Large) companies are familiar and comfortable with usage-based pricing. - competition used usage-based pricing.
In scope
No response
Out of scope
- Automatic migration of existing subscriptions
Complexities
No response
Press release
No response
Tasks
Skateboard (Alpha version)
Generate invoices for Team Gitpod only (week of Jun 27)
- [usage] Initial setup for component #10227
- Deploy usage component experimentally into preview, staging & production environments #10316
- Define db models in Golang #10317
- [usage] Setup controller and reconciler #10249
- Setup dry-run flag for usage controller #10319
- Store workspace size used for a given workspace instance #10430
- https://github.com/gitpod-io/ops/issues/2554
- Write usage report into test-mode in Stripe #10322
- [Usage] workspace.go:68 Error 1390: Prepared statement contains too many placeholders #10642
- Make the frequency at which the usage reconciler runs configurable #10720
- Configure the usage component using a config file rather than command line arguments. #10753
- Add integration test for Billing Controller which asserts against mock Stripe
- Fix experiments configuration between staging & production #10851
- [dashboard] Add Usage-Based feature flag and empty Billing page #10302
- Use Stripe Elements to capture CreditCard information then create a Stripe Customer and Subscription #10326
- Show whether a user has a valid subscription and allow managing it #10327
- Configure usage-based Stripe product IDs (i.e. prices) #10655
- [Usage-based] Attribute workspace instances on start #10533
- [billing] Create a dedicated Stripe account for production #10856
- [Usage-based] Adjust
d_b_workspace_instance.attributedTeamId
to be not team-specific #10822 - [Usage-based] When payment is enabled, attribute all workspace instance usage to an explicitly selected "billing account" #10901
- Automatically set or unset a user's preferred "billing account" when they join or leave a single team with usage-based billing enabled #10973
- Use attributionId when listing workspace instances for usage #10922
- [usage] Ensure controller ticks are not concurrent #10995
- [usage] Expose metrics for reconciles started and duration #10996
Usage UI (week of July 4 15)
- Setup usage datastore and store usage #10323
- Define usage APIs #10324
- Implement usage APIs #10325
- Show usage details in usage view #10328
- Produce a usage report for a single gitpod team and validate #10320
- Differentiate usage of different workspace classes and types (prebuilds) #10985
Attribution of usage to team, with usage limits (weeks of July 11 & 18)
Week 01-05.08.
Admin views for team usage
- Admin dashboard: Show active billing subscriptions for a team (team-plans or UBP)
- Admin dashboard: Show detailed usage for a team
Paywall
- Paywall + Notification UI #11404
- Fix gRPC message size error in
UpdateInvoices
call #11998 - Implement BillingService.GetLatestInvoice #11692
Usage List View
- Allow users to switch between months and update usage page sidebar designs #11526
- Incorporate reverse-sorting arg from the API #11691
- Ensure end-to-end workflows: signup, usage reporting, limits, invoicing, cancellation #11930
- Improve pagination layout, design, and structure #11530
- Replace column sorting icon in usage page #11783
'Attribution Logic
- Fix usage reconciler failure with
grpc: received message larger than max
#11836 - Improve usage attribution in user settings #11498
Incremental Rollout Capability
- Billing controller excludes WorkspaceInstances which are already included in previous invoices #10937
- Define & Implement Entitlement Service APIs #11402
- Ensure end-to-end workflows: signup, usage reporting, limits, invoicing, cancellation
Other
- Fix usage reconciler failure with
grpc: received message larger than max
#11836 - Fix gRPC message size error in
UpdateInvoices
call #11997
Polish
- [usage] Adding loading state indicator when retrieving usage records #11677
- Stripe billing validation errors shows alert modal with [object: object] #10960
- Refine Spending Limit modal #11575
- Move usage component out of experimental installer config #11611
- Store
generationId
with every record in the usage table. - [usage] Decouple billing controller from usage controller #10785
- Show workspace details in usage list view #11640
- Implement dropdown for the list of billing months #11685
- Usage report upload fails with GCS 403 #11688
- Race condition at usage component startup #11743
Early Access Usage Based Billing for Teams
- Configure selected teams as Early adopters, through feature flags
- Enable VAT and AR report generation
- Dark-ship documentation for usage based billing for teams
Early Access Usage Based Billing for Individuals
- Feature flag to enable access to usage based billing for individuals
- Free usage credit
- Usage view for individuals
- Documentation for usage based billing for individuals
General Availability
- Pre-announcement
- Documentation
- Enable usage based pricing for all
- Stop chargbee personal and team plans (for new users)
- Refine Spending Limit modal #11575
Other related Issues
Metadata
Metadata
Assignees
Type
Projects
Status