Conversations about creating, managing, and using metafields to store and retrieve custom data for apps and themes.
We are selling physical product, so we set “This product requires shipping” (“product shipment” option) for all of them. Recently, we had a business requirement that adds a new option for customers to select whether certain items should be vaulted or not before checkout. This option is applied on a per-cart-item basis, where items with a positive "vault" flag should skip shipment, while the remaining items should require shipment as usual.
However, Shopify's default "product shipment" option is static and product based. It cannot handle our dynamic shipment requirements. Although we have added a custom field to collect the necessary information, it does not resolve the issue with the checkout process. The problem lies in the default Shopify checkout flow, which relies on the "requires_shipping" flag for shipment handling. This default behavior causes incorrect shipment handling under our specific requirements. For instance, customers are still prompted to input shipment details even all items are going to be vaulted, and the calculation of shipment fees may also be inaccurate.
To resolve this issue, we have explored using the Admin API (/admin/api/2023-07/checkouts.json) to create the checkout by our app and provide the value of the "requires_shipping" property for each line-item dynamically. However, it seems that Shopify ignores the provided value for that property.
As a workaround, we tried to set no shipment for all products and create a dummy product with no price, minimal weight and shipment required. The idea is using this dummy product to control the shipment weight dynamically during the checkout. It should work, but this might affect the reporting data, e.g. top trending products.
We are just wondering is there any other ways to meet our requirement nicely? Or we need to upgrade our plan to Advanced or Plus to achieve this?