Vendor guidelines

Last updated: 01/06/2021

1. Application

1.1 Application manifest

The Odoo Store gets a lot of the app information from the "__manifest__.py" file from your module and from the "static" folder of your module. This means that your app must have a __manifest__.py or __openerp__.py file to add it on our store. Here is a list of all information that we use from the manifest:

  • technical_name: the technical name of the module.
  • name: a short name of your app. This name should be explicit and short, so it clearly explains what it does.
  • version: for which version your module is. If you've made changes to your app which require database changes you should update the number. The version number in the module manifest should be the Odoo major version (e.g. 13.0) followed by the module x.y.z version numbers. For example: 13.0.1.0.0 is expected for the first release of an 13.0 module. The x.y.z version numbers follow the following structure:
    breaking.feature.fix:
    • x increments when the data model or the views had significant changes. Data migration might be needed, or depending modules might be affected.
    • y increments when non-breaking new features are added. A module upgrade will probably be needed.
    • z increments when bugfixes were made. Usually a server restart is needed for the fixes to be made available but it does not require a module update.
    Try not to do breaking changes or include instructions/scripts to perform migrations on databases that already have the app installed.
  • summary: a short summary that explains the app in a one-liner.
  • description: a short description about the app which provides a bit more details about the app but is still short (usually 2 or 3 lines of text).
  • currency: based on the currency we will determine in which currency you want to sell your app. We will convert from your currency to the customer it's currency based on the current day it's rate.
  • price: the price, in EUR or USD, that you want to ask for your app. If this key is not in your manifest or if it is set to 0 we assume the app is free. We will convert from your currency to the customer it's currency based on the current day it's rate.
  • website: we will extract your website from this key which will be shown at a few places such as your partner profile page.
  • license: You can apply any licence on your app, as long as it respects the licenses of the dependencies, libraries or derivative works. We recommend 'LGPL-3' for open source apps and 'OPL-1' for proprietary apps.
  • category: based on this category we will segment your app under this category so it can be found easier. You can view all categories for apps on the apps overview page and for themes on the themes overview page. If the category name contains "theme" we will categorise the app as a theme.
  • depends: based on the depends key we will show all apps that this app depend on. This will be shown on the app its detail page. If a dependency is found that links to an app in your repository we will automatically add it in the download too. If it is an official Odoo app we will show them for informative purposes.

1.2 Application description page
(module/static/description/index.html)

All descriptions and screenshots should be in English as Odoo does not support multi-language descriptions.
The information and the screenshots in your description page should be accurate and cannot show/explain features that do not exist.

2. External Python libraries

If your app uses third party Python libraries (external libraries) they should be defined in a "requirements.txt" file. We will parse this file and will list all Python dependencies to show them to the customer. An automated process will check all Python dependencies and will scan for potential vulnerabilities or exposures. If a CVE is found we will show it on the app page and we will notify the publisher of the app that there is a security issue so it can be fixed.

This also allows customers to easily and quickly install all third party libraries in one go by running "pip3 install -r /your_module/requirements.txt".

3. Pricing

When you sell a module you agree to give the best service level and support that you can. We do not apply rules such as "the price on our store has to be the lowest or equal to the one on other platforms" such as Odoo S.A does. You choose the price you want for your app.

By publishing your apps on our platform you agree to our refund policy and all of our guidelines. As the author you're responsible for bugs, malfunctions or configuration issues if your app is paid. If your app is free you're committing to a best effort but are not obligated to resolve everything. Any discussion should be answered on within 14 days. If no solution has been provided within 30 days a refund can be requested by the customer.

Tip: if you want to publish your app for multiple versions it should have the same technical name for all the versions.

4. Features

Your app should be stable, complete and should install directly on a default Odoo instance. The app has to be functional and cannot be some placeholder or advertisement.

Make sure that your app has an index.html page with detailed information and screenshots. The better your content is the better your app wil be found on both The Odoo Store and on search engines. Explain all features in this description page so the customer has a clear idea of what your app does (or doesn't). If your app needs external services, API's or needs anything that adds costs then mention it clearly in the description too.

5. Data protection

Your app cannot require activation key or activation through external services. Once the app is bought it should be installable and the customer has to have full ownership of both the data and the code.

Unless you contribute to the open-source community and release your module under a permissive license such as LGPL, you need to develop your own code. The code from an app is considered intellectual property of the developer and if there is a copyright infringement your app will be removed from our platform. Make sure that the license of your app complies with the rules. See this page for information about licenses.

If your app collects data to send to another service or needs data for any purpose it must be clearly explained in your app description. You should explain which data is being used and where it is sent too so it is clear what it is used for. You might want to consider creating a data privacy policy too.

If your app(s) harm other partners or the brand they will be removed. If an app harms a partner, brand or customer in any way this will be penalized. Your app shouldn't do these things:

  • Download external code or execute other code outside of Odoo,
  • Obfuscate or encrypt code so it cannot be read or accessed,
  • Send confidential data to external services unless they need to and are explained to the customer. Data shouldn't be secretly stolen or monitored.

In general you should be transparent to the customer by explaining your app in detail. Transparency is key here!

6. Getting paid

The Odoo Store takes 25% commission on your app sales. This commission is used to handle payment fees and to maintain the platform. We keep track of your sales in a purchase order which you can see in your dashboard. Once the profits of your apps are above 200€ we will pay them out automatically if we can or we will send an e-mail to notify you that we are waiting for an invoice from your side. This invoice should include a reference to our purchase order.

We sell all apps in the currency of the customer. The conversion from one currency to another one is based on the currency rate of the day. This means that you can see different sale prices for the same app if they're bought at other dates because of conversion rates.

7. App scoring & sorting

Every app on The Odoo Store has been reviewed and gets rated based on a few conditions. The higher your app rating is the higher it will show up in the appstore.