Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

Catalog

Everything about products, categories, attributes and images – the heart of every Magento store.

KAPITEL 7 Unterkapitel

Creating and Managing Products

<div class="prose prose-hyva max-w-none"><p>Step by step: create a new product, set price, description and stock, and publish it.</p><p>Start a new product under <em>Catalog &gt; Products &gt; Add Product</em>. The form is organized into several sections/tabs that can vary depending on the attribute set. The most important fields in the header area:</p> <ol> <li><strong>Product Name</strong> and <strong>SKU</strong> (an internal, unique item number – auto-derived from the name, but you can override it; the SKU should never be changed later, since it's historically referenced in orders).</li> <li><strong>Price</strong> and, if needed, <strong>Special Price</strong> with a start/end date for time-limited promotional pricing.</li> <li><strong>Quantity</strong> and <strong>Stock Status</strong> – how many units are available and whether the product can be ordered at all, even if stock exists.</li> <li><strong>Categories</strong> – which category (or categories) the product belongs to; a product can belong to several categories at once.</li> <li><strong>Description</strong> and <strong>Short Description</strong> – the long description shows on the product page, the short one appears in product listings and sometimes in search result snippets.</li> </ol> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie1categorie.png}}" alt="Produkt anlegen" /> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie1catalog2.png}}" alt="Produkt anlegen2" /> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie1kapitelcontent.png}}" alt="Produkt anlegen3" /> <h3>Other tabs on the form</h3> <ul> <li><strong>Images and Videos:</strong> product images (see its own chapter).</li> <li><strong>Search Engine Optimization:</strong> URL key, meta title, meta keywords, meta description.</li> <li><strong>Related Products, Up-Sells, Cross-Sells:</strong> manual product links for "you might also like" recommendations.</li> <li><strong>Customizable Options:</strong> extra options the customer can pick, with an optional surcharge (e.g. engraving, gift wrap).</li> <li><strong>Product in Websites:</strong> for multi-website setups, which websites the product is assigned to.</li> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/1SchrittKapitel2images.png}}" alt="Images and Videos" /> </ul> <h3>Visibility and status</h3> <p>In the top right you set <strong>Enable Product</strong> and <strong>Visibility</strong> (Catalog, Search, both, or "Not Visible Individually"). The latter is typically used for variants that should only be reachable through their configurable parent product, not individually in the catalog or search.</p> <h3>Saving and appearing in the store</h3> <p>Finally, save with <strong>Save</strong> (or <strong>Save &amp; New</strong>/<strong>Save &amp; Close</strong> via the dropdown arrow next to it). Depending on your indexer configuration (see the "Understanding Indexers" chapter), the product appears in the store immediately or only after the next scheduled reindex run.</p> <p><strong>Practical tip:</strong> when adding many similar products, first create a "template product" with every field correctly filled in, then use <strong>Copy</strong> (button top right of the product form) to quickly create duplicates with the same base settings.</p> <h3>Advanced pricing</h3> <p>The <strong>Advanced Pricing</strong> link right next to the <strong>Price</strong> field opens a dialog with additional pricing fields: <strong>Cost</strong> (your internal purchase cost, never shown to the customer, but used in profit reports in the backend) and <strong>Tier Price</strong> (quantity-based pricing: from which order quantity a given customer group gets which reduced price or percentage discount). Depending on configuration, <strong>Minimum Advertised Price (MAP)</strong> may also appear here, letting you show the regular price only in the cart instead of already on the product page.</p> <h3>Weight and tax class</h3> <p>The <strong>Weight</strong> and <strong>Tax Class</strong> fields sit in the upper form area next to Price and Quantity. Weight feeds into shipping cost calculation (e.g. for weight-based shipping methods) and is automatically hidden for virtual and downloadable products. Tax Class determines which tax rule is applied to the product at checkout – the default is usually "Taxable Goods".</p> <h3>Marking a product as new</h3> <p>The <strong>Set Product as New From</strong> and <strong>Set Product as New To</strong> fields define a date range during which the product counts as "new" – e.g. for a "New Arrivals" widget on the homepage or a NEW badge in the theme. Without an end date set, the marking stays active indefinitely.</p> <h3>Design tab: custom layout</h3> <p>The <strong>Design</strong> tab lets you choose a different <strong>Layout</strong> per product (e.g. a version without a sidebar), and advanced users can add product-specific layout tweaks via <strong>Layout Update XML</strong> without building a dedicated layout module for it. This option is aimed at technically experienced users and should be used sparingly.</p> <img src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie1design.png}}" alt="Design tab" /> </div>
Weiterlesen

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.

Weiterlesen

Managing Categories

<div class="prose prose-hyva max-w-none"><p>How to plan your category tree, create new categories, and assign products to them.</p><p>You'll find categories under <em>Catalog &gt; Categories</em> as a tree structure on the left. To create a new one, first select the desired parent category in the tree, then click <strong>Add Subcategory</strong> (or <strong>Add Root Category</strong> for a brand new top level, e.g. for a multi-website setup).</p> <h3>General information</h3> <ul> <li><strong>Category Name</strong> and an auto-generated <strong>URL Key</strong> (also editable manually under <em>Search Engine Optimization</em>).</li> <li><strong>Enable Category</strong> and <strong>Include in Menu</strong> – the latter controls whether the category shows up in the main navigation; setting it to FALSE effectively "hides" a category while keeping it reachable via a direct link.</li> <li><strong>Description</strong>: a WYSIWYG text field, displayed above the product list depending on the display mode.</li> <li><strong>Image</strong>: an optional category image, e.g. for banner-style display in the theme.</li> </ul> <h3>Display mode</h3> <p>Controls what shows on the category page: <strong>Products</strong> shows only the assigned products, <strong>Static Block Only</strong> only a fixed CMS block (e.g. for a pure landing/topic page with no product list), <strong>Static Block and Products</strong> shows both stacked.</p> <h3>Assigning products</h3> <p>On the <strong>Products in Category</strong> tab, you assign products to the category via search and checkboxes. The <strong>Position</strong> column sets the order products appear in by default (customers can override this via frontend sort options like "Price: low to high").</p> <h3>Design tab</h3> <p>Under the <strong>Design</strong> tab you can pick a different page layout per category (e.g. "Category — Full Width" with no sidebar), and, with appropriately configured extensions, select a specific layout template.</p> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittdisplay.png}}" alt="Design-Tab" /> <h3>Planning the category tree</h3> <p>A well-planned category structure (not too deep, not too flat – in practice usually 2-3 levels) is one of the most important levers for navigation and SEO across the whole store. Every category is potentially its own indexable landing page for a keyword cluster – so ideally plan the structure before creating a large number of products, rather than restructuring it later at significant effort.</p> <h3>Anchor categories and layered navigation</h3> <p>Under <strong>Display Settings</strong>, the <strong>Is Anchor</strong> field controls whether a category page also shows all products from its subcategories and pools them together in the layered navigation filters, instead of listing only the products assigned directly. For parent categories (e.g. "Women's Clothing" with subcategories "Pants", "Jackets"), "Yes" is almost always the right setting so filters like size or color work across the whole product group.</p> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittdisplay.png}}" alt="Anchor-Kategorien" /> <h3>Category SEO fine-tuning</h3> <p>On the <strong>Search Engine Optimization</strong> tab, besides the URL key you also maintain <strong>Meta Title</strong>, <strong>Meta Keywords</strong> and <strong>Meta Description</strong> specific to this category page. <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2kapitelseo.png}}" alt="SearchEngine" /> The suffix appended to every category URL (e.g. ".html") is set globally under <em>Stores &gt; Configuration &gt; Catalog &gt; Catalog &gt; Search Engine Optimization &gt; Category URL Suffix</em> and then applies to all categories alike.</p> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittiptimisation.png}}" alt="SearchEngineOptimization" /> <h3>Moving categories and URL redirects</h3> <p>Categories can be dragged to a different position or under a different parent in the tree. Since this can change the category's URL, the option <em>Stores &gt; Configuration &gt; Catalog &gt; Catalog &gt; Search Engine Optimization &gt; Create Permanent Redirect for URLs if URL Key Changed</em> should be enabled – only then does Magento automatically create a 301 redirect from the old to the new URL, instead of visitors and search engines hitting a 404 error.</p> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittcreaturl.png}}" alt="CreatePermanentRedirect" /> </div>
Weiterlesen

