Free Trial with Freemium Plans

Plans

Free, Pro, Premium etc. all with a stipulated trial period.

Scenario

A customer signs up for your product and by default you put them on a free trial (limited). When the trial period is about to expire, you give them a heads up with an option to upgrade. When customers choose to pay for your product, that is when you collect their credit card information. However, if customers choose to stay as a free user, you switch them to the free plan.

chargebee

The video service provider, Wistia, is a great example of this trial model.

Implementation

Step 1: User Signup

Have a simple sign up form which collects user’s basic information (Name, Email) etc.,

Step 2: Create Plans

Setup plans in Chargebee which correspond to your Pricing Structure.

                            
                              curl  https://{site}.chargebee.com/api/v1/plans \
                                   -u {site_api_key}: \
                                   -d id="pro" \
                                   -d name="Pro" \
                                   -d invoice_name="Pro Plan" \
                                   -d price="5000"
                            
                            
Step 3: Create a Subscription

After a customer signs up, create a subscription in Chargebee (Creating a subscription automatically creates a customer in Chargebee).

                            
                                curl  https://{site}.chargebee.com/api/v1/subscriptions \
                                     -u {site_api_key}: \
                                     -d customer[email]="john@user.com" \
                                     -d customer[first_name]="John" \
                                     -d customer[last_name]="Doe" \
                                     -d customer[phone]="+1-949-999-9999" \
                                     -d plan_id="premium" \
                                     -d billing_address[first_name]="John" \
                                     -d billing_address[last_name]="Doe" \
                                     -d billing_address[line1]="PO Box 9999" \
                                     -d billing_address[city]="Walnut" \
                                     -d billing_address[state]="California" \
                                     -d billing_address[zip]="91789" \
                                     -d billing_address[country]="US"
                                
                            
Step 4: Watch out for when the trial ends

Have a webhook configured which listens to the “subscription_trial_ending” event. With the event response as a trigger, send an automatic email reminder your customers asking them to pick a plan.

P.S. You could also show this information as a notification inside your app using the webhook as a trigger.

                                
                                curl  https://{site}.chargebee.com/api/v1/subscriptions/8avVGOkx8U1MX \
                                        -u {site_api_key}:
                                 
                            
Step 5: Collect Payments

After the notification is sent:

If customers pick a free plan, update their subscription in Chargebee using the Update a Subscription API.

If they pick a paid plan, redirect them to a payment page, collect their payment information and update the subscription in Chargebee.

                            
                                curl  https://{site}.chargebee.com/api/v1/subscriptions/8avVGOkx8U1MX \
                                         -u {site_api_key}: \
                                         -d plan_id="premium" \
                                         -d billing_address[first_name]="John" \
                                         -d billing_address[last_name]="Doe" \
                                         -d billing_address[line1]="PO Box 9999" \
                                         -d billing_address[city]="Walnut" \
                                         -d billing_address[state]="California" \
                                         -d billing_address[zip]="91789" \
                                         -d billing_address[country]="US"
                                
                            

P.S. Make sure invoices aren’t generated for customers on the free plan. Learn how?