🔥 Just Launched! Werra Premium Template for HyväSee it in Action

How to Add a Custom Column in Magento 2 Products Grid

By Sanjay JethvaUpdated on Jun 16, 2025 2 min read

The default Magento 2 product grid makes it easy to add a column for displaying values for any product attribute. As they are already available under column control of the products grid toolbar. You just need to tick the check/uncheck for that product attribute under Columns control to show/hide values.

However, to add a custom column in Magento 2 product grid that is not a product attribute is not supported by default Magento 2. You need to apply the below solution to add custom columns like stock, quantity, website or any data that is not a product attribute. Along with Category Column to Product Grid, you can also add action column in admin grid in Magento 2 that enables you to perform record specific actions like editing and deleting.

More organized the data, easier it will be for the admin to manage the products.

Steps to Add a Custom Column in Magento 2 Products Grid:

1. Create registration.php file in app\code\[Vendor]\[Namespace]\

<?php
        \Magento\Framework\Component\ComponentRegistrar::register(
            \Magento\Framework\Component\ComponentRegistrar::MODULE,
            '[Vendor]_[Namespace]',
            __DIR__
    );

2. Create module.xml file in app\code\[Vendor]\[Namespace]\etc

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
        <module name="[Vendor]_[Namespace]" setup_version="1.0.0"/>
    </config>

3. Create product_listing.xml file in app\code\[Vendor]\[Namespace]\adminhtml\ui_component

    <?xml version="1.0"?>

    <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
        <columns name="product_columns">
               <column name="stock_status" component="Magento_Ui/js/grid/columns/select" sortOrder="76">
                      <settings>
                            <addField>true</addField>
                            <options class="Magento\Config\Model\Config\Source\Yesno"/>
                            <filter>select</filter>
                            <dataType>select</dataType>
                            <sortable>false</sortable>
                            <label translate="true">Stock Status</label>
                     </settings>
               </column>
         </columns>
    </listing>

4. Create di.xml file in app\code\[Vendor]\[Namespace]\etc\adminhtml

    <?xml version="1.0" encoding="utf-8" ?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
             <type name="Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider">
                  <arguments>
                       <argument name="addFieldStrategies" xsi:type="array">
                            <item name="stock_status" xsi:type="object">[Vendor]\[Namespace]\Ui\DataProvider\Product\AddCustomField</item>
                       </argument>
                 </arguments>
             </type>
    </config>

5. Create AddCustomField.php file in app\code\[Vendor]\[Namespace]\Ui\DataProvider\Product\

    <?php
    namespace [Vendor]\[Namespace]\Ui\DataProvider\Product;
    class AddCustomField implements \Magento\Ui\DataProvider\AddFieldToCollectionInterface
    {
        public function addField(\Magento\Framework\Data\Collection $collection, $field, $alias = null){
            $collection->joinField(
                'stock_status',
                'cataloginventory_stock_status',
                'stock_status',
                'product_id=entity_id',
                null,
                'left'
            );
        }
    }

That’s it.

Also likewise you can add custom column in export to csv in Magento 2 to have an csv with custom changes made in it. Likewise you can also display image thumbnail column in Magento 2 admin UI grid.

Feel free to share the solution with fellow developers via social media.

Thanks.

Sanjay Jethva Full Image
Article bySanjay Jethva

Sanjay is the co-founder and CTO of Meetanshi with hands-on expertise with Magento since 2011. He specializes in complex development, integrations, extensions, and customizations. Sanjay is one the top 50 contributor to the Magento community and is recognized by Adobe. His passion for Magento 2 and Shopify solutions has made him a trusted source for businesses seeking to optimize their online stores. He loves sharing technical solutions related to Magento 2 & Shopify.