I'm working on a Magento 2 website for a friend and I've now realised that for the 500+ products he's manually added, they're simple products with virtual options? I told him to set the products up as configurable products so I'm not quite sure what's happened (see below image). Is there a way of converting all of these virtual products to a type that will allow for an address to be entered during checkout?

Virtual Products

2 Answers 2


You can do it only direct in DB. For example with query

update catalog_product_entity set type_id = 'simple' where type_id = 'virtual';

But beware, this query converts all virtual products to simple. (better to create db backup before start)

  • 11
    Alternatively you can change from "This item has no weight" to "This item has weight". You can leave weight amount 0 too.
    – Macas
    Commented Nov 9, 2017 at 10:11
  • 1
    Hey @Macas, this worked for me Commented Mar 18, 2020 at 7:56

Maybe this helps somebody who looks it up.

If you create product configurations and dont add weight to the generated products they will be virtual. If you add weight they will be simple products.

If you want to change a single virtual product to a simple product, give the product a weight in the backend and change it to "this product has weight".

However if you want to change all virtual products at once you could add a weight to all selected products at once by using the "update attributes" option under "products->catalog". Meanwhile you cant set the "this product has weight" option. So you probably have to do that in the DB or per product.

Not the answer you're looking for? Browse other questions tagged or ask your own question.