[REF] Subscriptions: rewrite overview, integrate products page
closes odoo/documentation#12823 Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
@@ -34,6 +34,8 @@ modified.
|
||||
After clicking the checkbox beside the :guilabel:`Pricelists` feature, select one of those two
|
||||
options, then click :guilabel:`Save` to save all changes.
|
||||
|
||||
.. _sales/product_prices/pricelist:
|
||||
|
||||
Pricelists
|
||||
==========
|
||||
|
||||
@@ -118,9 +120,8 @@ for detailed steps on how to add advanced price rules to a pricelist.
|
||||
Time-based rules tab
|
||||
--------------------
|
||||
|
||||
Time-based rules are used specifically with :doc:`subscription products
|
||||
</applications/sales/subscriptions/products>`. Be sure to check out the Odoo *Subscriptions*
|
||||
:doc:`documentation </applications/sales/subscriptions>`.
|
||||
Time-based rules are used specifically with subscription products. Be sure to check out the Odoo
|
||||
:doc:`Subscriptions </applications/sales/subscriptions>` documentation for more information.
|
||||
|
||||
Under the :guilabel:`Time-based rules` tab, the same functionality of the :guilabel:`Price Rules`
|
||||
tab is present, with the only difference being that a repeating time period can be applied in the
|
||||
@@ -177,6 +178,8 @@ Lastly, there is the option to add an :guilabel:`E-commerce Promotional Code`. T
|
||||
in the desired promo code that, when entered during the checkout process, applies the pricelist to
|
||||
the customer, even if the customer does not fall into the previously-specified criteria.
|
||||
|
||||
.. _sales/products_prices/discounts:
|
||||
|
||||
Show discount percentage to customers
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
@@ -1,42 +1,160 @@
|
||||
:show-content:
|
||||
:hide-toc:
|
||||
|
||||
=============
|
||||
Subscriptions
|
||||
=============
|
||||
|
||||
Odoo *Subscriptions* is used to run recurring businesses: :ref:`sell new contracts
|
||||
<subscriptions/quotations>`, :doc:`upsell customers </applications/sales/subscriptions/upselling>`,
|
||||
keep the churn under control, and :doc:`generate reports
|
||||
</applications/sales/subscriptions/reports>` on the main :abbr:`KPIs (Key Performance Indicators)`:
|
||||
:abbr:`MRR (Monthly Recurring Revenue)`, :abbr:`ARR (Annual Recurring Revenue)`, retention, churn,
|
||||
etc.
|
||||
The Odoo **Subscriptions** app is designed to manage recurring revenue through subscription-based
|
||||
products or services. It supports automated invoicing, renewal management, and customer lifecycle
|
||||
tracking.
|
||||
|
||||
Subscriptions can be created manually or automatically through online sales, with varying options
|
||||
for recurring billing. The app integrates with other Odoo modules such as **Invoicing**, **CRM**,
|
||||
**Sales**, and **Helpdesk** to support end-to-end subscription workflows.
|
||||
|
||||
.. cards::
|
||||
|
||||
.. card:: Subscription plans
|
||||
:target: subscriptions/plans
|
||||
:large:
|
||||
|
||||
Customize subscription plan templates tailored to various product offerings
|
||||
|
||||
.. card:: Renew a subscription
|
||||
:target: subscriptions/plans
|
||||
:large:
|
||||
|
||||
Understand the core management activity for subscriptions
|
||||
|
||||
.. card:: Upsell a subscription
|
||||
:target: subscriptions/plans
|
||||
:large:
|
||||
|
||||
Offer more value for current subscribers on the same sales order
|
||||
|
||||
.. card:: Integrate subscriptions with eCommerce
|
||||
:target: subscriptions/plans
|
||||
:large:
|
||||
|
||||
Offer subscription products with an Odoo **eCommerce** app integration
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Subscriptions <https://www.odoo.com/slides/subscription-20>`_
|
||||
- :doc:`/applications/sales/subscriptions/products`
|
||||
- :doc:`/applications/sales/subscriptions/ecommerce`
|
||||
- :doc:`/applications/sales/subscriptions/plans`
|
||||
- :doc:`/applications/sales/subscriptions/upselling`
|
||||
- :doc:`/applications/sales/subscriptions/renewals`
|
||||
- :doc:`/applications/sales/subscriptions/closing`
|
||||
- :doc:`/applications/sales/subscriptions/automatic_alerts`
|
||||
- :doc:`/applications/sales/subscriptions/reports`
|
||||
|
||||
Set up recurrence periods
|
||||
=========================
|
||||
|
||||
To get started with subscription products in Odoo, *recurrence periods* must first be configured.
|
||||
|
||||
Recurrence periods are the time windows in which subscriptions are active before they renew again.
|
||||
While a subscription is active, customers receive products or services, and may also have access to
|
||||
additional benefits such as support desk triage. In terms of payment, these recurrence periods
|
||||
designate how often the customer is charged in order to maintain the benefits of their subscription.
|
||||
|
||||
To configure recurrence periods, go to :menuselection:`Subscriptions app --> Configuration -->
|
||||
Recurrence periods`.
|
||||
|
||||
By default, the **Subscriptions** app includes a number of common recurrence periods already
|
||||
available, such as :guilabel:`Monthly` and :guilabel:`Yearly`.
|
||||
|
||||
Create new recurrence periods by clicking :guilabel:`NEW` on the :guilabel:`Recurrence Periods`
|
||||
dashboard, to reveal a blank form where the period :guilabel:`Name`, :guilabel:`Duration` and
|
||||
:guilabel:`Unit` values are specified.
|
||||
|
||||
.. image:: subscriptions/recurrence-period-blank-form.png
|
||||
:alt: A blank recurrence period form in the Odoo Subscriptions application.
|
||||
|
||||
.. important::
|
||||
The unit :guilabel:`Days` *cannot* be used as a recurrence period for subscription products. The
|
||||
daily recurrence period in Odoo is designated for rentals, and **cannot** be added to
|
||||
subscription-based sales orders.
|
||||
|
||||
This limitation is there to avoid sales orders that would generate daily invoices.
|
||||
|
||||
Product form configuration
|
||||
==========================
|
||||
|
||||
With recurrence periods set up, create a subscription product by navigating to
|
||||
:menuselection:`Subscriptions app --> Subscriptions --> Products`, and either clicking an existing
|
||||
product to turn into a subscription, or by clicking :guilabel:`NEW` to open up a blank product form.
|
||||
|
||||
.. note::
|
||||
By default, the :guilabel:`Recurring` option is already enabled, prompting Odoo to recognize it
|
||||
as a subscription product. Be sure to leave the :guilabel:`Recurring` and :guilabel:`Can be Sold`
|
||||
options enabled.
|
||||
|
||||
.. image:: subscriptions/subscription-product-form.png
|
||||
:alt: A basic subscription product form in Odoo Subscriptions application.
|
||||
|
||||
On the product form, configure the following items in the :guilabel:`General Information` tab so the
|
||||
subscription product will function correctly:
|
||||
|
||||
- :guilabel:`Recurring`: check this box to turn the product into a subscription in Odoo.
|
||||
- :guilabel:`Product type`: this value is typically set to a :guilabel:`Service`, however other
|
||||
product types may be used (e.g., physical product box subscriptions, eLearning course, etc.).
|
||||
- :doc:`Invoicing policy <sales/invoicing/invoicing_policy>`: set this value to when the customer
|
||||
should be charged for their subscription.
|
||||
- :guilabel:`Unit of Measure`: how the product should be counted in Odoo, for stock purposes. For
|
||||
most subscriptions, the :abbr:`UoM (Unit of Measure)` will be :guilabel:`Units`.
|
||||
- :guilabel:`Sales Price`: enter the recurring cost of the subscription that the customer will pay
|
||||
per recurrence period.
|
||||
|
||||
Optionally set up information on the :doc:`Attributes & Variants
|
||||
<sales/products_prices/products/variants>` tab if the subscription contains multiple choices for
|
||||
customers (i.e. food delivery, tailored fashion boxes, etc.).
|
||||
|
||||
In the :guilabel:`Time-based pricing` tab, clarify the pricing options for the subscription. For
|
||||
each option available, click :guilabel:`Add a price` to add a new row.
|
||||
|
||||
.. tip::
|
||||
Longer time :guilabel:`Period` options are typically incentivized with cost savings. Consider
|
||||
dropping the total :guilabel:`Price` values to offer customers a discount while supporting the
|
||||
business's financial runway.
|
||||
|
||||
Last, if the subscription is meant to be purchased on the **eCommerce** website, click the
|
||||
:icon:`fa-globe` :menuselection:`Go To Website` smart button and in the product page header, click
|
||||
the gray slider from :guilabel:`Unpublished` to the green :guilabel:`Published` status.
|
||||
|
||||
.. _subscriptions/quotations:
|
||||
|
||||
Subscription quotations
|
||||
=======================
|
||||
Create a subscriptions quotation
|
||||
================================
|
||||
|
||||
Manually create a new customer subscription by navigating to either the :menuselection:`Sales` or
|
||||
:menuselection:`Subscriptions` app dashboards, and then clicking :guilabel:`NEW`.
|
||||
|
||||
.. note::
|
||||
Products that have been marked as :guilabel:`Recurring` on their product forms, and are also sold
|
||||
on the **eCommerce** website will *automatically* create and confirm subscription quotations in
|
||||
the backend of Odoo.
|
||||
|
||||
.. important::
|
||||
Sales orders with a defined recurrence become subscriptions.
|
||||
Sales orders with a defined recurrence period automatically become subscriptions.
|
||||
|
||||
To create a new subscription, click on :guilabel:`New` from the *Subscription* or the :doc:`Sales
|
||||
</applications/sales>` app. You can either:
|
||||
On the quotation form, fill in the necessary fields such as :guilabel:`Customer` and
|
||||
:guilabel:`Recurrence`, as well as the :guilabel:`Order Lines` tab.
|
||||
|
||||
- Select a :doc:`subscription plan </applications/sales/subscriptions/plans>` to prefill the
|
||||
quotation instantly, or
|
||||
- Fill out the quotation normally, making sure to select a recurrence and an end date if necessary
|
||||
and adding :doc:`recurrent products </applications/sales/subscriptions/products>`.
|
||||
Optionally, specify a:
|
||||
|
||||
- :doc:`Quotation Template <sales/send_quotations/quote_template>`, if one is readily available to
|
||||
help populate the form fields.
|
||||
- :guilabel:`Expiration` date, to indicate when the subscription offer is no longer valid.
|
||||
|
||||
.. tip::
|
||||
Expiration dates pair well with :ref:`discounts <sales/products_prices/discounts>` to
|
||||
incentivize faster purchases, since the discount will expire with the quotation if it's not
|
||||
turned into a sales order within the specified date range.
|
||||
|
||||
- :ref:`Pricelist <sales/product_prices/pricelist>`, if one is available and appropriate to use
|
||||
(i.e., summer sale discount, VIP customer, etc.).
|
||||
- :guilabel:`Payment Terms`, to set a specified time window for when the subscription must be paid.
|
||||
This is not to be confused for when the quotation is *confirmed* and becomes a sales order, to
|
||||
where, payment may then be obtained immediately or within a certain amount of days, weeks, months,
|
||||
etc.
|
||||
|
||||
.. image:: subscriptions/new-subscription-form.png
|
||||
:alt: A completed example of a new subscription quotation in Odoo.
|
||||
|
||||
.. tip::
|
||||
You can define different invoice and delivery addresses by enabling the :doc:`Customer Addresses
|
||||
@@ -47,37 +165,19 @@ To create a new subscription, click on :guilabel:`New` from the *Subscription* o
|
||||
Confirmation
|
||||
============
|
||||
|
||||
Send the quotation to the customer for confirmation by clicking on :guilabel:`Send by email`, or
|
||||
confirm it immediately by clicking on :guilabel:`Confirm`.
|
||||
Send the quotation to the customer for confirmation by clicking on :guilabel:`SEND BY EMAIL`, or
|
||||
confirm it immediately by clicking on :guilabel:`CONFIRM`.
|
||||
|
||||
.. tip::
|
||||
Click on :guilabel:`Customer Preview` to preview the customer portal where the customer can view
|
||||
their quotation, sign and pay it, and communicate with you.
|
||||
|
||||
.. _subscriptions/automatic-payments:
|
||||
|
||||
Automatic payments
|
||||
==================
|
||||
|
||||
You can require the customer to set an automatic payment method and pre-pay the subscription's first
|
||||
occurrence before they can confirm their quotation. To do so, go to the :guilabel:`Other Info` tab
|
||||
of the quotation and check the :guilabel:`Payment` option in the :guilabel:`Online confirmation`
|
||||
field.
|
||||
|
||||
If you leave :guilabel:`Payment` unchecked, the customer doesn't have to pre-pay to start the
|
||||
subscription. This means that the payment is not automatic and that the customer must pay each
|
||||
invoice manually.
|
||||
|
||||
.. important::
|
||||
If the online confirmation requires a pre-payment, your customer can select only the
|
||||
:ref:`payment providers <payment_providers/supported_providers>` that have the :ref:`tokenization
|
||||
feature <payment_providers/tokenization>`. This ensures that the customer is automatically
|
||||
charged at each new period.
|
||||
If a signature or a payment is required to confirm the quotation, set either (or both) of these
|
||||
options in the :guilabel:`Other Info` tab, next to the :guilabel:`Online confirmation` field.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
subscriptions/products
|
||||
subscriptions/ecommerce
|
||||
subscriptions/plans
|
||||
subscriptions/upselling
|
||||
|
||||
@@ -87,5 +87,4 @@ retention rates very high.
|
||||
.. seealso::
|
||||
- :doc:`../subscriptions`
|
||||
- :doc:`plans`
|
||||
- :doc:`products`
|
||||
- :doc:`../../essentials/in_app_purchase`
|
||||
|
||||
@@ -104,4 +104,3 @@ added by the customer.
|
||||
.. seealso::
|
||||
- :doc:`../subscriptions`
|
||||
- :doc:`plans`
|
||||
- :doc:`products`
|
||||
|
||||
@@ -13,7 +13,7 @@ To add more recurrence periods to the eCommerce product page, create a *product
|
||||
recurrence period.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Configure subscription products </applications/sales/subscriptions/products>`
|
||||
- :doc:`Configure subscription products </applications/sales/subscriptions>`
|
||||
- :doc:`Product variants </applications/sales/sales/products_prices/products/variants>`
|
||||
|
||||
Create recurrence periods as product variants
|
||||
|
||||
|
After Width: | Height: | Size: 44 KiB |
@@ -1,147 +0,0 @@
|
||||
=====================
|
||||
Subscription products
|
||||
=====================
|
||||
|
||||
By closely integrating with the Odoo *Sales* app, the *Subscriptions* app enables users to sell
|
||||
subscription products alongside regular sales products. While regular products are sold on a
|
||||
one-time basis, subscription products are sold on a renewing basis, generating recurring revenue.
|
||||
|
||||
In Odoo, subscription products are also called *recurring* products.
|
||||
|
||||
Configure recurrence periods
|
||||
============================
|
||||
|
||||
To get started with subscriptions, the *recurrence periods* must be properly configured, as needed.
|
||||
|
||||
Recurrence periods are the time periods in which subscriptions renew. They designate how often the
|
||||
customer pays for (and receives) subscription products.
|
||||
|
||||
To configure recurrence periods, go to :menuselection:`Subscriptions app --> Configuration -->
|
||||
Recurrence periods`.
|
||||
|
||||
.. image:: products/recurrence-periods-page.png
|
||||
:align: center
|
||||
:alt: The recurrence periods page in Odoo Subscriptions application.
|
||||
|
||||
The *Subscriptions* app comes with some basic recurrence periods already configured:
|
||||
|
||||
- :guilabel:`Monthly`
|
||||
- :guilabel:`Quarterly`
|
||||
- :guilabel:`Weekly`
|
||||
- :guilabel:`2 Weeks`
|
||||
- :guilabel:`Yearly`
|
||||
- :guilabel:`3 Years`
|
||||
- :guilabel:`5 Years`
|
||||
|
||||
New recurrence periods can be added and/or edited at any time.
|
||||
|
||||
To create a new recurrence period, click :guilabel:`New` on the :guilabel:`Recurrence Periods` page.
|
||||
Doing so reveals a blank recurrence period form.
|
||||
|
||||
.. image:: products/recurrence-period-form.png
|
||||
:align: center
|
||||
:alt: A recurrence period form in Odoo Subscriptions application.
|
||||
|
||||
Then, type in the :guilabel:`Name` and :guilabel:`Duration` of the recurrence period, and select the
|
||||
:guilabel:`Unit` that defines the duration.
|
||||
|
||||
.. important::
|
||||
The unit :guilabel:`Days` *cannot* be used as a recurrence period on subscriptions. The daily
|
||||
recurrence is meant for rentals, and **cannot** be added on recurring subscription sales orders.
|
||||
|
||||
This limitation is there to avoid sales orders that would generate daily invoices.
|
||||
|
||||
Product form configuration
|
||||
==========================
|
||||
|
||||
To create a new subscription product, navigate to :menuselection:`Subscriptions app --> Products -->
|
||||
Products`, and click :guilabel:`New`.
|
||||
|
||||
Doing so reveals a blank product form, which can be configured and customized in a number of ways.
|
||||
|
||||
.. note::
|
||||
By default, the :guilabel:`Recurring` option is already enabled, prompting Odoo to recognize it
|
||||
as a subscription product. Be sure to leave the :guilabel:`Recurring` and :guilabel:`Can be Sold`
|
||||
options enabled.
|
||||
|
||||
The :guilabel:`Product Type` field is set to :guilabel:`Service` by default, as well. However,
|
||||
subscription products *can* be set to other types, if needed.
|
||||
|
||||
.. image:: products/subscription-product-form.png
|
||||
:align: center
|
||||
:alt: A basic subscription product form in Odoo Subscriptions application.
|
||||
|
||||
Time-based pricing
|
||||
------------------
|
||||
|
||||
Once the desired fields in the :guilabel:`General Information` tab have been entered, click the
|
||||
:guilabel:`Time-based pricing` tab on the product form.
|
||||
|
||||
.. image:: products/time-based-pricing-tab.png
|
||||
:align: center
|
||||
:alt: The time-based pricing tab on a subscription product form in Odoo Subscriptions.
|
||||
|
||||
From here, click :guilabel:`Add a price` to begin defining recurring prices.
|
||||
|
||||
In the :guilabel:`Period` column, select a desired recurrence period. In the :guilabel:`Pricelist`
|
||||
column, select a pricelist, if needed. Then, in the :guilabel:`Price` column, enter the price for
|
||||
that recurrence period.
|
||||
|
||||
.. note::
|
||||
:guilabel:`Daily` and :guilabel:`Hourly` periods **cannot** be used on recurring products.
|
||||
|
||||
.. image:: products/validation-error-popup.png
|
||||
:align: center
|
||||
:alt: The validation error pop-up window that appears in Odoo Subscriptions.
|
||||
|
||||
.. note::
|
||||
There is *no limit* to how many lines can be added to the :guilabel:`Time-based pricing` table.
|
||||
|
||||
.. tip::
|
||||
An existing product can be made into a subscription product, simply by marking it as
|
||||
:guilabel:`Recurring`, and configuring :guilabel:`Time-based pricing` on the product form.
|
||||
|
||||
Pricelists
|
||||
~~~~~~~~~~
|
||||
|
||||
:doc:`Pricelists <../sales/products_prices/prices/pricing>` can be used with subscription products
|
||||
to give special pricing to customers included in pricelists.
|
||||
|
||||
This can be configured either in the :guilabel:`Time-based pricing` tab of the product form, or on
|
||||
the pricelist form in the *Sales* application.
|
||||
|
||||
To create recurring price rules for specific pricelists in the :guilabel:`Time-based pricing` tab of
|
||||
the product form, select a pricelist in the :guilabel:`Pricelist` column.
|
||||
|
||||
.. image:: products/pricelist-time-based-pricing.png
|
||||
:align: center
|
||||
:alt: Pricelists in the "Time-based pricing" tab of the product form.
|
||||
|
||||
When pricelists are added to the :guilabel:`Time-based pricing` tab, the pricelist form in the
|
||||
*Sales* app is automatically updated.
|
||||
|
||||
Time-based pricing rules can also be configured directly on the pricelist form.
|
||||
|
||||
To do this, go to :menuselection:`Sales app --> Products --> Pricelists`, and select a pricelist (or
|
||||
click :guilabel:`New` to create a new pricelist).
|
||||
|
||||
.. note::
|
||||
Pricelists are also accessible through the Odoo *Subscriptions* app by following the same menu
|
||||
steps.
|
||||
|
||||
Then, on the pricelist form, under the :guilabel:`Time-based rules` tab, click :guilabel:`Add a
|
||||
line`.
|
||||
|
||||
.. image:: products/pricelist-form-time-based-rules-tab.png
|
||||
:align: center
|
||||
:alt: The time-based rules tab on a pricelist form in Odoo Sales.
|
||||
|
||||
Then, select a subscription product in the :guilabel:`Products` column, and select a recurrence
|
||||
period in the :guilabel:`Period` column. Lastly, enter a :guilabel:`Price` for that particular
|
||||
product and period. Add as many lines as needed.
|
||||
|
||||
When :guilabel:`Time-based rules` are added to the pricelist form, the :guilabel:`Time-based
|
||||
pricing` tab of the product form is automatically updated.
|
||||
|
||||
.. seealso::
|
||||
:doc:`ecommerce`
|
||||
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -79,4 +79,3 @@ to your *Subscriptions dashboard* and use the filter *To renew*.
|
||||
.. seealso::
|
||||
- :doc:`../subscriptions`
|
||||
- :doc:`plans`
|
||||
- :doc:`products`
|
||||
|
||||
@@ -119,4 +119,3 @@ apply and the salesperson you want to analyze.
|
||||
.. seealso::
|
||||
- :doc:`../subscriptions`
|
||||
- :doc:`plans`
|
||||
- :doc:`products`
|
||||
|
||||
|
After Width: | Height: | Size: 43 KiB |
@@ -82,5 +82,4 @@ The only difference between your two sales orders is the description underneath
|
||||
.. seealso::
|
||||
- :doc:`../subscriptions`
|
||||
- :doc:`plans`
|
||||
- :doc:`products`
|
||||
|
||||
|
||||
@@ -162,6 +162,7 @@ applications/sales/subscriptions/sales_flow/closing.rst applications/sales/subsc
|
||||
applications/sales/subscriptions/sales_flow/create_a_quotation.rst applications/sales/subscriptions.rst # subscriptions/sales_flow/create_a_quotation --> subscriptions
|
||||
applications/sales/subscriptions/sales_flow/renewals.rst applications/sales/subscriptions/renewals.rst # sales_flow/* --> *
|
||||
applications/sales/subscriptions/sales_flow/upselling.rst applications/sales/subscriptions/upselling.rst # sales_flow/* --> *
|
||||
applications/sales/subscriptions/products.rst applications/sales/subscriptions.rst # subscriptions/products --> subscriptions
|
||||
|
||||
# applications/services
|
||||
|
||||
|
||||