Breaking changes — that is, changes that may require adjustments to existing shops or templates — are clearly marked with a warning in each release. If a release does not contain such a note, no adjustments are usually necessary.
Released: 27.10.2026
New in the shop
- Non-existent pages return status 404 or 410. If someone calls up a page that does not exist, the shop now responds with status 404 or 410 instead of redirecting to another page. This allows search engines to reliably recognize that an address no longer exists.
- Checkout: newsletter sign-up below the email field. In the checkout process, a checkbox for newsletter sign-up can be displayed below the email field.
- Payment method library: PayPal uses Card Fields. The PayPal credit card input in the payment method library has been switched from Hosted Fields to Card Fields.
- Captcha: API keys are no longer logged. When a captcha was used, API keys ended up in the logs.
- Access statistics: separation of tenants. The access statistics were in some cases not cleanly separated by tenant.
- Order statistics optimized. The evaluation of the order statistics has been improved.
- PayPal: credit card payments always with 3-D Secure. Credit card payments via PayPal are now consistently executed with 3-D Secure.
- Payment method library: error in Express Checkout fixed.
- Product rating: rating emails contain content again. The product rating emails arrived empty at the recipient.
- Vouchers: percentage values are always set. If a voucher was missing its percentage value, it remained uninitialized.
- Newsletter: stored email address can be changed. The address entered for the newsletter could not be changed.
- Closed B2B shop: redirect for logged-out customers. If the shop is closed, logged-out customers are now correctly redirected to the home page.
- REST API:
endReachedis calculated correctly for/admin/api/v1/categories. - Categories: assignment corrected. An error in the category assignment has been fixed.
- Log manager: subshop filter corrected.
- Importer: several bugs fixed.
Released: 08.10.2026
New in the shop
- Text variables in templates: dynamic translation. Text variables in the templates are now translated dynamically. A text therefore no longer has to be kept in the template for each language.
- Stripe and Computop: more meaningful error texts. If a payment via Stripe or Computop fails, the customer now receives a text that states the reason.
- Payment processes: more complete logging. In the payment process, no log entries were written at several points. As a result, an incident could not be traced afterwards. These gaps have been closed.
- MCP API: connecting AI agents. The admin interface now provides an MCP API through which AI agents can be connected.
- Shop statistics: conversion rate. The “Shop statistics” widget now also shows the conversion rate.
- Configurations: subshop overrides inherit the base values. When a subshop override is created, it now takes over the values of the base configuration for all parameters not specified.
- Password change logs out other sessions. If a user of the admin interface changes their password, all other sessions of this user are terminated.
- Admin interface: password reset tokens are single-use. A token that has already been used is now rejected on a second attempt.
- Tokens for account invitation and password reset: validity period corrected. The validity period of these tokens was not calculated correctly.
- Newsletter: opt-in tokens are no longer deleted too early. An opt-in token for newsletter sign-up was in some cases removed before the recipient could confirm.
- Newsletter: no disruption with an invalid target group. If an invalid target group was passed during newsletter sign-up, processing was aborted.
- Company accounts: password reset for sub-accounts fixed. Resetting the password of a company sub-account works again.
- Admin interface: “Login as customer” sets the account type. When logging into a customer account from the admin interface, no account type was set.
- Sessions: requests to a replaced session. If a session was replaced by a new one, requests could still be served from the old session.
- Payments: race condition during capture fixed. When capturing a payment, parallel operations could interfere with each other.
- Configuration service: empty lists remain lists. An empty list was once again converted to
nullin the configuration service. The bug had already been fixed once in release-1.91. - Configurations: meaningful error for an ID already in use. If a configuration is created with an ID that already exists, the error message now states the reason instead of remaining generic.
- Set products: number of sub-products is read as an integer. The quantity of a set sub-product was interpreted incorrectly.
- Product search: limit on
wsSearchcalls applies per request. The limit previously applied globally per process. Calls from one request could therefore use up the quota of other requests. - Product search: bug in the search indexer fixed. The search indexer aborted in some cases.
- Emails: product review reminder is sent again. If the product review reminder email accessed product data, sending was aborted.
- Emails: product reminder is sent again. Sending the product reminder was aborted.
- hreflang information: invalid subshops in the configuration. If the configuration contained an invalid subshop, generating the hreflang information was aborted.
- Image check: bug in the image checker fixed. The image check aborted in some cases.
Released: 29.09.2026
New in the shop
- Additional information per payment method in the order process. You can now configure your own additional information for each payment method and request it in the order process, for example a detail that is only needed for a specific payment method.
- Product and category data fields: extended mapping. The mapping of product and category data fields via
content.usedFieldshas been extended. - Back-in-stock notification: sign-ups while logged out. If a customer signs up for the notification without logging in, it is now also displayed, provided it can be assigned to a customer account via the email address.
- System texts: automatic creation during version updates. If a version update brings new system texts, the shop now automatically creates them with the default texts. An update therefore no longer leaves empty text placeholders.
- Storefront API: test mode. The Storefront API can now be operated in test mode.
- Test mode:
testSearchflag. There is now thetestSearchflag for test mode.
- Order history in the customer account: migration of existing orders. Existing orders can now be transferred to the order history of the customer account. Customers can therefore also see their older orders.
- Customer data: fields not provided are no longer cleared when saving. Affects the address-independent customer data. The corresponding fix for customer data in the shop came with release-1.98.
- Address-dependent customer data: several bugs fixed. Various bugs in the handling of address-dependent customer data have been fixed.
- REST API: address-independent customer data is validated. If address-independent customer data is set via the REST API, the shop now checks the values.
- Addresses: import via the admin interface fixed. Addresses are now transferred correctly when importing via the admin interface.
- REST API: company accounts with restricted subshop assignment. Company accounts that are only active in some of the subshops can now be managed via the REST API.
- Order process: payment provider webhooks no longer interrupt the customer. If a notification from the payment provider arrived during the payment process, the customer was thrown out of the order page.
- PayPal: distinction between fatal and non-fatal errors. Not every PayPal error now aborts the payment process.
- Stripe: onboarding bug fixed. Another bug in Stripe onboarding has been fixed, in addition to the account type fix from release-1.98.
- Vouchers: customer filter fixed. A bug with vouchers with a customer filter has been fixed.
- Categories: deletion with an empty ID. If an attempt was made to delete a category with an empty ID, all categories were deleted. Such a request is now rejected.
- Product variants: no more incomplete entries. If creating a product variant failed, incomplete entries remained.
- Product import/export: variants and set products are preserved. Variants, variant attributes, sub-products of sets and variant IDs were not transferred during export and import. As a result, imported products could not be reached in the detail view of the admin interface.
- Object creation: missing validations added. When creating objects, the shop now additionally checks:
- the maximum length of the voucher ID
- the fields of a category
- the sub-products of a set product
- the SEO URL
- whether the ID of a product or category is already in use. Such a record is now rejected instead of being created.
- Inventory: status thresholds of the traffic light fixed. Several bugs in the thresholds of the inventory traffic light have been fixed.
- Inventory: overwriting the reservation time fixed.
- Advertising codes: logic of the catalog codes adjusted. The evaluation of the advertising codes (inserts) has been adjusted.
- Image import: no more inverted images. During import, images were in some cases transferred as negatives.
- Sitemap builder: several bugs fixed.
- Statistics: several bugs fixed.
- Admin interface: default currency back in the configuration. The default currency of the admin interface is once again included in the configuration node
general.general. - Parallel requests: race conditions in error output fixed. If several requests were processed at the same time, error messages could get mixed up.
Released: 18.09.2026
New in the shop
- Argon2 as the password hashing method. Passwords are now hashed with Argon2. The method is considered the current state of the art and increases the protection of stored passwords.
- Orders: filter by payment status. The order overview can now be filtered by payment status.
- Addresses: consistent handling across all creation paths. Addresses were handled differently depending on how they were created. This has been unified.
- Addresses: main billing address is set correctly. When creating an address, the main billing address was not set correctly.
- Checkout: automatic selection of the delivery address fixed. The delivery address was not reliably preselected automatically during checkout.
- Customer data in the shop: fields not provided are no longer reset. When a customer saved their data, fields they had not filled in were cleared.
- Company accounts: password change only ends the own session. When a sub-account changed its password, the sessions of all sub-accounts of the company account were ended. Now only the session of the sub-account whose password was changed is affected.
- Company accounts: orders are assigned to the correct sub-account. Under certain circumstances, orders were assigned to the wrong sub-account of a company account.
- Product ratings: no ratings on behalf of other accounts. The rating function allowed ratings to be submitted for other customer accounts. This is no longer possible.
- Customer data import: permissions are imported correctly. The import of customer data in the admin interface now transfers permissions correctly.
- Back-in-stock notification: shop configuration is updated regularly. The email dispatch worked with an outdated shop configuration. It is now reloaded regularly.
- Image converter: path corrected.
- Sitemap: file collision during generation fixed. When building the sitemap, collisions occurred between the generated files.
- Stripe: onboarding selects the correct account type. During Stripe onboarding, the wrong account type was preselected.
Released: 07.09.2026
Bug fixes
- PayPal: pending payment capture is no longer rejected. A payment capture with status “Pending” was rejected even though the amount had already been captured. Such payments are now processed correctly. The rejection of unfinished payments introduced in release-1.94 therefore only applies to payments that were actually not captured.
- PayPal: redirect on rejected or failed payment. If PayPal rejects a payment or an error occurs during the payment process, the customer is now redirected to the correct page.
- Order check: ongoing order processes are no longer aborted. The automatic order check ended order processes that were still running. This no longer happens.
- Direct order: error message only appears in the error case. During direct order, an error message was displayed permanently and duplicated. It now only appears once, and only when an error actually occurs.
- Vouchers: database error fixed. A faulty database query in voucher processing caused an error.
- Vouchers: no voucher link in cancelled orders. The order data of a cancelled order still contained the download link of the purchased voucher.
- Password reset: automatic login is ended. When resetting the password via the email link, the “stay signed in” tokens remained in place. An existing automatic login therefore survived the reset. The tokens are now deleted.
- Country check: deactivated countries are taken into account. The country check also accepted countries that are deactivated in the shop.
- Watch lists: default watch list can no longer be deleted. The default watch list could be deleted even though the shop requires it.
- Product ratings:
checkRatingExistence()returns correct values. The check$wsProductRating.checkRatingExistence()always returnedtrue, regardless of whether a rating existed. - Product ratings: edit form is no longer empty. If
allowRatingAfterEachOrderis set tofalse, an empty edit form was displayed. - Product ratings: ratings by sub-accounts. For sub-accounts, the member existence check and the unique database index contradicted each other. This caused errors when submitting a rating.
- Storefront API: ratings of a customer account are delivered. Instead of the ratings of a customer account, the Storefront API returned
null. - Storefront API: address type flags are delivered. With
loadAddress()and with the default addresses, the address type flags were missing; the Storefront API returnednull. - REST API: correct list for queries without subshop ID. If the parameter with the subshop ID was missing, the REST API returned the wrong list.
- Customer data import: empty fields no longer overwrite data. The import of customer data in the admin interface no longer overwrites existing values with empty fields.
- Logmanager: notifications cover the current period. The period of a notification was calculated from the last send date plus the interval. As a result, the emails always referred to time windows further in the past and never caught up with the current state.
- Statistics: aggregator no longer aborts silently. Under certain circumstances, the statistics aggregator aborted without an error message.
- Additional minor bug fixes in the admin interface.
Released: 21.08.2026
New in the shop
- Dynamic CMS page template for static shop pages. Static shop pages can now be output via a dynamic CMS page template. This means a dedicated template no longer has to be created for new content pages.
- Computop: pending payments page. There is now a dedicated pending payments page for Computop payments. This gives customers a clear interim status for Computop as well, as long as a payment has not yet been completed.
- Storefront API: text search. The Storefront API now offers a text search.
- Storefront API: redirect for deleted products. If a customer requests a deleted product, the Storefront API now returns a redirect.
- Validations: configuration via IDs and node names. Validations can now be configured via IDs as well as via node names.
- Product list: paging works correctly again.
- Shipping methods: validation of the delivery method corrected. The check of the selected delivery method works correctly again.
- Stripe: pending payments page is displayed correctly.
- Stripe: payment status is determined correctly.
- Bancontact: redirect to the pending payments page corrected. Bancontact payments incorrectly led to the PayPal pending payments page.
- File exporter (Reporter): no preset filter anymore. When creating an export, no filter is preselected anymore.
- Customer data import: error fixed. An error in the import of customer data was fixed.
- Watch list: error fixed. An error in the product watch list was fixed.
- Task management: orphaned entries are cleaned up. Entries in the internal task list that are no longer assigned no longer remain behind.
- Currencies: currency symbol no longer has to be unique. Multiple currencies may now use the same symbol.
Released: 11.08.2026
New in the admin interface
- Multiselect search for extensive filter lists. If a filter contains many entries, the matching selection can now be narrowed down via a search.
- Log manager: subshop ID is optional. The subshop ID is no longer a mandatory field in the log manager.
- Customer data import: passwords are preserved. A manual import of customer data no longer deletes existing passwords.
- B2B basket: subshop overrides are applied. The B2B basket now correctly takes subshop-specific overrides into account.
- Inventory configuration: subshop overrides are applied. Subshop-specific overrides of the inventory configuration are now correctly taken into account.
- Checkout: redirect to the pending payments page. If a customer cancels the payment process, they are now reliably redirected to the pending payments page.
- Email addresses: case is ignored. Email addresses are now handled in the database regardless of case.
- Customer data import: no errors on empty phone number. The import of customer data no longer fails when the phone number is empty.
- REST API: empty arrays in configurations are preserved. When saving configurations via the REST API, empty arrays are no longer stored as
null. - Storefront API:
checkout/commitDraftAddress.htmworks correctly again. - Storefront API:
watchList/checkHasProduct.htmworks correctly again. - Admin interface: error message for a blocked customer account. The message for a blocked customer account is now displayed correctly at login.
Released: 05.08.2026
New in the shop
- PayPal Checkout Vault: saved payment data for a faster checkout. Customers can now securely store their PayPal payment data and reuse it on a later order. This speeds up the payment process for returning customers.
- Text snippets: subshop-specific exceptions within a language. Within a language, individual text snippets can now be defined differently per subshop. This lets a subshop use a different text without duplicating the entire language.
- Text snippets: import and export. Text snippets can now be imported and exported, for example to edit them externally or transfer them between shops.
- Voucher errors: multiple reasons at the same time. If a voucher does not reach the minimum order value and, at the same time, there are no matching products in the basket, both error reasons are now displayed at the same time. The feature builds on the output of voucher errors introduced in release-1.93.
- Customer overview: last modification date. The customer overview now shows the date of the last modification for each customer.
- PayPal: payments that are not completed are rejected. Payments that could not be successfully captured are now rejected instead of remaining in an unclear state.
- REST API: set products with invalid IDs are rejected. If a set product contains invalid product IDs, it is now rejected via the REST API instead of being created incorrectly.
- Product search: memory error during indexing fixed. The search indexer no longer runs into an out-of-memory error on large data volumes.
- Product import/export: variant fields are no longer cleared. During CSV import or export, variant fields could sometimes be overwritten with empty values. That no longer happens.
- Migrator: clean cleanup on abort. If the migrator aborts with an error, it now correctly cleans up the changes it has already started.
Released: 30.07.2026
New in the shop
- Vouchers: revised interface and meaningful error messages. The display and handling of vouchers in the checkout flow has been revised. In addition, the type of voucher error can now be output, for example when a voucher does not reach the minimum order value or there are no matching products in the basket. You maintain the error texts in the new configuration node
checkout.voucherErrors; in the template, the error list is available at$wsCheckout.ineffectiveVoucherErrors. - Query payment status in the shop. The new
refreshPaymentStatusaction determines the current payment status of the running order and returns it. This can be used, for example, on the pending payments page to check whether a payment has since been completed.
- Manual log search: filtering by program. In the manual log search, results can now additionally be restricted by program.
- Time-based prices: customisable promotion text. For each time-controlled price, a dedicated promotion text can now be maintained, which is output in the shop alongside the promotional price.
- Shipping methods: AccountType is derived from the session. The shop no longer depends on the AccountType selected in the template, but derives the customer type from the state of the session:
- Not logged in: guest order
- Newly registered: new customer
- Logged into an existing session: existing customer. This fixes a whole range of bugs where shipping methods were not displayed.
- Order confirmation page: basket is reliably emptied. A race condition could cause the basket on the order confirmation page to still contain items. The basket is now reliably empty.
- Product data fields: long lists no longer break the design. Very long lists in the product data fields broke the display. The layout now remains stable.
Released: 16.07.2026
New in the shop
- Advertising media identifier (inserts): capture the order source via catalog codes. Catalog codes can now be used to capture and pass on which advertising medium (insert) triggered an order. This allows the origin of an order to be evaluated.
- Elasticsearch: configurable log index. The target index or data stream from which the shop logs are read can now be defined via the new option
logsIndexunderelasticSearchinshop.json, for example to use the Elasticsearch default data streams (logs-*-*, from Elasticsearch 8 onwards). Without configuration, the previouslogsindex remains active.shop.json
- Watch lists: content is preserved. The content of watch lists no longer disappears after some time.
- Saved baskets: no empty entries for guests. No empty entries for saved baskets are created for guest users anymore.
- Admin interface: no logout on missing permissions. If a user is missing permissions, they are no longer logged out of the admin interface.
- Admin interface: no preselection of all custom product fields. When opening, not all custom product fields are automatically selected anymore.
- Data subshops: referencing fixed. The referencing of data subshops works correctly again.
- Configuration service: empty lists remain lists. An empty list is no longer wrongly converted to
nullin the configuration service.
Released: 06.07.2026
Bug fixes
- PayPal pay upon invoice: customer no longer gets stuck on the “pending” page. If the PayPal notification (webhook) arrives before the customer returns to the shop, the order is now completed correctly. The customer no longer remains stuck on the pending payments page.
- Additional bug fixes from shop tests. Various minor bugs found during shop tests have been fixed.
Released: 02.07.2026
New in the admin interface
- Statistics: automated currency conversion. The statistics service now automatically converts revenues in foreign currencies. Reports across shops with multiple currencies therefore deliver consistent, comparable values.
- Feed Builder: memory issue fixed. A memory leak in the Feed Builder has been eliminated that could lead to increased memory consumption during long-running feed generations.
- PayPal: “pending payment” page with SEO URLs. The pending payments page for PayPal pay upon invoice now also works correctly in shops with SEO URLs enabled.
- PayPal Express Checkout: no more duplicate addresses. The PayPal Express Checkout no longer creates a duplicated address in the customer account during the payment process.
Released: 23.06.2026
New in the shop
- Payment methods: placement-dependent display of icons and description texts. Icons and description texts of payment methods can now be displayed differently depending on the placement (for example checkout flow, footer).
- Checkout flow: automatic preselection of the shipping method on address change. When a customer changes their delivery address during checkout, the matching shipping method is preselected automatically.
- Checkout flow: automatic preselection of the payment method on address change. When a customer changes their address during checkout, the matching payment method is preselected automatically.
- REST API: loading product IDs without product data. The REST API can now, on request, deliver product IDs only.
- Variants: configurable display order of variant values. The order in which variant values are displayed within a variant group is now configurable.
- Order data: download link for vouchers. For orders with purchased vouchers, the download link of the voucher is now displayed directly in the order data.
- Product creation: inventory entry is created correctly. When creating new products, the associated inventory entry is now reliably created.
Released: 16.06.2026
New in the admin interface
- Manage stores and outlets graphically. Stores and outlets can now be created and managed directly in the admin interface via a graphical UI.
- Log manager: notification status and direct control of log groups. In the log manager overview, the notification status of each log group is now visible; log groups can be controlled directly from the overview.
- Log manager: time range filtering down to hours and minutes. The time range filter in the admin interface can now be set not only to the day, but down to hours and minutes.
- Log manager: time preselected in the manual log search. In the manual log search, the time is now preselected by default, saving an input step on every search.
- Log manager: resend error notification. If a notification email could not be delivered on an error, it can now be resent.
- Payment methods: switch to an offline payment method after a failed online payment. If an online payment method fails, the customer can now reliably complete the order with an offline payment method.
- Product import:
idon update no longer wrongly flagged as invalid. When updating products via the product import, theidfield is no longer wrongly reported as an error. - Vouchers: correct calculation of the VAT deduction. Vouchers with VAT deduction no longer produce an incorrect negative or positive VAT deduction.
- PayPal pay upon invoice with vouchers. An error with PayPal pay upon invoice in combination with vouchers has been fixed.
- PayPal pay upon invoice: PaymentId in the order data. With PayPal pay upon invoice, the PaymentId is now correctly transferred to the order data.
