In OXID eShop 7 you add the widget with a small module that extends a block of the active theme; for the APEX theme this is a Twig template with {{ parent() }}.
Mark product images with --ai in the file name, set before uploading them on the Pictures tab.
Add the script tag
<script src="https://www.ai-label.app/widget.js" defer></script>
The OXID developer documentation shows how a module extends a block of the active theme. For the APEX theme, the extension lives in the module under views/twig/extensions/themes/apex/, in the same path as the original template. It inherits from the template with {% extends %} and overrides a block of the same name:
{% extends 'layout/base.html.twig' %}
{% block BLOCKNAME %}
{{ parent() }}
<script src="https://www.ai-label.app/widget.js" defer></script>
{% endblock %}
Template and block name are placeholders. Choose a block that is output in the head or footer of every page; the names are in the APEX theme templates on GitHub. {{ parent() }} keeps the original content. Then reactivate the module.
Mark images
Which images need a label is your decision, for example with the labelling check. The widget only labels marked images, in three ways that can be combined:
- Attribute on the image:
data-ai-label="generated"for images created entirely with AI,data-ai-label="modified"for photos edited with AI. - File name with a marker before the extension:
vase--ai.jpgorvase--ai-mod.jpg. - Alt text ending in “(AI-generated)” or “(AI-modified)”.
In OXID, the file name is the easiest way. In the admin area, open the product details on the Pictures tab and rename the file before uploading, for example to vase--ai.jpg. The system creates a thumbnail and an icon from it. Check in the page source that --ai appears in the delivered image address.
Custom alt text for product images depends on theme and version. Where it is available, the suffix at the end also works. In your own templates, set the data-ai-label attribute directly.
Pitfalls
- HTML sanitizer: OXID 7.5 offers an HTML sanitizer, disabled by default. When enabled, it removes
<script>and event handlers, among others, so a script tag in CMS content is not reliable. - Theme update: changes made directly in the APEX theme files are lost with an update; the module stays.
- Enlarged view: check that the label appears in the zoom view.
Limits of the widget
- The widget only reaches
<img>elements on pages with the script. Background images from the stylesheet and images under 48 pixels (adjustable withdata-min) stay unlabelled. - Check whether the block you chose is output in cart and checkout.
- It cannot reach emails such as order confirmations. For images outside your website, create a copy with the label burned in using Label an AI image.
- Privacy: when the script loads from ai-label.app, our host sees the IP address, as with any request. The script sets no cookies. Mention it in your privacy policy.
Native app
A dedicated OXID eShop app is planned. There is no date yet.
Get notified when the OXID eShop app launches
We will email you once when the app launches.
Frequently asked questions
Where do I add the script in OXID?
With a module that extends a block of the active theme; for the APEX theme under views/twig/extensions/themes/apex/.
Can I put the script tag into a CMS page?
That is not reliable. An enabled HTML sanitizer removes <script>, and the script would only run on that page.
Sources
Para. refers to the paragraph number in the European Commission's guidelines on Article 50, C(2026) 5054.
- OXID developer docs: extending an active theme blockOXID eSales · Platform · 11 Oct 2026
- OXID developer docs: HTML sanitizer (7.5)OXID eSales · Platform · 11 Oct 2026
- OXID manual: products, Pictures tabOXID eSales · Platform · 11 Oct 2026
- APEX theme on GitHubOXID eSales · Platform · 11 Oct 2026
- Code of Practice on Transparency of AI-Generated Content (final version)Europäische Kommission · Code of practice · 10 Jun 2026
- Regulation (EU) 2024/1689 (AI Act)EUR-Lex · Law · 12 Jul 2024


