Require separate orders for physical and virtual products

Use Separate physical and virtual products when customers must purchase these two kinds of products in different orders. It requires WooCommerce and applies to guests and signed-in customers on the current site.

Enable the rule

  1. Open Settings → POM Tweaks → E-Commerce → Cart & checkout.
  2. Enable Separate physical and virtual products.
  3. Click Save.

Customers can add several physical products together, or several virtual products together. An attempt to mix the two types is rejected with an explanation; products already in the cart remain there.

How products are classified

The rule uses WooCommerce’s Virtual checkbox on each product or selected variation. Downloadable alone does not make a product virtual. A downloadable product with Virtual unchecked belongs in a physical-product order.

A variable product can contain both kinds of variation. The selected variation determines which cart it can join, even when two variations share the same parent product. Free shipping and local pickup do not change this classification.

The rule covers classic and block cart/checkout. If a customer already has a mixed cart when you enable the rule, checkout remains blocked until they remove one kind of product. Items are never removed automatically. Other purchase restrictions still apply independently.

Verify and troubleshoot

  1. Add a physical product, then attempt to add a virtual product. The second addition should be rejected.
  2. Empty the cart and repeat in the opposite order.
  3. Repeat with a variable product whose variations have different Virtual values.
  4. Confirm that two products of the same kind can share a cart.

If an unexpected product is rejected, inspect Virtual on the purchased product or variation. For bundles or extensions that add extra cart lines, check the classification of every line: this rule does not exempt automatically added products.

To allow mixed orders again, disable the setting and click Save. Existing products, orders, prices and stock remain unchanged.