Skip to content

Configuration reference

All settings are on the standard extension configuration page: Extensions > My extensions, then Configure on Order Editing — Self-Service for Customers. Every setting can be set for all sales channels or for a single sales channel, using the sales channel selector at the top of the page. There is no separate settings module.

The tables below are generated from the plugin's config.xml, the same file the configuration page is built from. The descriptions are the help texts shown next to each setting.

Settings

Edit window

SettingTypeDefaultDescription
holdOrder — Let customers edit their ordersbooltrueThe main switch. While it is on, a new order waits instead of going straight to fulfilment. Turn it off and every order still waiting is released.
windowMinutes — Window length (minutes)int30How long customers can edit after they order — most shops use 30 to 120 minutes. Shortening it ends windows that are already past the new length.
closeOnStateChange — End the window when the order status changesbooltrueEditing stops the moment anyone moves the order forward, even if there is time left.
eligibilityRuleIds — Only orders matching these rules can be changedmulti-select (rule)Leave empty for every order. Otherwise an order must match all chosen rules when it is placed.

Safety rules

SettingTypeDefaultDescription
lockAfterInvoice — Stop editing once an invoice existsbooltrueAn issued invoice has to keep matching what you sold; a later change would mean a cancellation invoice and a new one. Leave this on unless you handle that yourself.
enforceStock — Check stock on every changebooltrueFor products marked “Clearance sale”, a customer cannot raise a quantity past your stock. Other products follow the same limits as your checkout.
lockPersonalisedItems — Lock personalised itemsbooltrueItems with an engraving, an uploaded file or free text cannot be changed.
allowTotalReduction — Allow changes that lower the totalboolfalseOnly matters once an order is paid: you would owe the difference back and refund it yourself. Unpaid orders are never affected.
taxBasisChange — When a new address changes the taxsingle-selectblockSome addresses fall under a different tax rate. Blocking keeps the order exactly as it was sold; recalculating prices it for the new address and changes what you are owed. Options: block (Don't allow the change), reprice (Recalculate for the new address).
shippingChange — When a change affects the shipping costssingle-selectkeepKeep: shipping stays as sold, like in your admin. Recalculate: priced for the changed order like your checkout. Options: keep (Keep the shipping the order was sold with), requote (Recalculate the way checkout does).

Allowed changes

SettingTypeDefaultDescription
allowAddress — Delivery and billing addressbooltrueOnly the signed-in customer who placed the order can change an address.
allowVariantSwap — Switch to another variantbooltrueLets a customer move a line to another variant of the same product, such as another size, capacity or flavour, at that variant's price. They cannot choose a different product. Personalised items stay locked.
allowQuantityChange — QuantitybooltrueRaising a quantity is always allowed. Lowering one follows your setting for changes that lower the total.
allowLineRemoval — Remove an itemboolfalseLets a customer remove one item instead of cancelling the whole order.
allowShippingMethodChange — Change the shipping methodboolfalseCustomers choose from the shipping methods your checkout offers, at checkout prices.

Two settings are fixed for an order when its window opens: When a new address changes the tax and When a change affects the shipping costs. Changing them affects windows that open afterwards.

Window length (minutes): lengthening it does not extend windows that are already open. To give one order more time, use Extend window on the order (see Give a customer more time). A value of 0 or less opens no windows at all.

Status card

At the top of the Edit window card, the configuration page checks your shop and shows a warning only when something needs attention:

WarningMeaningWhat to do
"An invoice is issued as soon as an order is placed, …"An active Flow on Checkout / Order / Placed (checkout.order.placed) creates an invoice, cancellation invoice or credit note. Every window closes as soon as it opens. The Flows are named.Fix a Flow that closes every window
"With editing on, every order now enters or leaves Open, …"An active Flow starts when an order enters or leaves Open. With the hold, that happens for every order. The Flows are named.Connect your ERP and the "On hold" status
"These rules can no longer be checked, …"A rule chosen in Only orders matching these rules can be changed is invalid and matches no order. The rules are named.Offer editing only for some orders

Order status

StatusTechnical nameGerman
On holdssd_heldZurückgehalten

Transitions:

ActionFromToUsed by
ssd_holdOpenOn holdThe plugin, when a window opens
reopenOn holdOpenThe release: background task, Release now, or by hand
processOn holdIn progressBy hand, a Flow or an ERP. Ends the window if End the window when the order status changes is on.
cancelOn holdCancelledBy hand, a Flow or the customer's own cancellation. Always ends the window.

On a shop that lets customers cancel orders themselves, a held order can still be cancelled from the customer's order list.

Background task

Scheduled taskIntervalWhat it does
ssd_order_editing.release_held_orders300 secondsCloses every window whose deadline has passed or that the current settings no longer allow, and releases the order. Also releases any order that is on hold without an open window.

Deactivating the plugin closes all open windows and releases all held orders at once.

Flow Builder triggers

TriggerShown in the Flow list asVariablesInstalled Flow and recipient
ssd_order_editing.window.openedOrder Editing: Edit window openedorder, closesAt, windowMinutes, guestOrderEdit window opened, to the customer
ssd_order_editing.change.committedOrder Editing: Order change committedorder, changes, amountDelta, guestOrderOrder change committed, to the customer
ssd_order_editing.refund.dueOrder Editing: Refund due after a changeorder, refundAmountRefund due after order change, to the shop's administrator users

Each installed Flow sends the mail template of the same name, available in English and German. A Flow is only installed if no Flow for that trigger exists yet. A Flow written by an installation has to be indexed once before Shopware runs it; see Adjust the mails for the ways to do that.

The plugin also adds the status On hold to the order status triggers, so Flows can react when an order enters or leaves it.

Permissions

PermissionWhereGrants
Order editing, ViewSettings > Users & permissions > Roles, section Ordersssd_order_edit_log:read, ssd_order_edit_session:read, order:read
Orders, ViewSettings > Users & permissions > Roles, section OrdersAlso gets ssd_order_edit_log:read and ssd_order_edit_session:read. Roles saved before installation must be saved once more.
Orders, EditSettings > Users & permissions > Roles, section OrdersNeeded for Extend window (order:update) and Release now

See Give staff access to the Changes tab.

Change log entries

Each entry on the Changes tab is stored in ssd_order_edit_log.

Stored actionShown as
window_openWindow opened (Open → On hold)
window_closeWindow closed, with the reason
window_extendedWindow extended, with the old and new closing time
committedOne row per confirmed change: Variant, Quantity, Item removed, Address, Shipping method, Additional information, plus rows for Discount, Credit, Shipping, VAT, Tax and Rounding that followed
refusedRefused, with the reason
refund_dueRefund due, with the amount
payment_movedPayment changed
SourceShown as
shopperShopper
adminMerchant
systemSystem

Rows for amounts that moved as a consequence of a change show Automatic as the source.

Data

EntityPurpose
ssd_order_edit_sessionOne row per edit window: order, state (open, expired, discarded), closing time, extension, the customer's staged changes, and the tax and shipping settings in force for this window
ssd_order_edit_logThe change log: action, before and after values, amount, order total, source and refusal reason

Uninstalling without keeping data deletes both tables. Uninstalling always puts orders still on hold back to Open. Mail templates, Flows and the On hold status stay.

Storefront pages

PathPage
/account/order/{orderId}/editChange your order
/account/order/{orderId}/edit/reviewWhat changes (review and confirm)
/account/order/{orderId}/edit/line/{lineItemId}/variantChange options (opens as a dialog from the overview)
/account/order/{orderId}/edit/address/{target}Change the delivery address / Change the billing address (opens as a dialog from the overview)

The entry points are the order confirmation page, the order list in the customer account (a banner and a Change order entry in the order's menu), your shop's guest order page, and the link in the window mail.

Store API

For headless storefronts, the same actions are available through the Store API:

PathPurpose
/store-api/order-editing/sessionLoad the current changes
/store-api/order-editing/session/openOpen the customer's changes for an order
/store-api/order-editing/session/commitConfirm the changes
/store-api/order-editing/session/discardDiscard the changes
/store-api/order-editing/line/variantLoad the variant options of a line
/store-api/order-editing/line/variant/stageStage a variant change
/store-api/order-editing/line/quantity/stageStage a quantity change
/store-api/order-editing/line/remove/stageStage the removal of a line
/store-api/order-editing/address/stageStage an address change (only the customer who owns the order; a guest counts once they have confirmed their details on the guest order page)
/store-api/order-editing/shipping-methodLoad the shipping methods on offer
/store-api/order-editing/shipping-method/stageStage a shipping method change
/store-api/order-editing/customer-comment/stageStage an order comment change

Every route checks that the order belongs to the logged-in customer, or that a guest presents the order's deep link code together with the mail address and postcode.

Administration API

PathPurposePermission
POST /api/_action/ssd-order-editing/order/{orderId}/window/extendExtends an open window by the window lengthorder:update

Shops with several web servers

Changes to one order are serialised with a lock. The lock uses your shop's lock store (LOCK_DSN). By default that store is local to each server. If your shop runs on more than one web server, point LOCK_DSN to a shared store, such as Redis or the database, so that all servers use the same lock.

Your Vision. Signed, Sealed, Delivered.