Read More
Read More
Menu Close

    How to create Customer Custom Attribute in Magento 2.0

    Here we will learn, How to create Customer Custom attribute in Magento 2.0.x


    Create the file Webkul\CustomAttribute\Setup\InstallData.php

    namespace Webkul\CustomAttribute\Setup;
    use Magento\Customer\Setup\CustomerSetupFactory;
    use Magento\Customer\Model\Customer;
    use Magento\Eav\Model\Entity\Attribute\Set as AttributeSet;
    use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
    use Magento\Framework\Setup\InstallDataInterface;
    use Magento\Framework\Setup\ModuleContextInterface;
    use Magento\Framework\Setup\ModuleDataSetupInterface;
     * @codeCoverageIgnore
    class InstallData implements InstallDataInterface
         * @var CustomerSetupFactory
        protected $customerSetupFactory;
         * @var AttributeSetFactory
        private $attributeSetFactory;
         * @param CustomerSetupFactory $customerSetupFactory
         * @param AttributeSetFactory $attributeSetFactory
        public function __construct(
            CustomerSetupFactory $customerSetupFactory,
            AttributeSetFactory $attributeSetFactory
        ) {
            $this->customerSetupFactory = $customerSetupFactory;
            $this->attributeSetFactory = $attributeSetFactory;
        public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
            /** @var CustomerSetup $customerSetup */
            $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);
            $customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
            $attributeSetId = $customerEntity->getDefaultAttributeSetId();
            /** @var $attributeSet AttributeSet */
            $attributeSet = $this->attributeSetFactory->create();
            $attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);
            $customerSetup->addAttribute(Customer::ENTITY, 'custom_attribute', [
                'type' => 'varchar',
                'label' => 'Custom Attribute',
                'input' => 'text',
                'required' => false,
                'visible' => true,
                'user_defined' => true,
                'position' =>999,
                'system' => 0,
            $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'custom_attribute')
                'attribute_set_id' => $attributeSetId,
                'attribute_group_id' => $attributeGroupId,
                'used_in_forms' => ['adminhtml_customer'],//you can use other forms also ['adminhtml_customer_address', 'customer_address_edit', 'customer_register_address']

    InstallData conforms to InstallDataInterface , which requires the implementation of the install method that accepts two parameters of type ModuleDataSetupInterface and ModuleContextInterface .

    Searching for an experienced
    Magento 2 Company ?
    Read More

    Using the addAttribute method on the instance of Magento\Customer\Setup\CustomerSetupFactory, we are instructing Magento to add a number of attributes.

    . . .
    Discuss on Helpdesk

    Leave a Comment

    Your email address will not be published. Required fields are marked*


  • Mohit Arora
    Thanks.. I was getting error in the constructor. Thanks for such simple and easy to understand post.
    • Webkul Support
      Hi Mohit,
      I hope you are facing this error:
      [MagentoFrameworkExceptionLocalizedException] The attribute code ‘custom_attribute’ is reserved by system. Please try another attribute code

      This is because the attribute code with this name is already taken by the system. try with other attribute code.
      Replace “custom_attribute” with “my_custom_attribute” in your code.

      Mahesh SinghSr. Software Engineer (Magento)

      Webkul Software Pvt. Ltd. Contact : India (+91)-9650486699 USA (+1)-9143531684

      A 67 Sector 63 ,
      Noida-201301 (U.P.)

      This email and any files transmitted with it are confidential and contain privileged or copyright information. If you are not the intended recipient you must not disseminate, copy, distribute, or use this email or the information contained in it for any purpose other than to notify us. If you have received this message in error, please notify the sender immediately, and delete this email from your system.

  • Kirti Nariya
    How to show customer created attributes in front Billing and customer registration form magento 2
  • Jarnail
    How to add more than one attributes?
  • Back to Top