# Digital Product Passport (DPP) — Complete guide

> The DataFirefly — Digital Product Passport (dfdpp) module adds a complete digital product passport system to your PrestaShop 8 or 9 store, compliant with the EU ESPR regulation (Ecodesign for…

- Page: <https://www.datafirefly.com/en/documentation/dfdpp/>
- Language: en
- Last updated: 2026-07-01
- Other languages: [fr](https://www.datafirefly.com/documentation/dfdpp/index.md), [es](https://www.datafirefly.com/es/documentation/dfdpp/index.md), [de](https://www.datafirefly.com/de/documentation/dfdpp/index.md), [it](https://www.datafirefly.com/it/documentation/dfdpp/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfdpp/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfdpp/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfdpp/index.md)
- Index: <https://www.datafirefly.com/en/documentation/llms.txt>

The **DataFirefly — Digital Product Passport (dfdpp)** module adds a complete digital product passport system to your PrestaShop 8 or 9 store, compliant with the EU **ESPR** regulation (Ecodesign for Sustainable Products Regulation), progressively applicable from 2027 for textiles, batteries and electronics.

Each product gets a passport with a unique identifier (UUID), a multilingual public page accessible via QR code, a component registry (bill of materials / BOM), a lifecycle event log and compliance certificate management.

## Requirements

- PrestaShop **8.0.0 to 9.x**
- PHP 7.4 minimum (8.1+ recommended)
- GD extension enabled (fallback QR code rendering when Endroid is unavailable)
- Multistore and multilingual compatible (FR / EN / ES / DE / IT included)

## Installation

1. In the back office, open **Modules > Module Manager**.
2. Click **Upload a module** and upload `dfdpp.zip`.
3. The module automatically creates its tables, its **Product Passports** menu under _Catalog_ and registers its public routes.

No external library is bundled: the module uses the Endroid QR Code library shipped with PrestaShop core (v3, v4 or v5 auto-detected), with a GD fallback renderer.

## Configuration

Open **Modules > dfdpp > Configure**. Three blocks are available:

### General settings

- **Enable module** — global switch.
- **Auto-create** — generates a draft passport whenever a product is saved.
- **Default ESPR category** — textile, battery, electronics, furniture, footwear or general.
- **Public display** — enables the public `/dpp/{uuid}` page.
- **Product page tab** — shows the passport in a product page tab.
- **Public JSON export** — allows downloading the passport as JSON.

### QR code

- **Size** (default 220 px) and **margin** (10 px).
- **Error correction level** — M recommended (density / robustness balance).

### Company information

Name, VAT number, address and country of the responsible economic operator — this information is displayed on the public passport page, as required by the ESPR.

## Creating a passport

### Automatic creation

When enabled, a _draft_ passport is created every time a product is saved, using the default ESPR category. It only becomes publicly visible once manually **published**.

### Manual creation

1. Open **Catalog > Product Passports > Passports**.
2. Click **Add**, select the product (and combination if needed).
3. Fill in the fields and save: a unique UUID v4 is generated automatically.

From the back-office product sheet, the **Digital Passport** tab lets you create or open the passport of the product being edited directly.

## Passport data

The form is organised into five blocks:

- **Identification** — product, combination, ESPR category, GTIN, manufacturer, country of origin, production date, batch number.
- **Sustainability** — carbon footprint (kg CO₂e), recyclability score, recycled content percentage, repair score, expected lifetime, warranty.
- **Multilingual content** — material composition, care instructions, disposal and end-of-life instructions, repair information, safety information, compliance certificates (six rich-text fields, translatable into every shop language).
- **Components, events and documents** — managed via AJAX directly inside the passport sheet (see below).
- **Custom fields** — a free JSON object for any additional sector-specific data.

## Component registry (BOM)

Each passport can record its full bill of materials: component name, material, weight (g), product percentage, recycled share, recyclability, hazardousness, CAS number, supplier and country. Components can be **nested** (parent component / sub-component) to model assemblies.

The **Catalog > Product Passports > Registry** menu offers a cross-passport view of every component in the shop, filterable by material, hazard or supplier — handy for REACH audits.

## Lifecycle events

The log traces the product's life: design, raw material, manufacturing, quality control, distribution, first sale, resale, repair, refurbishment, recycling, end of life. Each event carries a date, a location, an actor (name + role), a description and an optional evidence URL.

The **Catalog > Product Passports > Events** view centralises all events with a type filter.

## Documents and certificates

Attach the required certificates to each passport: CE declaration, REACH, RoHS, WEEE, EU Battery Regulation, OEKO-TEX, GOTS, Ecolabel, FSC, ISO 14001 / 9001, PEF, EPD or other. Each document carries a number, an issuer, validity dates and a file URL.

An expired certificate is flagged as a _blocker_ by the compliance engine and lowers the passport score.

## ESPR compliance score

The module evaluates each passport against rules specific to its ESPR category and displays a score out of 100 with a level:

- **Compliant** — score ≥ 90 with no blockers.
- **Partial** — score ≥ 60.
- **Draft** — incomplete data.
- **Non-compliant** — blockers present.

The list of checks and blockers is detailed in the passport sheet; the **Recalculate** button refreshes the score after changes.

## Public page and QR code

Each published passport is available at `https://your-shop.com/dpp/{uuid}` and its PNG QR code at `/dpp/{uuid}/qr.png` (`?size=` parameter accepted from 80 to 800 px, 24-hour browser cache).

The public page shows: product image and identity, QR code, sustainability KPIs, composition, component table, care and repair, disposal instructions, lifecycle timeline, certificates, safety information and the responsible operator's details. It embeds **JSON-LD schema.org** markup for SEO.

Print the QR code on the product label, leaflet or packaging: this is the access mode intended by the ESPR for end consumers, repairers and recyclers.

## Product page display

When enabled, a **Digital Passport** tab appears on the front-office product page with the QR code, key indicators and a link to the public page. A fallback block can also be displayed below the description.

## GDPR and access log

Public views can be logged in an anonymised way: the IP address is hashed with SHA-256, a daily salt and the shop's secret key — no exploitable personal data is stored. The option can be disabled in the configuration.

## Multistore and multilingual

Passports are attached to a shop (multistore context respected) and all editorial content exists in every active language. The module ships translated into French, English, Spanish, German and Italian (XLIFF format, editable via **International > Translations**).

## Uninstall and data retention

On uninstall, the configuration and admin tabs are removed, but **the data tables are preserved**: the ESPR regulation requires passport availability throughout the product's lifetime. For permanent deletion, drop the `ps_dfdpp_*` tables manually.

## Troubleshooting

### The /dpp/{uuid} page returns a 404

- Check the passport is **published** and public display is enabled.
- Clear the PrestaShop cache (_Advanced Parameters > Performance_) to regenerate routes.
- Check URL rewriting (friendly URLs enabled).

### The QR code doesn't display

- Check the PHP GD extension is active if your installation doesn't ship Endroid QR Code.

### The tab doesn't appear on the product page

- Enable the **Product page tab** option in the configuration and check your theme supports the `displayProductExtraContent` hook.

## Changelog

- **1.0.0** — Initial release: UUID passports, multilingual public page, QR codes, nested components, lifecycle events, documents, per-category ESPR compliance score, JSON / JSON-LD export, GDPR access log, multistore.
