User manual
Everything you need to set up, operate, and scale TraceID for your brand.
Overview
TraceID is a Digital Product Passport platform. Each garment gets a unique QR code and RFID tag. Scanning either opens a public passport page with materials, certifications, and sustainability data.
| Who | Does what | Where |
|---|---|---|
| Brand / supplier | Creates products, fills passport data, publishes passports | admin.traceid.co |
| Label production | Creates batches, exports QR + EPC CSV, prints labels | admin.traceid.co + label printer |
| Consumer | Scans QR or RFID on garment, views passport | dpp.traceid.co/p/{id} |
Passport flow
From raw product data to a live, publicly scannable Digital Product Passport.
- Create a model — Go to Products → New model. Enter model SKU, category, division, and brand.
- Add variants — Inside the model, add each colour × size combination. Each variant gets its own passport.
- Fill passport data — Open a variant → Edit passport. Fill composition, origin, certifications, care, carbon footprint.
- Run compliance check — AI validates against EU ESPR Article 7 and returns a DPP score with errors and fix suggestions.
- Publish — Once composition and origin are filled, click Publish. The passport becomes publicly accessible.
// AI mapper input/output example
Input: "95% Cotton, 5% Elastane"
Output: [
{ material: "Cotton", percentage: 95, isRecycled: false },
{ material: "Elastane", percentage: 5, isRecycled: false }
]
+ suggestedCertifications: ["Better Cotton (BCI)"]
+ carbonEstimateKg: { min: 7.2, max: 11.4 }Batches & QR codes
A batch is one label production run. It generates serialised physical item records, QR URLs, and EPC tags for a specific variant.
- Go to Batches → New batch
- Select the variant
- Enter quantity
- Set the EPC company prefix and item reference
- Click Generate
Go to Export → select the completed batch → Generate CSV. The file contains:
QR_CODE_URL,EPC,ITEM_ID,SERIAL,VARIANT_SKU
https://dpp.traceid.co/p/itm_a1b2,3034ABCD000100000001,itm_a1b2,00000001,TRJ-NAV-MRFID & EPC
Every item gets both a QR code and an RFID EPC tag. Both resolve to the same passport — this is the golden rule.
Company prefix + Item reference + Serial (8 digits)
Example:
Prefix: 3034ABCD
Item ref: 0001
Serial: 00000042
EPC: 3034ABCD000100000042Consumer scan experience
- Customer scans QR label with phone camera — no app required
- Browser opens
dpp.traceid.co/p/{itemId} - resolvePassport function checks passport status
- If published, returns full passport payload
- Customer sees: materials, certifications, care, sustainability, supply chain
- Scan is logged in scan_events for analytics
User roles
| Role | Permissions | Scope |
|---|---|---|
| Platform admin | Full access: create brands, set pricing, view all data | All brands |
| Brand admin | Manage own brand users, data, and settings | Own brand |
| Brand manager | Create/edit products, manage categories, publish passports | Own brand |
| Supplier | Edit passport data, import CSV | Own brand |
| Factory | Create batches, export label files | Own brand |
| Store staff | Scan validation only | Own brand |
| Auditor | Read-only passports and audit logs | Own brand |
Data schema
All brand data is stored in Firestore subcollections under brands/{brandId}/... for complete multi-tenant isolation.
| Collection | Document ID | Purpose |
|---|---|---|
| brands/{id}/products | mdl_xxxxxxxx | One per model/style |
| brands/{id}/variants | var_xxxxxxxx | One per colour × size |
| brands/{id}/passports | Same as variantId | DPP data — 1:1 with variant |
| brands/{id}/batches | bat_xxxxxxxxxx | Label production runs |
| brands/{id}/items | itm_xxxxxxxx | Serialised physical units |
| brands/{id}/scan_events | auto | QR/RFID scan analytics |
| item_index | itm_xxxxxxxx | Cross-brand QR resolution index |
| epc_index | EPC string | Cross-brand RFID resolution index |
Cloud functions reference
| Function | Trigger | Purpose |
|---|---|---|
| resolvePassport | HTTPS GET | QR/RFID scan → public passport JSON |
| createBatch | Callable | Generate items + indexes in chunks of 499 |
| recomputeDppScore | Firestore trigger | Auto-recalculate DPP score on passport write |
| checkCertificationExpiry | Cron 08:00 UTC | Flag certifications expiring within 60 days |
| exportLabelFile | Callable | CSV of QR+EPC pairs for label printer |
| aiMapComposition | Callable | Raw text → structured composition fields |
| aiCheckCompliance | Callable | Full EU ESPR Article 7 compliance report |
| createUser | Callable | Admin-only: create user with role + brand |
| updateUserRole | Callable | Admin-only: change role or brand |
| deactivateUser | Callable | Admin-only: disable account |
DPP score breakdown
The DPP score (0–100) is auto-calculated on every passport save. It measures completeness against EU ESPR Article 7.
| Category | Max points | How to earn |
|---|---|---|
| Identity | 10 | Variant SKU (5) + model SKU (5) |
| Composition | 20 | At least one material (10) + percentages sum to 100% (10) |
| Origin | 10 | Country of origin (5) + manufacturing facility (5) |
| Supply chain | 15 | At least one step (10) + all steps verified (5) |
| Certifications | 15 | At least one cert (10) + at least one valid cert (5) |
| Carbon | 20 | Carbon value (12) + methodology (4) + verification (4) |
| Care & end of life | 10 | Care instructions (3) + recyclable (4) + repairability (3) |
Regulation overview
The EU Ecodesign for Sustainable Products Regulation (ESPR) was adopted in 2024 and requires Digital Product Passports for all product categories sold in the EU. Textiles are one of the first categories to be regulated.
Key requirements under Article 7 include:
- Material composition with percentages
- Country of manufacture
- Repairability and recyclability information
- Carbon footprint data (from 2027–2030 depending on scope)
- Unique product identifier accessible via QR or RFID
- Certifications with issuer and validity dates
Non-compliance after the mandatory date will result in products being blocked from EU market access. TraceID public passport pages at dpp.traceid.co/p/{id} fulfil this requirement.