From 27 September 2026, Germany's Third Act Amending the UWG (Act Against Unfair Competition) takes effect, transposing Directive (EU) 2024/825 into national law – with no transition period for existing product texts, category texts or marketing material. Blanket claims such as "environmentally friendly" or "sustainable" become unlawful without recognised proof, climate neutrality based on offsetting can no longer be presented as a product feature, and self-created seals without a certified verification scheme are no longer permitted. The first question therefore isn't what you're allowed to write in future, but which texts in your own shop are already a problem today. With a few thousand products, category texts and content pages that have grown over several years, this can't be answered by hand.
EmpCo Check scans the entire Shopware 6 store: products, categories, content pages, manufacturer texts and product properties, per language, including meta fields. Matching works on word boundaries with German suffixes, so "nachhaltig" also matches "Nachhaltigkeit" and "bio" matches "Bio-Baumwolle", but not "Biotonne" or "Bioethanol". All manufacturer names in the shop are automatically treated as an exception so that brand names aren't wrongly counted as environmental claims; if a manufacturer happens to share its name with a search term, that term can be removed from the automatic exception and mapped instead through a whitelist entry scoped to "manufacturer". A negation or a substantiated statement such as "80% recycled content" or "compostable to EN 13432" lowers the severity rather than hiding the match.
Each match can be marked with a review status: checked and correct with a note and proof URL, permanent exception, or left open. Reviewer and date are logged automatically, the status survives every further scan, and counters per severity plus a progress bar show how much has been worked through. A review log can be exported as CSV, with object, field, term, severity, status, reviewer, date, note and proof. A seal register is for manually documenting environmental logos in use: seal, certification body, proof and note per entry, with no automated check.
The scan runs in batches with a progress display, so even large catalogues don't hit a time limit; a second run only re-checks what has changed since the last one. The extension works entirely inside the shop, with no external API calls, no data leaving the system and no ongoing costs for an external service. The term list is included and fully editable in the administration; custom entries are preserved across updates.
EmpCo Check is a technical review tool, not legal advice: it finds wording and documents the review, but whether a claim is lawful in a specific case depends on evidence that isn't stored in the shop, and in case of doubt belongs in front of a lawyer.
The legal basis is the Third Act Amending the Act Against Unfair Competition of 12 February 2026, promulgated on 19 February 2026 (Federal Law Gazette I 2026 No. 43); new entries on the blacklist annexed to Section 3(3) UWG include, among others, numbers 2a, 4a, 4b, 4c and 10a. Violations can be fined up to EUR 50,000 under Section 19 UWG, or up to 4% of annual turnover for businesses with turnover above EUR 1.25 million.
Technically, EmpCo Check is an extension for Shopware, installed via the Extension Manager, with no manual SQL and no template changes; it does not touch the storefront. Uninstalling only removes the extension settings – the review log is preserved. Evaluation and term management can be governed by separate admin permissions.
EmpCo-Check (Green Claims) for Shopware 5 – User guide
1. What the plugin does
From 27 September 2026 the Third Act Amending the UWG (implementing Directive (EU) 2024/825) applies: blanket environmental claims such as "environmentally friendly" or "sustainable" need recognised proof, climate-neutral claims based on offsetting may no longer be presented as a product feature, and self-created seals without a certified verification scheme are not allowed.
EmpCo-Check scans your shop texts for such wording and documents your review of every hit. It is a technical review tool, not legal advice: it finds wording and logs the review; whether a claim is lawful depends on evidence that is not stored in the shop.
What is scanned (per language / sub-shop, including meta fields):
- products (name, descriptions, meta title, keywords),
- categories (name, texts, meta fields),
- shop pages / content pages,
- manufacturers (name, description, meta fields),
- product properties and variants: attribute names and attribute values.
Everything runs inside your shop. No external service, no data leaves the system.
2. Where to find it
Backend menu Marketing:
- EmpCo-Check – the findings window ("Auswertung"): scan, review, export.
- EmpCo-Check: Begriffe & Siegel – terms, whitelist and seal register.
Permissions (Settings → User administration → Roles):
- Findings (
fishnempcocheck): read, review, scan, export. - Terms (
fishnempcoterms): read, write, delete.
A user with only "read" can look at everything but cannot scan, review, export or change terms.
3. Starting a scan
Window EmpCo-Check (top area):
- Scope
- Only objects changed since the last run (default): only objects changed since the last completed scan. The very first scan is automatically a full scan.
- Full (all objects): everything is checked again.
- Sources: tick what should be scanned – Products, Categories, Shop pages, Manufacturers, Attribute names, Attribute values (all ticked by default). At least one must be ticked.
- Click Start scan now.
- The progress bar shows how many objects are done. The scan runs in small batches, so large catalogues do not run into a time limit. Keep the window open while it runs; if you close it, the shop's cron job finishes the scan (see "Settings and cron job").
- Cancel scan stops a running scan. Findings found so far are kept.
Only one scan can run at a time. A scan with no active term is refused ("There are no active terms").
Scope and sources cannot be changed while a scan is running. What you ticked is stored with that scan; later changes do not affect a scan that has already started.
4. Reading the results
Counter line: findings in total, severity red, severity yellow, open, checked, exception, "text has since changed", and how many findings are processed.
Columns
- Object – type, name and ID, e.g. "Product: Main product (#2)"; "inactive" if the object is switched off; shop ID for translated texts.
- Field – which text field the hit is in (e.g. description_long, metaTitle).
- Term – the matching term.
- Severity – Red (critical) or Yellow (needs a look).
- Status – Open, Reviewed & OK, Exception, Text has since changed.
- Excerpt – about 60 characters before and after, the hit is highlighted. A note under it explains when the severity was lowered.
- Note, Reviewed at (reviewer and date).
Why a hit can be yellow instead of red
- Negation nearby ("nicht klimaneutral", "kein Plastik") → severity lowered.
- Substantiated statement nearby (e.g. "80 % recycled", "compostable to EN 13432", certificates, FSC, GOTS, Blue Angel) → severity lowered.
The hit is never hidden; only the severity is lowered.
Filters (two rows above the list)
- Severity, Status, Object type (several values can be selected), Term (only terms that have findings).
- Sort: Severity, Term, Object, Status, Newest first.
- Search: object name, excerpt or term.
- Only active objects – hides hits in products, categories and pages that are switched off in the shop (customers cannot see them). Manufacturers, attributes and variants have no on/off flag and always stay visible.
- Show changed texts – shows hits with the status "Text has since changed": reviewed items whose text was edited later, so the term no longer exists. They are kept as evidence of your review but hidden by default. They are also included in the CSV when ticked.
- Per page: 25 / 50 / 100 / 200 (bottom bar).
5. Reviewing a hit
In every row, on the right:
- Green check – Reviewed & OK: you checked it and it is fine. A dialog asks for a note and a proof URL (http/https only).
- Red minus – Exception: this wording is acceptable. Optionally tick Permanent exception (also write it to the whitelist) – then choose:
- the whitelist entry (default: the word that matched),
- the scope: Shop-wide, This manufacturer only (the manufacturer of this object) or This category and below.
From the next scan on this wording is suppressed in that scope. Shop-wide is a blunt tool – narrow it if possible. - Blue circle – Reopen: back to "Open" (note and proof are cleared).
- Pencil – Open record: opens the product directly; for other types the matching module opens.
Reviewer and date are logged automatically. The status survives every further scan: a reviewed hit is never turned back to "open" by a new scan. If the text is edited and the term disappears, the hit becomes "Text has since changed" and returns to its old status if the exact wording comes back.
6. Export (audit log)
Export audit log as CSV exports the list with the filters and sorting you have set (UTF-8, semicolon-separated, opens in Excel). 19 columns: object type, object ID, object name, active, language, field, term, severity, original severity, hints, status, reviewer, reviewed at, proof, note, first seen, last seen, no longer present, excerpt.
7. Terms – window "EmpCo-Check: Begriffe & Siegel"
The window has three pages: Terms (start page), Whitelist and Seal register. Use "Back to terms" to return.
7.1 How matching works
- Whole words with German endings: "nachhaltig" also finds "nachhaltige" and "Nachhaltigkeit"; "bio" finds "Bio-Baumwolle" but not "Biotonne".
- Hyphens and spaces in a term are tolerant: "CO2-neutral" also finds "CO2 neutral".
- Upper/lower case is ignored.
7.2 List of terms
Columns: Term (a regex marker for regular expressions), Shop (language), Category, Severity, Origin, Active, Findings (how many hits), Note.
- Origin: Delivery list = shipped with the plugin (52 terms), Custom term = created by you.
- Pencil = edit, red minus = delete (asks for confirmation).
- Re-import delivery list: adds missing shipped terms and whitelist entries and updates their texts. It never touches your own entries and never re-activates a term you switched off. A message shows how many were new/updated.
7.3 Create a term
Click New term:
| Field | Meaning |
|---|
| Term | The wording to find (required). |
| Severity | Red (critical) or Yellow. |
| Shop | All shops or one specific shop/language. A term with a shop only applies to the texts of that shop. |
| Category | Free label for grouping (max. 64 characters), e.g. "climate", "seal". |
| Note | Free note, e.g. why it is critical. |
| Regular expression | Tick only if the term is a pattern. It is used as it is (no word boundaries, no endings, case-insensitive). An invalid pattern is rejected when saving; at scan time it is skipped and never stops a scan. |
| Active | Only active terms are used by a scan. |
Click Save. The term is used from the next scan.
To change a term, click the pencil. A term you do not want any more can be deactivated (Active off) instead of deleted – this also survives the re-import.
8. Whitelist
The whitelist suppresses hits that sit inside a harmless word or phrase – e.g. "bio" in "Bio-Circle" or "grün" in "Grüne Erde". All manufacturer names of the shop are considered automatically and do not need to be entered.
Open it with the Whitelist button. New entry:
| Field | Meaning |
|---|
| Term | Word or phrase that is harmless (the same matching rules as for terms: endings, hyphen/space tolerant). Only the hit inside this phrase is suppressed, not the whole text. |
| Scope | Shop-wide, This manufacturer only (pick the manufacturer) or This category and below (pick the category; subcategories are included). |
| Note | Free note. |
| Active | Switch the entry off without deleting it. |
Example: allow "bio" only for one manufacturer of EU-organic-certified food, without switching "bio" off shop-wide.
If a manufacturer's name equals a search term, you can still handle it with a whitelist entry scoped to that manufacturer.
9. Seal register
Button Seal register. Pure documentation of the environmental seals and logos used in the shop. New seal: Name, Certifying body, Proof URL, Note. There is no automatic check. A seal without a certifying body is shown as "Missing" – it counts as self-created without a certified verification scheme, which is exactly the case the directive targets.
10. Settings and cron job
Plugin settings (Plugin Manager → EmpCo-Check → Configuration): Objects per scan step (default 200, allowed 10–2000). Which sources are scanned is chosen in the scan window.
Cron job: The scan runs from the open window. The plugin also registers a job (Shopware_CronJob_FishnEmpcoCheckScan, every 60 seconds) that only finishes a scan that was started but not completed (for example because the window was closed). It never starts a scan by itself. For it to run, the server needs one system cron entry (see README.md):
* * * * * php /PATH/TO/SHOP/bin/console sw:cron:run
11. Install, update, uninstall
- Install via the Plugin Manager (upload/install, then activate). No manual SQL, no template changes; the storefront is not touched.
- On install and on every update the shipped term list (52 terms, 25 whitelist entries) is imported automatically; your own entries are preserved.
- After an update or when files change: clear the backend cache (Settings → Caches/Performance) and reload the backend.
- Uninstall: tick Keep user data to keep the tables (findings, terms, whitelist, seals, scan runs) and thus the audit log. Without it, all plugin tables are deleted.
12. Typical workflow
- Open EmpCo-Check → leave Scope on default, all sources ticked → Start scan now (first run = full).
- Work through the red hits first: fix the text in the shop, or review as Reviewed & OK (with proof URL) / Exception.
- After text changes run the scan again ("changed objects only").
- Add terms specific to your business under EmpCo-Check: Begriffe & Siegel; add whitelist entries for harmless words.
- Export the audit log as CSV as documentation.