Preserve Custom Product Options in Shopify B2B Orders

Custom product specs get lost in B2B checkout. Here is how to fix it.

TL;DR: Custom product options (dimensions, cut sizes, personalization notes) entered by your customers must survive the entire B2B checkout flow. If they don’t, your warehouse gets an order without the specs it needs to fulfill it. This update fixes that gap for Shopify stores using draft-order-based B2B checkout.

  • Works with any option app that stores values in Shopify line-item properties, not just VO Product Options.
  • Fewer fulfillment errors: custom specs travel from cart to draft order to the admin screen your ops team actually uses.
  • Built for B2B: VAT metadata and product option data now coexist cleanly on each line item.

Custom product data disappears during B2B checkout (and nobody notices until fulfillment)

Here’s a scenario that plays out more often than merchants realize. A buyer configures a product: height 2400mm, width 960mm, left-hand hinge, white oak finish. They add it to cart. Everything looks correct.

Then they go through a B2B checkout flow. The draft order gets created, payment goes through, and the order lands in Shopify admin. But when the warehouse opens it, the custom dimensions are gone. Just a variant ID, a quantity, and a price.

The product was “ordered.” The specs were not.

Why line-item properties get dropped in draft-order flows

Standard Shopify checkout handles line-item properties natively. If a customer fills in a “Special instructions” field or selects a custom size, those values stick to the order.

Draft-order-based checkout is different. The app building the draft order has to explicitly read each cart line item’s properties and pass them into the API payload. If the implementation only sends variant_id, quantity, and price, everything else is silently lost.

No error. No warning. The order completes, the customer pays, and the data gap only surfaces when someone on your team tries to build or ship the product.

The real cost of missing product specs on B2B orders

This is not a cosmetic problem. For stores selling configurable, made-to-measure, or personalized products, missing option data hits margins directly.

  • Material waste: wrong cuts from missing dimensions mean scrapped stock.
  • Manual follow-up: your team has to email or call the customer to re-confirm what they already entered at checkout.
  • Fulfillment delays: orders sit in a queue while someone chases specs that should have been there from the start.
  • Lost repeat business: B2B buyers place high-value orders. If the first one requires back-and-forth to get right, they won’t come back for a second.

Business customers expect accuracy. One fumbled custom order can cost more than the sale itself.

How the fix works: preserving line-item properties end-to-end

The approach is straightforward. When creating a draft order from a Shopify cart, the checkout flow now:

  1. Reads each cart line item’s properties object.
  2. Normalizes values: trims whitespace, flattens arrays, serializes structured inputs.
  3. Passes those properties into the corresponding draft-order line item attributes.
  4. Merges them alongside existing tax and VAT validation metadata, so neither set overwrites the other.

The result: custom dimensions, notes, material choices, and any other line-item property your option app stores will appear on the final order in Shopify admin. Your warehouse sees exactly what the customer entered.

Not limited to VO Product Options

VO Product Options is one popular app, but this fix works with any product customization tool that writes to Shopify’s line-item properties. That includes apps like Infinite Options, Bold Product Options, and custom-built solutions.

If the data shows up in /cart.js under a line item’s properties key, it can be preserved through the draft-order checkout path.

One caveat: apps that store option data in cart attributes, order notes, or metafields instead of line-item properties use a different data path. Those require explicit mapping and aren’t covered by this update.

How to verify your own store in 5 minutes

You don’t need to wait for a customer complaint to find out if your setup has this gap. Here’s a quick audit:

  1. Add a configurable product to cart. Use realistic values: height, width, a note, a dropdown selection. Whatever your customers actually fill in.
  2. Open /cart.js in your browser. Check the line item’s properties array. All your option values should be listed there.
  3. Trigger the B2B checkout. Use the same path your buyers use, typically the B2B checkout button on your storefront.
  4. Inspect the draft-order payload. In your browser’s network tab, find the draft-order API call. Confirm each items[] entry includes the properties you expect.
  5. Check the order in Shopify admin. Open the draft order and verify the custom values are visible on each line item.

If the properties appear in cart but are missing from the draft order, you have a pass-through gap.

Compatibility checklist for custom-product B2B stores

  • Option data is present in cart line-item properties (not cart attributes or metafields)
  • Draft-order creation payload includes line-item properties for each item
  • Properties survive draft-order updates and reuse (not wiped on subsequent API calls)
  • Tax/VAT metadata and product option metadata coexist without key collisions
  • Your ops team can see the custom values in the admin view they actually work from

Run through this list once. It catches the failures that actually affect customers.

Part of a broader B2B checkout reliability strategy

Product option data preservation is one piece of a reliable B2B checkout. It should sit alongside:

Tax correctness and product-spec correctness are not separate problems. If your B2B checkout handles one but drops the other, orders will still break.

Frequently asked questions

Does this only work for dimension-type options?
No. Any value stored in line-item properties gets preserved: text fields, dropdown selections, checkbox values, file upload references. The logic is generic.

What about hidden or private properties?
If a property exists on the cart line item, it gets forwarded. Whether it’s visible in Shopify admin depends on the property’s naming convention and your admin setup.

Does this change anything for non-B2B checkout?
This update targets the draft-order-based B2B flow specifically. Standard Shopify checkout already handles line-item properties natively. But the same data-continuity principle applies everywhere.

Can VAT metadata and product options exist on the same line item?
Yes. The implementation merges both sets of properties cleanly. VAT compliance data and product customization data live side by side without collisions.

Bottom line

For merchants selling custom products through B2B checkout, “the order went through” is not enough. The real test: did every dimension, every note, every configuration choice entered by the customer make it to the line item your team uses to fulfill the order?

That’s what this update guarantees.

Install EU Tax Exemption for Shopify

Need help verifying that your custom product options survive the full checkout path? Get in touch.