Quickbuy Quick Order | Fast B2B Order Form to Buy by SKU or CSV Upload
Description
Highlights
- Trade customers order by product number instead of browsing categories
- One list, one click: every line goes into the cart together
- Upload order lists as CSV, problem lines are flagged before anything is ordered
- Turn any category into an order form with quantities in your layouts
- Switch it on per sales channel and customer group: B2B yes, B2C no
Features
- Dedicated Quickbuy page at /quickbuy, reached through a button in the header
- Live search with suggestions after a configurable number of characters (default: 3)
- Three search modes: normal search, complete product numbers, or product and manufacturer numbers
- CSV upload by drag and drop or file picker, up to 500 lines, with a sample file to download
- Order table with image, name, product number, variant, price and quantity per line
- "Add all to shopping cart" button takes over all lines at once
- Variant accordion in the search, further variants linked to the product page
- Quantity selection as a dropdown or a number field, your choice
- Tier prices with "from" and unit prices right in the list
- Shopping Experience block "Quickbuy" puts the quick order form on any page
- Shopping Experience block "Quickbuy Product Listing" shows a category as an order list
- Red and yellow flags for lines that cannot be ordered or were adjusted, with a summary
- Enable per sales channel, exclude customer groups, switch CSV upload and export separately
- Respects packing units when our packing units plugin is active
- Download the cart and past orders as CSV or open them straight in Quickbuy
About the Extension
Your trade customer is holding last month's delivery note. Twelve lines, each with a product number. In your shop they search for every item, open the product page, set the quantity, add it to the cart and start again. By line four they pick up the phone instead.
The problem
Online shops are built for browsing: category, filters, product page, cart. Customers who already know what they need get nothing from that. In B2B the same products are ordered again and again, and every click through the catalogue costs your customers time. So the orders arrive by phone, email or as a typed list, and your sales office keys them in by hand.
The solution
Quickbuy gives your customers a page of their own where they find products with a live search and collect them in a table. Type a name or number, pick the hit, choose the quantity, move on to the next line. Or upload the whole list as a CSV file. At the end one click on "Add all to shopping cart" puts the whole list into the cart. No page changes in between.
What's in it for you
Fewer orders by phone and email. Customers who know their product numbers place the order themselves. Your team stops retyping delivery notes.
Faster repeat orders. An order with ten lines becomes a simple rhythm of typing, clicking and setting quantities. The page stays the same until everything is in the cart.
Order lists straight from Excel. Your customer uploads the list as CSV. Anything that can't be ordered gets flagged before it reaches the cart.
Variants without the detour. When the search hits a variant, the other variants of that product fold out right below it. Your customer picks size or colour there and never has to open the product page.
Order forms inside your layouts. The "Quickbuy Product Listing" block turns a category into an order list in your Shopping Experiences: every line with price and quantity field, one button for all lines below. Handy for consumables that are reordered all the time.
Only where it belongs. You switch Quickbuy on or off per sales channel and hide it from individual customer groups. Your trade accounts see it, your retail customers don't.
How the plugin works
A Quickbuy button appears in the header and leads to the page /quickbuy. That page holds a search field. Once a minimum number of characters is typed (default: 3), the plugin shows matching products with image and price. The result list works with the mouse or with the arrow keys and Enter.
You decide what the search looks for:
- Normal search: uses your shop's product search, for example name and product number
- Complete product numbers only
- Complete product or manufacturer numbers only
Every selected hit becomes a row in the order table: image, name, product number, variant, price and quantity. Tier prices show with "from", unit prices below. Customers set the quantity in a dropdown or a number field, depending on your setting. The cross at the end of a row removes it.
Below the search, the "Upload order list (CSV)" area folds out. Drop or choose a file: product or manufacturer number in column 1, quantity in column 2, separated by semicolon, comma or tab, header row optional. Duplicates are merged, a sample file is ready to download.
Every line lands in the order table and stays editable. Red lines are not ordered: unknown, inactive or sold-out products, parent products with variants and price on request. Yellow lines are ordered with a note, such as a quantity adjusted to stock, minimum, maximum or packing unit.
Below "Go to checkout" and "Submit order" sits "Download cart as CSV". Each order in the customer account offers "Download as Quickbuy CSV" and "Open in Quickbuy". The file uses the upload format, ready to edit in Excel and upload again. Upload and export switch off separately per sales channel.
For Shopping Experiences the plugin adds two blocks. "Quickbuy" places the complete quick order form, CSV upload included, on any page, "Quickbuy Product Listing" shows a category as an order list.
If you run our packing units plugin, the quantity selection only offers the permitted steps. With our price on request plugin, those products can't reach the cart through Quickbuy. Both are optional, Quickbuy works on its own.
Typical use cases
- Electrical and plumbing merchants: Your installers order by manufacturer number. You set the search mode to complete product or manufacturer numbers, they type the numbers one after another and have the order in the cart within a few minutes.
- Catering supplies: A contract caterer orders the same 20 items every week. A Shopping Experience with the "Quickbuy Product Listing" block shows the category "Weekly essentials" as a list, and the kitchen only fills in the quantities.
- Building services contractor: The materials list for a job goes up from Excel as CSV, missing items show at once.
- Mixed B2B and B2C shop: Quickbuy is active in your trade sales channel and switched off in your retail one. Or you exclude the standard customer group, so only trade accounts see the button.
Technical facts for your IT team
- Shopware 6.7 (from 6.7.0), PHP 8.2 or newer
- No custom database tables, no custom fields. Core tables stay untouched, settings live in the system configuration.
- The plugin sends no data to external servers and stores no personal data. Uploaded CSV files are not kept.
- CSV upload: up to 500 lines and 1 MB per file, UTF-8 or Windows-1252, resolved with one product search and no database writes.
- CSV export: product lines only, orders only for the logged-in customer who placed them, cells starting with =, +, - or @ neutralised against formula injection.
- Store API: POST /store-api/swp-quick-buy/resolve-lines runs the same checks as the upload.
- The Quickbuy page carries the robots tag "noindex, nofollow" and stays out of search engines.
- Performance: the search loads at most 50 sibling variants per request. On Shopping Experience pages, detecting the listing block costs one extra query.
- Every setting works per sales channel. Texts ship in German, English and Dutch.
- Uninstall: if you choose to delete the plugin data, the plugin removes its configuration completely. Products, categories and orders stay as they are.
To be honest
Quickbuy is built for customers who know what they want to order. It doesn't read .xlsx files directly, and Excel can drop leading zeros or mangle long numbers when saving as CSV. There are no saved order lists in the shop, the exported file replaces them. A file holds up to 500 lines, guests get no order export, and without packing units the quantity selection goes up to 99 per searched row (larger CSV quantities are kept). The interface runs in the Shopware Storefront. If you run a Composable Frontend, you build it there yourself. Try it with your own product numbers and you'll quickly see whether it suits your customers.
Legal notice
We accept no liability for legal requirements. Please check the use of this plugin with a qualified legal advisor.
Your trade customer is holding last month's delivery note. Twelve lines, each with a product number. In your shop they search for every item, open the product page, set the quantity, add it to the cart and start again. By line four they pick up the phone instead.
The problem
Online shops are built for browsing: category, filters, product page, cart. Customers who already know what they need get nothing from that. In B2B the same products are ordered again and again, and every click through the catalogue costs your customers time. So the orders arrive by phone, email or as a typed list, and your sales office keys them in by hand.
The solution
Quickbuy gives your customers a page of their own where they find products with a live search and collect them in a table. Type a name or number, pick the hit, choose the quantity, move on to the next line. Or upload the whole list as a CSV file. At the end one click on "Add all to shopping cart" puts the whole list into the cart. No page changes in between.
What's in it for you
Fewer orders by phone and email. Customers who know their product numbers place the order themselves. Your team stops retyping delivery notes.
Faster repeat orders. An order with ten lines becomes a simple rhythm of typing, clicking and setting quantities. The page stays the same until everything is in the cart.
Order lists straight from Excel. Your customer uploads the list as CSV. Anything that can't be ordered gets flagged before it reaches the cart.
Variants without the detour. When the search hits a variant, the other variants of that product fold out right below it. Your customer picks size or colour there and never has to open the product page.
Order forms inside your layouts. The "Quickbuy Product Listing" block turns a category into an order list in your Shopping Experiences: every line with price and quantity field, one button for all lines below. Handy for consumables that are reordered all the time.
Only where it belongs. You switch Quickbuy on or off per sales channel and hide it from individual customer groups. Your trade accounts see it, your retail customers don't.
How the plugin works
A Quickbuy button appears in the header and leads to the page /quickbuy. That page holds a search field. Once a minimum number of characters is typed (default: 3), the plugin shows matching products with image and price. The result list works with the mouse or with the arrow keys and Enter.
You decide what the search looks for:
- Normal search: uses your shop's product search, for example name and product number
- Complete product numbers only
- Complete product or manufacturer numbers only
Every selected hit becomes a row in the order table: image, name, product number, variant, price and quantity. Tier prices show with "from", unit prices below. Customers set the quantity in a dropdown or a number field, depending on your setting. The cross at the end of a row removes it.
Below the search, the "Upload order list (CSV)" area folds out. Drop or choose a file: product or manufacturer number in column 1, quantity in column 2, separated by semicolon, comma or tab, header row optional. Duplicates are merged, a sample file is ready to download.
Every line lands in the order table and stays editable. Red lines are not ordered: unknown, inactive or sold-out products, parent products with variants and price on request. Yellow lines are ordered with a note, such as a quantity adjusted to stock, minimum, maximum or packing unit.
Below "Go to checkout" and "Submit order" sits "Download cart as CSV". Each order in the customer account offers "Download as Quickbuy CSV" and "Open in Quickbuy". The file uses the upload format, ready to edit in Excel and upload again. Upload and export switch off separately per sales channel.
For Shopping Experiences the plugin adds two blocks. "Quickbuy" places the complete quick order form, CSV upload included, on any page, "Quickbuy Product Listing" shows a category as an order list.
If you run our packing units plugin, the quantity selection only offers the permitted steps. With our price on request plugin, those products can't reach the cart through Quickbuy. Both are optional, Quickbuy works on its own.
Typical use cases
- Electrical and plumbing merchants: Your installers order by manufacturer number. You set the search mode to complete product or manufacturer numbers, they type the numbers one after another and have the order in the cart within a few minutes.
- Catering supplies: A contract caterer orders the same 20 items every week. A Shopping Experience with the "Quickbuy Product Listing" block shows the category "Weekly essentials" as a list, and the kitchen only fills in the quantities.
- Building services contractor: The materials list for a job goes up from Excel as CSV, missing items show at once.
- Mixed B2B and B2C shop: Quickbuy is active in your trade sales channel and switched off in your retail one. Or you exclude the standard customer group, so only trade accounts see the button.
Technical facts for your IT team
- Shopware 6.7 (from 6.7.0), PHP 8.2 or newer
- No custom database tables, no custom fields. Core tables stay untouched, settings live in the system configuration.
- The plugin sends no data to external servers and stores no personal data. Uploaded CSV files are not kept.
- CSV upload: up to 500 lines and 1 MB per file, UTF-8 or Windows-1252, resolved with one product search and no database writes.
- CSV export: product lines only, orders only for the logged-in customer who placed them, cells starting with =, +, - or @ neutralised against formula injection.
- Store API: POST /store-api/swp-quick-buy/resolve-lines runs the same checks as the upload.
- The Quickbuy page carries the robots tag "noindex, nofollow" and stays out of search engines.
- Performance: the search loads at most 50 sibling variants per request. On Shopping Experience pages, detecting the listing block costs one extra query.
- Every setting works per sales channel. Texts ship in German, English and Dutch.
- Uninstall: if you choose to delete the plugin data, the plugin removes its configuration completely. Products, categories and orders stay as they are.
To be honest
Quickbuy is built for customers who know what they want to order. It doesn't read .xlsx files directly, and Excel can drop leading zeros or mangle long numbers when saving as CSV. There are no saved order lists in the shop, the exported file replaces them. A file holds up to 500 lines, guests get no order export, and without packing units the quantity selection goes up to 99 per searched row (larger CSV quantities are kept). The interface runs in the Shopware Storefront. If you run a Composable Frontend, you build it there yourself. Try it with your own product numbers and you'll quickly see whether it suits your customers.
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: 7 October 2026
- Publication date: 16 April 2020
- Version: 6.7.3
- Category: B2B extensions
Resources
Reviews (0)
About the Extension Partner
BuI Hinsche GmbH
Partner Status
-
Shopware
Bronze Partner -
Shopware
Premium Extension Partner
Details
-
Ø-Rating:
4.3
Average rating of 4.3 out of 5 stars
- Partner since: 2014
- Extensions: 99
- Certifications: 2
Support
- Based in: Germany
- Speaks: German, English
- Response time: Very quickly
- Frontend:
- Go to demo
- Frontend:
- Go to demo
6.7.3 6.7.0.0 - 6.7.15.1
- added: CSV upload on the Quickbuy page and in the "Quickbuy" CMS block. Customers upload a file with product number and quantity (separator ;, , or tab, header row optional, UTF-8 or Windows-1252 as exported by Excel, up to 500 lines and 1 MB); every line lands in the order table, where quantities can be corrected and lines removed before "Add all to shopping cart". A sample file (quickbuy-template.csv, name in the storefront language) can be downloaded next to the upload field.
- added: lines that cannot be ordered as requested are marked in the table: product not found, deleted or inactive; sold out (clearance sale without stock); main product with variants; price on request (red, not ordered) as well as quantity cut to the available clearance stock, fewer items in stock than requested, and quantity corrected to minimum/maximum purchase or packing unit (yellow, ordered). A summary above the table shows how many lines were taken over and how many need attention.
- added: new setting "Allow CSV upload on the quick order page" (default: on) per sales channel.
- added: Store API route POST /store-api/swp-quick-buy/resolve-lines resolves product numbers and quantities with the same checks, so headless frontends can build the upload themselves.
- added: CSV export on the cart and the order confirmation page (secondary button "Download cart as CSV" below "Proceed to checkout" resp. below the order button, outside the order form) and in the context menu of every order in the customer account ("Download as Quickbuy CSV", file name in the storefront language, e.g. quickbuy-order-.csv, schnellkauf-bestellung-… in German). The file uses the upload format (product number and quantity first, then name, unit and total price as shown in the shop), so customers edit it in Excel and upload it again on the Quickbuy page. Only product lines are exported; cells starting with =, +, - or @ are escaped against spreadsheet formula injection. Orders can only be exported by the customer who placed them.
- added: "Open in Quickbuy" in the order context menu loads the order lines straight into the Quickbuy table with the same markings as a CSV upload.
- added: new setting "Allow CSV export from cart and orders" (default: on) per sales channel. Settings that were never saved count as on, as the configuration shows them.
- improved: product images in the Quickbuy table show at a fixed 64 × 64 px instead of one twelfth of the row width, for searched and uploaded lines alike.
- fixed: CSV upload and "Open in Quickbuy" find products by manufacturer number even when it belongs to a parent product with many variants, also for many such lines in one file (up to 10,000 matching products and variants per file); other lines of the same file are no longer wrongly marked as "not found". For a shared manufacturer number an orderable variant wins over the parent product.
- fixed: if the server returns no result for a CSV upload or when loading an order (e.g. the feature was switched off in the sales channel meanwhile, or a server error), an understandable error message appears instead of no reaction at all.
- fixed: error handling as the Shopware store review requires: the documentation button reports a failed load with an admin notification instead of hiding the error; the listing subscriber no longer wraps its whole handler in try/catch (\Throwable) — failures of the optional packing units plugin stay caught and logged per product in the loader, everything else surfaces.
- fixed: the Quickbuy page is no longer wider than the screen on smartphones and tablets (no more sideways scrolling).
- changed: service definitions moved from services.xml to services.yaml (same services, arguments and tags); Symfony deprecates the XML format, it is dropped with Symfony 8 / Shopware 6.8.
- changed: sales channel switch, customer group exclusion and price-on-request marking moved into a shared service used by the storefront routes and the Store API route.
- changed: storefront styles flattened and bound to classes instead of element types (no visible change, easier to adapt in a theme).
6.7.2 6.7.0.0 - 6.7.15.1
- fixed: PackingUnitsLoaderService gets the PackingUnitsCartProcessor of SwpPackingUnitsSix via DI (on-invalid="null") and addresses it without any compile-time class reference. Without SwpPackingUnitsSix the plugin runs unchanged and passes Shopware's store analysis; the manual fallback construction was removed.
- performance: SalesChannelCmsPageDecorator detects the Quickbuy listing block with one id-only cms_block query (limit 1) instead of reloading the whole page with sections and blocks before every CMS page; the caller's criteria stay untouched.
- performance: the search layer loads at most 50 sibling variants per request; the accordion shows the real number of variants and links the remainder ("More variants (n) on the product page") to the product page. Previously an item with hundreds of variants loaded all of them including options, prices and packing units.
- fixed: packing-unit data is attached as ArrayStruct extensions (packingUnitsCalculatedSteps, packingUnitsParams, same names and shape as SwpPackingUnitsSix) instead of raw arrays or JSON strings; other plugins calling getExtension() no longer run into a TypeError. The search layer renders the steps with |json_encode.
- fixed: the number search (article/manufacturer number mode) now applies packing units as well.
- fixed: storefront markup uses Bootstrap 5 classes (text-end, ms-auto, g-0, no input-group-append) and hides buy buttons and the template row with d-none instead of inline styles.
- fixed: errors while enriching listings are logged to the plugin log channel instead of breaking the category page.
- improved: the Quickbuy CMS blocks show a language-neutral schematic in the block library and in the Shopping Experiences editor (search bar, rows with image placeholder, quantity field and button as shapes, admin colour tokens, dark-mode ready) instead of old English screenshots with demo product names; the preview images (formerly about 440 KB of inline Base64 data) and unused legacy files under public/static were removed.
- improved: wording of the configuration texts in all three languages.
- changed: the switch "Activate plugin for this channel" (channelActive) is replaced by the standard switch active ("Enable plugin for this sales channel"), first field of the configuration, default: on. A migration carries every existing value (global and per sales channel) over to active and removes the old key. Note: shops without any stored value for the old switch (it was stored on install with "off") get the new default "on" after the update.
- changed: the switch active and the excluded customer groups now also apply to the search endpoints, the Quickbuy CMS blocks, the packing-unit calculation on listings and the price-on-request filter of Quickbuy listings.
- security: product name, number and variant in the Quickbuy row are built via DOM API (no HTML parsing of product data); variant texts in search results and listing boxes are rendered with Twig auto-escaping (no |raw).
- fixed: the Quickbuy listing no longer overrides the core block element_product_listing_box, so regular category listings and extensions of other plugins stay unchanged.
- fixed: Quickbuy CMS blocks are standalone block templates instead of an ineffective override of cms-block-image-text.
- fixed: help text of "Deactivate for the following customer groups" referred to "price on request" by mistake.
- improved: variants of all search hits are loaded with one query instead of one query per product.
- improved: search endpoints return HTTP 204 instead of an empty 200 response (plugin off, customer group excluded, empty search term — the live search answered an empty term with HTTP 400 before); storefront JS uses fetch and native DOM APIs instead of the deprecated HttpClient, DomAccess, Iterator and ArrowNavigationHelper.
- changed: routes are registered via routes.php (attribute routing) instead of the deprecated routes.xml.
- changed: documentation button in the plugin configuration reads the documentation link from the plugin metadata in the language of the administration; new plugin icon (256×256).
- changed: storefront plugin names SwpQuickBuySixPlugin/SwpQuickBuySixListingPlugin, admin component names swp-cms-block-quick-buy(-listing)/swp-cms-preview-quick-buy(-listing) with vendor prefix.
- changed: compatible with Shopware 6.7.0 and later 6.7 patch releases (~6.7.0), PHP 8.2+.
6.7.1 6.7.8.0 - 6.7.15.1
- fixed: PackingUnitsLoaderService is now wired via DI with the real PackingUnitsCartProcessor (including its logger) and falls back to manual construction only when SwpPackingUnitsSix is not installed. Resolves "Too few arguments to function PackingUnitsCartProcessor::__construct()".
- fixed: PackingUnitsLoaderService now sets both packingUnitsCalculatedSteps and packingUnitsParams extensions on listing products, matching the data that Detail and CMS Buy-Box already provide. Listing templates that read packingUnitsParams.minPurchase etc. now work consistently.
- fixed: removed misplaced |trans filter on the customer-group UUID in box-standard.html.twig that produced "Missing snippet" warnings in the log.
- improved: quickbuy quantity input (non-dropdown mode) now uses min/step/value derived from the configured packing units, so users can no longer enter quantities that the cart processor would otherwise round up server-side.
- performance: SalesChannelCmsPageDecorator no longer pollutes the caller's criteria with eager-loads, drops unnecessary slots/backgroundMedia associations, and short-circuits as soon as the first quick-buy listing block is detected.
- tests: added Integration, Performance and Security suites; extracted normalize-steps.helper.js for Jest coverage.
6.07.00 6.7.0.0 - 6.7.15.1
adjustment to Shopware 6.7.0.0
6.06.00 6.6.0.2 - 6.6.10.29
adjustment to Shopware 6.6.0.2
6.05.01 6.5.5.0 - 6.5.8.19
adjustment to Shopware 6.5.5.0
6.05.00 6.5.0.0 - 6.5.8.19
adjustment to Shopware-version 6.5.0.0
6.04.05 6.4.14.0 - 6.4.20.2
design improvement mobile
6.04.04 6.4.14.0
Adaptation to customer group-dependent packaging units - these are already taken into account during the quick purchase and not only in the shopping cart.
6.04.03 6.4.13.0
adaptation to price on request
6.04.02 6.4.8.0 - 6.4.12.0
new possibilities for presentation and use as a shopping experience created
6.04.01 6.4.7.0
variant designation and article number are output with
6.04.00 6.4.0.0 - 6.4.6.1
adjustment to Shopware 6.4.0.0
6.00.02 6.3.0.0 - 6.3.5.4
- bugfix faulty display after search query
- version release adapted
6.00.01 6.2.0 - 6.2.3
release for versions from Shopware 6.2.x on stored
6.00.00 6.1.4 - 6.2.3
first release for shopware 6