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]="[email protected]" \
                                            -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: Notify the customer around trial expiry

When the trial is about to end, nudge the customer to pick a plan. Use Chargebee Email Notifications to do so. If you prefer to do your emails in-house or use in-app notifications, configure webhooks and listen to the "subscription_trial_end_reminder" or "subscription_activated event".

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?