Nutri-Score & INCO Nutrition Facts — Complete Guide
Install and configure Nutri-Score on PrestaShop 8 and 9: INCO entry in the product sheet, 2023 algorithm computation, manual override, logo, listing badge and schema.org data.
Overview
The Nutri-Score & INCO Nutrition Facts module (dfnutriscore) displays the Nutri-Score logo and a structured nutrition table on your product pages. You enter the values from your INCO nutrition declaration in the product sheet; the module computes the letter with the revised 2023 algorithm, made official in France by the decree of 15 March 2025, and displays it on the product page and on listing miniatures. A schema.org NutritionInformation structured data block is generated for search engines.
The module is compatible with PrestaShop 8.0 to 9.x, works with the Classic theme and its derivatives, and ships with French and English translations.
Installation
- From the back office, open Modules > Module Manager.
- Click Upload a module and drop the module ZIP archive.
- Once installed, click Configure.
On installation, the module creates the dfnutriscore_product table that stores each product’s nutrition values and registers the required display hooks. No theme override is used.
Module configuration
The configuration page offers four independent switches:
- Nutri-Score logo on product page: shows the official logo next to the product information.
- Nutrition facts tab on product page: adds a Nutrition facts tab containing the INCO table.
- Badge on product listings: shows a compact badge on miniatures (categories, home, search, specials…).
- Schema.org structured data (JSON-LD): injects a NutritionInformation block on product pages.
Entering nutrition values
Open a product sheet and go to the Modules tab, then to the module panel. Values are entered per 100 g (or 100 ml for beverages). Data is stored when the product is saved.
Show Nutri-Score for this product
This selector enables or disables the display for the current product without erasing the entered values. Useful for non-food products or products awaiting validation.
Product category
The category determines which scale the algorithm applies:
- General food: standard case.
- Cheese: protein points are always counted, even when the negative component is high.
- Red meat product: protein points capped at 2.
- Fats, oils, nuts and seeds: energy is computed from saturated fat, and the saturates component uses the saturates-to-total-fat ratio.
- Beverage: stricter thresholds (energy, sugars), a 4-point penalty when sweeteners are present, and a specific fruit scale. Milk and plant-based drinks belong to this category.
- Water: graded A by default, without computation.
Mandatory values
The seven values of the INCO nutrition declaration: energy (kJ and kcal), fat, saturates, carbohydrates, sugars, protein and salt. If you provide only one of the two energy values, the other is derived automatically (1 kcal = 4.184 kJ).
Optional values
Fibre, mono-unsaturated and polyunsaturated fats, polyols, starch and portion size. These values only appear in the front-office table when filled in. Fibre contributes to the score computation.
Fruits, vegetables and legumes (%)
This percentage is used only for the score (positive component). Since the 2023 revision, only fruits, vegetables, legumes and herbs count; nuts and most oils are excluded.
Sweeteners (beverages)
For beverages containing non-nutritive sweeteners, enable this selector: the algorithm adds 4 unfavourable points, as per the 2023 revision.
Manual override
The Manual override selector forces a letter (A to E) that replaces the computed score — for instance when your Nutri-Score was determined by a laboratory or third party. Leave it on Automatic (computed) to use the algorithm.
Live preview
A panel at the bottom of the form shows the letter and score recomputed in real time while you type, before saving. The final value is stored when the product is saved.
Computation algorithm
The module implements the revised 2022/2023 Nutri-Score algorithm (decree of 15 March 2025). A negative component (energy, sugars up to 15 points, saturates, salt up to 20 points in 0.2 g steps) is reduced by a positive component (protein up to 7 points, fibre, fruits and vegetables). Special rules: protein points are not counted when the negative component reaches 11 points or more (7 for fats), except for cheese; beverages can never be graded A, which is reserved for water. The computation engine is validated against the official Santé publique France test cases.
Front-office display
- Product page: the official logo is displayed as SVG in the additional information block, and the INCO table in the Nutrition facts tab, in regulatory order, showing only the values you filled in.
- Listings: a compact badge appears on miniatures in categories, home, search and specials pages.
- Structured data: a JSON-LD schema.org NutritionInformation block is injected in the product page head (calories, fat, saturates, carbohydrates, sugars, fibre, protein, sodium converted from salt).
Languages and themes
The back-office interface and front-office labels ship in French and English; all strings are translatable via International > Translations. The module uses standard hooks (displayProductAdditionalInfo, displayProductExtraContent, displayProductPriceBlock) and works with the Classic theme and any 1.7+ compatible theme. The lightweight CSS is easy to override in your theme.
Uninstall
Uninstalling removes the dfnutriscore_product table and all configuration. Export your values beforehand if you wish to keep them.
FAQ
The displayed score differs from my previous tool
Check that your tool applies the revised 2023 algorithm: many products change letter compared to the old computation (sugars, salt and fibre in particular). Also check the selected product category and the scope of the fruit and vegetable percentage (oils and nuts are now excluded).
No logo appears on the product page
Make sure the corresponding switch is enabled in the configuration, the display is enabled for the product, and enough values were entered (or a letter is manually forced). Then clear the PrestaShop cache.
Can I show the table without the Nutri-Score?
Yes. Disable the logo and the badge in the configuration and keep the table tab: the nutrition declaration remains displayed without the letter.
Does the module handle multistore?
Nutrition values are stored per product and shared across shops; the four display options are configured per shop through the standard PrestaShop multistore context.
Is the schema.org data recognised by Google?
The module generates a JSON-LD NutritionInformation block that follows the schema.org vocabulary, readable by search engines and AI assistants. Whether rich snippets are displayed remains at Google’s discretion.