This article outlines the optional stages a Wix user may go through when installing an app, which include signing up for a free trial, upgrading to a paid plan, and canceling their subscription. By understanding the various stages, from installation and initial setup to free trials and billing cycles, you can effectively manage user interactions, troubleshoot issues, and optimize app sales.
The app lifecycle can include the following stages:
All stages after installation are optional, based on the Wix user's choices.
The lifecycle begins when a Wix user decides to install your app.
The user initiates the installation by clicking Add to Site.
The user reviews the app’s permissions and gives consent, affirming their agreement to the terms.
Your app should collect app instance data and store the user’s instance ID for subsequent interactions and associations. If using custom authentication (legacy), the app should also collect the refresh token.
Your app should restrict access to paid features by default. The app should display a clear call-to-action (CTA), encouraging users to upgrade for a fuller experience. Learn more about creating an entry point to your pricing page.
Your app should identify the user when they take an action, confirm whether the user has a free or paid version of the app, and manage their access to paid features accordingly.
isFree: true
, indicating that the user is currently on a free plan.vendorProductId
will be included.There are 2 possibilities when users upgrade an app:
Learn more about free trials for Wix apps.
The user initiates purchase of a paid version of your app (or a plan that costs more than the one they currently have) by clicking Upgrade, which brings them to the upgrade process.
The user is offered a free trial, if one is available. The initial cost is $0, and Wix collects the user’s credit card information, making users aware of automatic charges that occur after the trial.
The user signs up for the free trial.
Your app should confirm that the user has a free trial version of the app.
Your app should identify the user and enable access to features included in the free trial.
isFree: false
, indicating that the user is currently a paying user.freeTrialInfo
and the trial status. Note that the expirationDate
in the billing object will only be updated after the free trial is complete.vendorProductId
will be included. (This is the same whether the user has a free trial or paid plan.)The user initiates purchase of a paid version of your app, or a plan that costs more than the one they already have, by clicking Upgrade, which brings them to the upgrade process.
When there is no free trial available, or the user decides to upgrade without a trial, the full amount is charged.
The user completes the purchase flow for the paid plan.
Your app should confirm that the user has a paid version of the app.
Your app should identify the user and enable access to the features included in the purchased plan.
isFree: false
, indicating that the user is currently a paying user.expirationDate
in the billing object is updated to reflect the current date of the charge plus 30 days (or 1 year if the plan is annual).vendorProductId
will be included. (This is the same whether the user has a free trial or paid plan.)If the user signs up for a free trial and does not cancel before it ends, their first billing cycle begins, and they are charged for the plan.
isFree: false
, indicating that the user is currently a paying user.expirationDate
in the billing object is updated to reflect the current date of the charge plus 30 days (or 1 year if the plan is annual).vendorProductId
will be included. To confirm that the user no longer has a free trial, call Get App Instance ( SDK | REST).Important: No event is triggered to indicate that a user has completed their free trial and been charged.
Users can turn off the auto-renewal of the app's paid plan at any time. If you receive an event notifying you of an auto-renewal cancellation, take note that just because the auto-renewal is off, doesn't mean they aren't currently a paying customer.
You can't downgrade the user until their subscription ends at the end of the month or year, depending on your app’s payment plan.
If the user cancels their free trial or paid plan, the following occur:
isFree: true
.vendorProductId
is not returned.If the returned expiration date has passed, but the isFree
parameter in Get App Instance (SDK | REST) is still false - consider the user as a paid user. This means that the site owner has a billing issue. Once they either fix the issue or cancel their subscription, the date returned in the app instance data will update.
Event | Webhook | SDK/REST call to Get App Instance | iFrame apps instance parameter |
---|---|---|---|
Installation | App installed event | isFree: true (user is on a free plan) | No vendorProductId in the instance parameter |
Upgrade with free trial | Paid Plan Purchased event | isFree: false (user is paying), billing object with freeTrialInfo and trial status, and no expirationDate | vendorProductId included in the instance parameter |
Upgrade without free trial | Paid Plan Purchased event | isFree: false (user is paying), expirationDate updated to reflect new charge (30 days or 1 year) | vendorProductId included in the instance parameter |
First billing cycle after transaction | No event triggered | isFree: false (user is paying), expirationDate updated to reflect current date of charge plus 30 days (or 1 year for annual plans) | vendorProductId included in the instance parameter |
Cancelled subscription | Paid Plan Auto Renewal Cancelled event | isFree: true (user reverts to free plan) | No vendorProductId in the instance parameter |