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

DISCUSSION: Subscription Billing #576

Open
3 of 13 tasks
wanderslth opened this issue Nov 17, 2019 · 0 comments
Open
3 of 13 tasks

DISCUSSION: Subscription Billing #576

wanderslth opened this issue Nov 17, 2019 · 0 comments
Assignees

Comments

@wanderslth
Copy link
Member

wanderslth commented Nov 17, 2019

Thoughts and workflow considerations for adding subscription billing to Flex.io.

GENERAL:

  • Use Stripe Billing API
  • Let's discuss the Orders' API in Stripe, as I want to understand how this piece works for sales tax integration going forward.
  • I've updated the Flex.io Pricing Page in a few ways (renamed teirs, lowered price of 'team' tier, added concept of multi-team, updated faq, etc)

FLEX.IO > MY ACCOUNT > CATEGORIES:

Items in light gray are for future consideration. (Also, since we are likely going in a more list-oriented view for a bunch of these, may need to reconsider the current narrow layout.):

my-account

BIGGEST OPEN QUESTION:

Total Members is a metric required for billing; therefore a global list of members is required. Further, adding a Member triggers a credit card charge; therefore adding a member is no longer trivial and requires clear notification of what will happen when the owner clicks 'send'. There are three ways to handle adding Members in the UI, each with their annoyances:

  1. De-centralized. Members can only be added from the Team > Member > Add Member button; the list in Account> Member is simply an accumulation of all additions made elsewhere; billing then must be injected into the 'functional' area of the app and deleting a user requires going through all the teams and deleting individually. Further there is currently no notion of existing members in a team (all new additions are email addresses).

  2. Centralized. Members can only be added from the Account > Member > Add Member button; only paid Members may be added from Team > Member (not-yet-paid members would take the owner to Account to add a member or some pop-up in the Members area that would effectively do the same thing)

  3. Members can be added from either the Team > Member or the Account > Member section, but needs some thinking through.

In my experience, #2 is the way this is typically handled (a sense of 'seats' that are purchased and then assigned). However, that methodolgoy does cut across our current loose methodology of just typing in emails (#1) to add people, especially in a future world where the owner has a bunch of members on a bunch of different teams. Can there be a way to formalize this in Account, but replicate the biling process as a modal if applicable within the Member area so that people don't have to leave where they were working (#3)?

SHORT-TERM FOCUS:

With the following, hope that some of these other issues will shake themselves out:

  • Get "Members" list in Account
  • Get billing area in account that ties to # of members
  • Get basic subscription billing using Stripe Billing API running
  • Probably want to add a banner in the app that says 'you have x days left'
  • May want to consider adding basic notification emails on day 7 after sign up (you have 7 days left) and 14 days (trial ended).

UI CONSIDERATIONS:

  • Consider differentiating the notion of 'my teams' v 'my memberships' in the team dropdown list (icon/color/etc).
  • Consider adding some sort of 'back' arrow in 'My Account' -- no obvious way to get back to main area
  • Consider how we should handle auto-email notifications (currently handle invite and verification -- what about marketing-centric ones (welcome email on day 1, trial halfway done day 7, trial ended day 14)
  • For "Add Team Members" need to show billing consequence by them clicking 'send' ("by clicking send, you'll be charged "xx" per month, pro-rated blah, blah, foo")
  • Consider notion of adding & renaming multiple teams (uniqueness rules; end-user effects of a rename)
  • Consider notion of adding existing paid members to a new team
  • Need notion of 'trial has ended' screen for owners
  • Need notion of 'start trial button' or 'auto trial' for invitees

WORKFLOW CONSIDERATIONS:

  • Trial User. How are they aware how many days left in their trial period? Is this obvious?

  • Trial User. Add a member. How are they shown what this will cost when their trial is over?

  • Trial User, Trial Period is done. What are they shown when the log into the app? What can they navigate to, if anything?

  • Trial User. What is the workflow for picking plan/adding CC and signing up for paid subscription? During Trial? After Trial?

  • Trial User. What if they have a coupon code, where is this entered?

  • Trial User. What if they want to extend their trial? Do we make them ask us? Do we offer and auto-extension of some kind? Both? how is this managed?

  • Paying User. Add a member. How do we handle pro-rated charge for member that month? Where do they go to add the member and confirm charge?

  • Paying User. Do we have governor that if you're on the 'Individual' plan you can not add new members without bumping up plans? If you're on the 'Starter" plan that you can't add have more than 5 members without bumping up plans?

  • Paying User. What if I want multi-team creation powers, where do I go to upgrade my plan to 'Team'?

  • Paying User. What if I need to update my CC?

  • Paying User. What if I want to change my billing email address?

  • Paying User. Am I getting monthly emails with invoices? Can I look through my payment history somewhere?

  • Paying User. What if I want to remove a user but immediately want to add a new one? Can I reuse that seat without getting billed for a second seat?

  • Paying User. How do I shut down my paid account, but keep my membership on other teams? What kind of access can I get to my team page? What about My Account?

  • Invitee to a Team. What is the default behavior after sign in? Onboarding into their own project? Taken directly to their invitee team? A modal that pops up asking them download the add-on?

  • Invitee to a Team. Do they automatically start a 14-day trial of their own team or do we lock this down with a 'start 14-day trial' button in that team?

  • Invitee to a Team. If they are a member but their owner side either a) hasn't started a 14-day trial or b) has expired -- what does 'My Account' look like? What does 'my team' look like?

  • @flex.io email. Should there be a sense of free-user for support purposes ("add me to your team with contributor permissions") where the billing doesn't kick in if they add an @flex address to their team?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants