I’m building a subscription service app and want to make sure I’m including all of the necessary workflows. Here is how I structured my app:
Each user has the following fields:
- Subscription type
- Trial end date
Below are some important workflows:
Sign Up
- User signs up > set subscription type to ‘trial’ > set trial end date to ‘today + 14 days’
Trial Ends
- Backend workflow > check daily for users whose trial has ended > set user subscription to ‘no subscription’ > send email to user
Subscribe
- User subscribes to stripe plan > add credit card > change user subscription type to ‘subscribedplan1’ > send invoice to user
Change Subscription Plan
- User subscribes to stripe plan > change user subscription type to ‘subscribedplan2’ > send invoice to user
Cancel Plan
- Change user’s trial end date to ‘subscription ending date’ > cancel stripe subscription > Delete credit card
- Backend workflow > receive webhook ‘customer.subscription.deleted’ > change user’s subscription type to ‘trial’ > Send email
This part feels sloppy. I’m trying to allow the user to have access to the app for the remainder of the period they have paid for by giving them an additional trial period.
Are there any other important workflows I’m missing or can improve?
# Trial Ends
You might want to email the user ahead of time before the trial expires.
# Change Subscription Plan
Are you prorating? Or just applying the change at the end of the current period?
# Cancel Plan
I assume you are not using Stripe Billing? If you are not, I would recommend using a field called "next payment date". Rather than deleting the subscription, you just don't extend the "next payment due".
I think of it this way:
X
days, then automatically cancel my subscriptionHope this helps 😃👍