Creating and Managing Products
Product Types Overview
The difference between simple, configurable, bundle, grouped and virtual products.
Magento supports several product types – which one you pick depends on how the product should behave in the store:
- Simple Product: the standard case – one item, one SKU, one price, one stock level. The right choice for the vast majority of products – and also the building block for the more complex types below.
- Configurable Product: a "parent" product with variants (e.g. size, color) that are each their own Simple Products behind the scenes. Customers pick the desired variant on the product page via dropdowns or color/pattern swatches; only then does the order get linked to the concrete SKU.
- Grouped Product: several independent Simple Products displayed together on ONE page, each with its own quantity field – e.g. a set of parts that also remain purchasable separately. Unlike a bundle, a grouped product has no price of its own; it just sums up the selected individual prices.
- Bundle Product: a product the customer configures themselves from multiple option groups (e.g. a computer with selectable CPU, RAM, hard drive). Each option can carry its own surcharge, be optional or required, and be shown as a dropdown, radio button, checkbox, or multi-select.
- Virtual Product: a product with no shipping involved at all – e.g. a service, an extended warranty, or a consultation slot. Checkout automatically skips every shipping step for this line item.
- Downloadable Product: a digital product with a file download after purchase (e.g. an e-book, software, a sample file). Files are uploaded or linked under the Downloadable Information tab, including a download limit (how many times a customer may download the file).
Practical tip: you choose the product type right when starting under Add Product, via the dropdown in the top right, before you start filling anything in – changing the type afterwards is only possible in a very limited way and usually not advisable in practice; when in doubt, create a new product with the correct type instead.
Configurable Product: generating variants via the wizard
Instead of creating every variant one by one, use the Create Configurations button on the Configurations tab. The wizard walks you through: first selecting the configuring attributes (these must have Global scope and have Use to Create Configurable Product set to "Yes" on the attribute itself), then choosing the desired values per attribute (e.g. which colors, which sizes), and finally assigning images, price and stock per generated variant. Only after finishing the wizard are the individual simple products actually created and linked in the background.
Bundle Product: pricing logic and shipping
For a bundle, the Price Type field determines whether the final price is calculated dynamically from the selected options ("Dynamic") or stays a fixed total price regardless of the selection ("Fixed"). The Shipment Type field decides whether the included items are treated as one combined line ("Together") or as separate shipping items ("Separately") in checkout and the order. On the Bundle Items tab, you set whether each option group is Required, and for each assigned product a Default Quantity plus optionally User Defined Quantity if the customer should be allowed to adjust the amount themselves.
Downloadable Product: samples and shareability
The Downloadable Information tab has two separate sections: Samples for free previews any visitor can access without buying, and Links for the actual paid files. For each link you set Number of Downloads (0 = unlimited) and Is Shareable, which controls whether the same download link still works after the customer logs in again or on a different device.
Managing Categories
Attributes and Attribute Sets
Product Images and Media
Upload images, assign roles (base, small, thumbnail) and set the image order.
On the product form you'll find the Images and Videos tab. Upload one or more images there via drag and drop, or click the upload button to pick files through the classic file dialog. The common formats JPEG, PNG and WEBP are supported.
Image roles
- Base Image: the main image on the product detail page.
- Small Image: used in product listings and search results.
- Thumbnail: a small preview, e.g. in the cart or in recommendation widgets.
- Swatch Image: only relevant for configurable products with visual attributes (e.g. color swatches), shown as a small selectable icon next to the attribute name.
A single image file can carry several of these roles at once (common practice: the same image as base, small AND thumbnail).
Alt text and order
Click an uploaded image to assign it the desired roles and to add alt text – required for accessibility (screen readers) and a relevant factor for Google image search. Drag and drop within the image overview also lets you set the order images appear in on the product page; the first image in the list automatically becomes the default preview image.
Adding videos
Use Add Video in the same tab to embed a YouTube or Vimeo video as an additional media item, which then appears between the product images in the gallery.
Image sizes and performance
Where possible, upload images at a sensible resolution already (commonly 1500–2000px on the long edge for the main image) – Magento automatically generates the various intermediate sizes it needs, but an unnecessarily oversized source image slows down both the upload and later static content deployments.
Practical tip: for multiple products with identical images (e.g. variants), images can be uploaded efficiently in bulk via Product Import (see the "Product Import and Export" chapter) using fixed filenames, instead of assigning each image individually in the backend.
Configuring placeholder images
If a product has no image, Magento shows a generic placeholder by default. Under Stores > Configuration > Catalog > Catalog > Product Image Placeholders you can upload your own placeholder image matching your theme instead – separately for each image type (Base, Small, Thumbnail, Swatch, etc.), so even incompletely maintained products look consistent.
Hiding individual images
Hovering over an uploaded image reveals, alongside the role checkboxes, the Hide from Product Page option. This keeps the image stored in the product's media gallery (e.g. still usable as a swatch image) while excluding it from the regular image gallery on the product detail page.
Store-view-specific images
Using the store view switcher in the top left of the product form, the Images and Videos tab can also be edited per store view. This lets you, for example, set a different main image for the English store view (e.g. with English packaging text) without affecting the default image used for all other store views.
Inventory and Stock
Manage stock, control availability, and understand the basics of Multi Source Inventory (MSI).
Inventory management is on the product form under Quantity near the top, and in more detail under Advanced Inventory (a link right next to the Qty field).
The most important values in the main form
- Qty: the currently available quantity.
- Stock Status: "In Stock" or "Out of Stock" – can override the quantity, e.g. to temporarily block a product despite remaining stock.
Advanced Inventory in detail
- Minimum/Maximum Qty Allowed in Shopping Cart: minimum and maximum order quantity per order.
- Qty Uses Decimals: enable when selling in partial units (e.g. by the meter, by weight).
- Backorders: whether customers can still order when stock is at 0 ("No Backorders", "Allow Qty Below 0" with or without customer notification).
- Notify for Quantity Below: the stock level at which the product shows up in the "Low Stock" report (see the "Product Reports" chapter) and on the dashboard.
- Enable Qty Increments: forces customers to order only in fixed steps (e.g. always in packs of six).
Multi Source Inventory (MSI)
Since Magento 2.3 there is Multi Source Inventory, managed under Stores > Inventory:
- Sources represent physical stock locations (e.g. main warehouse, returns warehouse, a physical store) with their own address – relevant for shipping cost calculation and delivery time display.
- Stocks group one or more sources into a logical unit and are in turn assigned to specific websites – a product never "belongs" directly to a source; instead its stock is maintained per source and summed per stock.
The total stock shown on the storefront for a product is the sum across every source belonging to the stock assigned to the current website. For a single store with just one warehouse, the default source Magento ships with is entirely sufficient, without needing to dig into MSI in any detail.
Manage Stock and the out-of-stock threshold
Within the Advanced Inventory settings, Manage Stock determines whether Magento tracks stock for this product at all: set to "No", the product is always orderable regardless of Qty – practical for services or products with no real quantity limit. The Qty for Item's Status to Become Out of Stock field defines the (even negative) quantity at which a product is automatically marked "Out of Stock", independent of a manually set stock status. Global defaults for these fields are maintained under Stores > Configuration > Catalog > Inventory > Product Stock Options.
Creating sources in detail
Under Stores > Inventory > Sources > Add New Source you create a new source with a Source Name, an internal Source Code, the Enable Source toggle, and full address details (Country, State/Province, City, Postcode, Street). If Latitude and Longitude are filled in, the distance-based source selection algorithm can prefer whichever source is closest to the shipping address.
Stocks: sales channels and source priority
Under Stores > Inventory > Stocks > Add New Stock you first give the stock a Stock Name, assign the relevant website(s) on the Sales Channels tab, and link one or more sources on the Sources tab, each with its own Priority – priority 1 is drawn from first, and the next source only kicks in once it's depleted. Which algorithm is used for this (e.g. plain priority order or distance-based) is set under Stores > Configuration > Catalog > Inventory > Source Selection Algorithms.
Product Import and Export
How to import or export many products at once via CSV instead of creating each one individually.
Manually creating a large number of products isn't practical – Magento ships a CSV-based import/export tool for this under System > Import and System > Export.
Export as a starting point
The easiest way to start is with an export: go to System > Export, choose entity type "Products", optionally narrow it down via the Entity Attributes filter (e.g. only a specific category or attribute set), then click Continue. The downloaded CSV file shows you exactly the column structure Magento expects – a great template for your own import, instead of rebuilding the structure from memory.
Running an import
- Under System > Import, choose entity type "Products".
- Set the Import Behavior: "Add/Update" (default – creates new rows, updates existing ones by SKU), "Replace" (fully replaces existing products), or "Delete" (deletes products by SKU).
- Upload the prepared CSV file; for images, also provide the folder path under Images File Directory.
- Click Check Data – Magento validates the file row by row and shows errors/warnings BEFORE anything is saved. Errors (red) block the import entirely, warnings (yellow) usually don't.
- If there are no errors, the Import button appears – only that click actually writes the data to the database.
Common pitfalls
- SKU as the key: the import recognizes existing products exclusively via the SKU column – a typo accidentally creates a duplicate instead of an update.
- Character encoding: the CSV file must be saved as UTF-8, otherwise accented characters and special characters get mangled during import.
- Multiple values: fields like categories or multi-select attributes usually separate several values within one cell with a comma, and the field itself then needs to be wrapped in quotes.
Important: an import cannot be undone with a single click – for larger imports, always create a database backup first, or run the import with just a handful of test rows before uploading the full file.
Required and special columns in the CSV
Besides the SKU column, Magento expects certain other columns with a fixed meaning: attribute_set_code (which attribute set applies), product_type (simple, configurable, bundle, etc.), categories (category paths, levels separated by "/", multiple paths separated by a comma), and product_websites (assignment to one or more websites). For bulk image import, the additional_images column holds the filenames, which must exist in the folder specified under Images File Directory.
Store-view-specific translations via CSV
Translated field values (name, description, URL key, etc.) can be imported directly: for each SKU you can add extra rows with the same SKU but a filled-in store_view_code column – the values in that row then override only that store view, while a row with an empty store_view_code sets the default/website-level values.
Checking the import history
Under System > Import/Export > Import History you'll find a log of every import that's been run, with timestamp, executing user, and outcome. The link in the Execution Time/status column lets you download the full import log, listing every row alongside its specific error – much faster than re-uploading just to troubleshoot.