Cart Quantity 0: Remove a Line Item Right in the Quantity Field
Description
Highlights
About the Extension
A customer is tidying up the basket. She selects the quantity, types a 0 and expects the line to disappear. That is how it works in every spreadsheet and in almost every other form she uses. Shopware refuses: the quantity field has a lower limit of one, the browser blocks the submit with a message nobody reads, and she goes hunting for the small remove button instead.
The problem
The remove button is there. On a phone it sits a few millimetres away from the minus button of the quantity stepper. Miss it, and you have changed the quantity instead of clearing the line, so you try again. Type a 0 instead, and the browser answers with a validation bubble that explains nothing and never even shows up in the ajax cart. None of this breaks the shop. It just makes the basket fiddly, and none of it ever shows up in a report.
The solution
This plugin makes the 0 reachable in the existing quantity field. The server renders the field with a lower limit of 0 and points the form at its own storefront route. If a 0 arrives there, Shopware removes the line item. Every other quantity takes the regular route, unchanged. Underneath the field the customer reads a short note: "Enter quantity 0 to remove this item."
What's in it for you
A second, bigger target for the same job. On a phone the quantity field is a far larger tap area than the little remove button next to it. A customer who already has the keypad open, because he was correcting a quantity anyway, stays right where he is.
No extra JavaScript in your storefront. The plugin ships no JS file of its own. Shopware does the submitting: the auto submit behaviour on the cart page and the ajax cart in the offcanvas. Your page weight stays exactly where it was.
Switchable per sales channel, in both directions. Turn it on for your consumer shop and leave your trade channel alone. The cart page and the ajax cart each have their own switch, and a channel with the plugin switched off behaves precisely as if it had never been installed.
A tidier basket without stranding anyone. You can shrink the remove button or hide it altogether. It only ever disappears on line items where the customer really can type the 0. A basket with no way to remove anything cannot happen.
Your templates stay yours. All four template extensions attach to the existing markup instead of replacing it. Changes made by other plugins in the same place keep working, and your theme gets no special treatment.
How the plugin works
The server decides, not the browser window. For every line in the basket the plugin asks whether it may be removed by entering 0. A line qualifies if it is a standalone product line item that Shopware itself reports as removable and stackable, has no child items and sits at the top level. If any of that is not true, everything stays at the default: minimum quantity in the field, remove button next to it.
When the 0 reaches the plugin's own route, the same conditions are checked a second time. A request assembled by hand does not get past them. After a successful removal the customer sees a short confirmation, which you can switch off per sales channel if you prefer a silent basket.
Typical use cases
Fashion and footwear on a phone. Customers put three sizes in the basket and throw two of them out before they order. That happens on a train, with a thumb, on a small screen. The quantity field is the friendlier target there.
Trade accounts with long order lists. A buyer works through thirty lines from top to bottom, corrects quantities and zeroes out the ones he no longer needs. He stays on the keyboard instead of switching between typing and clicking.
Shops where the ajax cart is the main stage. If your customers mostly edit the basket in the offcanvas, enable the 0 there and leave the cart page untouched. Or exactly the other way round.
Shipping that depends heavily on the address. Until a customer delivery address exists, Shopware can only apply the default shipping method, and a Royal Mail rate to a Highlands postcode is not the same as a DPD parcel across London. On request the plugin replaces that provisional amount with a note and a link to your shipping information page. The setting is off by default because it touches how you display prices.
Technical facts for your IT team
Shopware 6.7 (Composer constraint ~6.7.0), PHP 8.2 or newer, Symfony 7.
The plugin creates no database table of its own, ships no migration and adds no custom fields to core entities. Shopware's original tables stay untouched. Its six settings live in Shopware's own system configuration, separately per sales channel.
The plugin sends no data to external servers. It sets no cookies of its own and embeds no tracking. On GDPR: the only thing written to the log is a rejected attempt, recorded with the line item id, the line item type, the surface involved and the sales channel id, in a dedicated log channel. No customer data goes into the log.
On load: there is no cart processor, no event subscriber, no background job and no database query of its own. The plugin reads its own settings through Shopware's configuration service and nothing else. Its route is a POST endpoint for exactly one line item, and the basket recalculation stays entirely with Shopware.
All four storefront extensions use sw_extends and call the original markup. Labels ship in German, English and Dutch. Uninstalling leaves nothing behind: there is no table of its own, and Shopware clears the settings itself. If you choose to keep the data while uninstalling, the settings stay in place for a reinstall.
To be honest
This plugin works in the storefront only. If you run headless or have an app on the Store API, that client brings its own quantity logic and nothing changes there.
It also does not touch your quantity rules. A 0 means remove, not order zero of something. Line items for which Shopware renders no usable quantity field, such as digital downloads or an item with a single piece left in stock, keep their remove button and behave exactly as they do today. And if your theme has rewritten the quantity selector from scratch instead of extending it, the 0 will not reach it.
Try it on a staging shop before you switch it on live. Install, activate, set the switches, click through the basket once. It does not take longer than that.
Legal notice
We accept no liability for legal requirements. Please check the use of this plugin with a qualified legal advisor.
Details
- Available: English, German
- Latest update: 9 September 2026
- Publication date: 11 September 2026
- Version: 6.7.0
- Category: Checkout / Cart process
Resources
Reviews (0)
About the Extension Partner
BuI Hinsche GmbH
Partner Status
-
Shopware
Bronze Partner -
Shopware
Premium Extension Partner
Details
- Ø-Rating: 4.3
- Partner since: 2014
- Extensions: 93
- Certifications: 2
Support
- Based in: Germany
- Speaks: German, English
- Response time: Quickly