Skip to content
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

Team Trial Mode #1578

Closed
knolleary opened this issue Jan 17, 2023 · 4 comments · Fixed by #1611
Closed

Team Trial Mode #1578

knolleary opened this issue Jan 17, 2023 · 4 comments · Fixed by #1611
Assignees
Labels
epic A significant feature or piece of work that doesn't easily fit into a single release headline Something to highlight in the release priority:high High Priority
Milestone

Comments

@knolleary
Copy link
Member

knolleary commented Jan 17, 2023

Description

With the 1.3 release we added the ability to credit a new user's stripe account when they create their first team - giving them credit equivalent to a Small Project for 1 month.

However the UX friction around setting up a billing agreement still exists before a user sees the value of FlowForge. And that puts users off. Plus our implementation for 1.3 is very much constrained to what Stripe allows us to do without our existing subscription model.

This Epic is to introduce a new sign-up and first use experience that allows a user to get to a running Node-RED instance much quicker, without having to provide their credit-card.

The high-level summary:

  1. When a user signs-up they have a 'personal team' created for them1
  2. The 'personal' team is put into a new 'trial mode', with a fixed end date - for example, 10 days from the point of creation
  3. Whilst in trial mode
    1. a user is able to create one small project
    2. a banner is shown telling them how long they have left in trial mode
    3. any attempt to create a new resource (another Project or device), they will be prompted to setup billing first
    4. the user can setup billing at any time - but we will not charge them for one small project until the trial period ends
  4. When trial mode expires
    1. If billing has not been setup, their small project is suspended. They cannot start it until they setup billing.

The trial mode will only be applied to the auto-created personal teams; if a user creates a new team via the UI, they will not get any freebies.

Implementation notes

Configuration

Options to be configured via yml

  • enabling Team Trial mode
  • duration of Team Trial mode

Options that need to be configured via Admin Settings in UI

  • A flag on ProjectTypes to say if it is available in Trial mode. This could include a quantity... but I doubt we need that flexibility, so a simple flag that implies "You get one of these in trial without billing setup"

Database changes

  • Flag on ProjectType to say it is available in trial
  • Flag on Team to say it is in trial mode and when it expires

API changes

  • Include trial status information on Team object
  • Prevent project/device creation that exceeds trial limit (if billing not setup on the team)
  • Prevent un-suspending their trial project if the trial has expired

UI changes

  • Add banner if in trial mode
  • Prompt user to setup billing if they try to do anything that exceeds the trial

Runtime changes

  • Add a housekeeper action that will suspend projects when a trial expires without billing setup

Other items to cover

  • Audit Log entries
  • Email notifications around trial expiry. There are regulatory requirements on this that Stripe explains. must make sure we meet whatever is required.

Footnotes

  1. We already have the option for this, just need to review the default name/slug we use

@knolleary knolleary added epic A significant feature or piece of work that doesn't easily fit into a single release headline Something to highlight in the release labels Jan 17, 2023
@knolleary knolleary added this to the 1.4 milestone Jan 17, 2023
@knolleary knolleary self-assigned this Jan 19, 2023
@knolleary knolleary added the priority:high High Priority label Jan 19, 2023
@Pezmc
Copy link
Contributor

Pezmc commented Jan 23, 2023

Looks great overall, this will be a much smoother experience!

the user can setup billing at any time - but we will not charge them for one small project until the trial period ends
When trial mode expires
If billing has not been setup, their small project is suspended. They cannot start it until they setup billing.

Have you looked into how to technically implement this? Going down the cronjob route?

We additionally need to be careful we're meeting the network and regulatory requirements for the free trial before it converts, most notably including:

  • Obtaining explicit consent to be charged and the amount after the trial ends - covered by including this on the trial page
  • An email notification with a reminder the trial will convert to paid - would need to be implemented
  • Easy digital cancellation - we already cover this, but need to make it clear how to cancel/stop the trial

More details: https://support.stripe.com/questions/2020-visa-trial-subscription-requirement-changes-guide

@knolleary
Copy link
Member Author

Have you looked into how to technically implement this? Going down the cronjob route?

We have the housekeeper component that is designed to run regular tasks. We can choose whether this needs to be millisecond accurate, or within the nearest X min (eg, run every 30 mins and deal with anything that has expired since we last ran).

@knolleary
Copy link
Member Author

Create Project in Trial Mode

  • Banner at the top of the page. This is shown on all Team pages whilst in trial mode.
  • Only the trial-enabled projects are selectable - but others are visible to promote what else is available post-trial
  • Price shown as 'free trial' but with the post-trial cost listed below
  • Charges table shows 'free during trial' plus post-trial cost
  • No 'confirm additional charges' checkbox

Image

@knolleary
Copy link
Member Author

Admin Settings

I started with doing this via the yml file, but it got unpleasant around identifying which ProjectType should be available in the trial mode. So have switched over to configuring it in Admin Settings when we can present a list of ProjectTypes for the Admin to select from.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic A significant feature or piece of work that doesn't easily fit into a single release headline Something to highlight in the release priority:high High Priority
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

2 participants