Attributes and Attribute Sets

<div class="prose prose-hyva max-w-none"><p>How product attributes work, how to create new attributes, and how to group them into attribute sets.</p><p>Attributes are individual properties of a product – color, material, weight, but technically even name, price and description are attributes too. Create your own new attributes under <em>Stores &gt; Attributes &gt; Product &gt; Add New Attribute</em>.</p> <h3>Important settings when creating one</h3> <ul> <li><strong>Default Label</strong> and <strong>Attribute Code</strong>: the internal, technical identifier (attribute code) can no longer be changed once saved for the first time – worth a moment's thought beforehand.</li> <li><strong>Catalog Input Type for Store Owner:</strong> text field, text area, dropdown, multiple select, yes/no, date, price, image, and more – determines what the field looks like on the product form.</li> <li><strong>Values Required:</strong> whether the attribute must be filled in when a product is saved.</li> <li><strong>Scope:</strong> <em>Global</em> (identical everywhere), <em>Website</em>, or <em>Store View</em> (maintainable differently per language – essential for translated names, descriptions and URL keys on multilingual stores).</li> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittattribute.png}}" alt="WichtigeEinstellungen" /> </ul> <h3>Storefront properties</h3> <p>The second tab of the attribute form controls its visibility in the store:</p> <ul> <li><strong>Use in Search:</strong> whether the value is searched by the internal search.</li> <li><strong>Visible on Catalog Pages on Storefront:</strong> whether the attribute is shown as a spec on the product page.</li> <li><strong>Use in Layered Navigation:</strong> whether customers can filter by this attribute in the store (e.g. color as a filter in the category view) – also requires the corresponding search index to be rebuilt.</li> <li><strong>Comparable on Storefront:</strong> whether the attribute appears in the product compare list.</li> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittstorefront.png}}" alt="Storefront" /> </ul> <h3>Attribute sets</h3> <p><strong>Attribute sets</strong> (<em>Stores &gt; Attribute Set</em>) group several attributes into a reusable bundle – e.g. an "Apparel" set with size and material, an "Electronics" set with voltage and weight. Within a set, attributes can be dragged into named groups (e.g. "General", "Prices", "Images"), which keeps the product form easier to fill in later. When creating a new product you first pick the matching attribute set, and exactly the relevant fields become available – no more, no less.</p> <p><strong>Practical tip:</strong> don't build new attribute sets entirely from scratch – use <strong>Add New Set</strong> with an existing set as the <strong>Based On</strong> template instead, saving time for similar product categories.</p> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittnewattrebute.png}}" alt="Attributsets" /> <h3>Advanced attribute properties</h3> <p>The <strong>Advanced Attribute Properties</strong> section holds further important fields: <strong>Unique Value</strong> prevents the same value from being used on more than one product (e.g. useful for an EAN/GTIN number). <strong>Input Validation for Store Owner</strong> enforces a specific format on text attributes (e.g. decimal numbers only, or a valid email address). <strong>Apply To</strong> restricts an attribute to specific product types instead of offering it on all types by default. For multi-line text fields, <strong>Enable WYSIWYG Editor</strong> also appears, showing a formatted rich text editor instead of a plain text field on the product form.</p> <img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/2kategorie2schrittadvanced.png}}" alt=">ErweiterteAttribut" /> <h3>Maintaining dropdown values and store-view labels</h3> <p>For the "Dropdown" and "Multiple Select" input types, a <strong>Manage Options</strong> section opens up: use <strong>Add Option</strong> to create individual values, a drag handle to set their order, and the <strong>Is Default</strong> checkbox to define a pre-selected value. Important for multilingual stores: besides the admin label, every option has its own column per store view – so the value "Rot" can be stored as "Red" for the English store view without touching the technical attribute value itself.</p> <h3>Search weight and position in the filter bar</h3> <p>When <strong>Use in Search</strong> is enabled, a <strong>Search Weight</strong> field also appears (scale 1–10): the higher the value, the more a match in this attribute counts toward relevance ranking in internal search (Elasticsearch/OpenSearch) – useful for weighting matches in the product name higher than matches in a long-text attribute, for example. Independently, the <strong>Position</strong> field determines where the attribute appears in the layered navigation filter bar relative to other filters.</p> <h3>Attribute sets: managing groups</h3> <p>Within an attribute set, use <strong>Add New</strong> to create your own groups (e.g. "Technical Data"), rename them via double-click, and fill them with attributes via drag and drop. Attributes that belong to the set but aren't assigned to a group yet sit in the <strong>Unassigned Attributes</strong> area at the bottom. Deleting a group doesn't lose its attributes – they automatically move back into that unassigned area.</p></div>
Weiterlesen

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.

Weiterlesen

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.

Weiterlesen

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

  1. Under System > Import, choose entity type "Products".
  2. 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).
  3. Upload the prepared CSV file; for images, also provide the folder path under Images File Directory.
  4. 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.
  5. 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.

Weiterlesen