Does draft-order and quote data (common in B2B sales-rep-assisted workflows) migrate to Shopify's draft order model cleanly?
Open quotes migrate as Shopify draft orders; closed quotes do not migrate at all. Shopify's B2B import path requires every company, company location and company contact to exist first, and returns an error if the customer has no role assignment at that location (per shopify.dev, September 2026). No field carries sales-rep attribution.
Two different objects, two different answers
A legacy B2B system usually calls everything a quote. Shopify splits them.
| Legacy object | Shopify destination | Migrates? |
|---|---|---|
| Open quote, customer has not accepted | Draft order, recreated | Yes, by recreation. Prices and discounts are restated, not copied |
| Accepted quote that became an order | Historical order via the B2B import path | Yes, as an order |
| Expired or declined quote | Nothing | No. Archive it |
| Quote template or price list logic | B2B catalog and price list | Rebuilt, not migrated |
What Shopify requires before a single B2B order lands
Shopify's B2B import documentation is unusually explicit about sequencing: "A B2B merchant must import or create all relevant companies, company locations, company contacts, and products in Shopify before they can import B2B orders" (per shopify.dev, September 2026). A B2B order is created by supplying both companyLocationId and customer.toAssociate, and "if the customer doesn't have a role assignment to that location, then an error is returned" (same source).
That error is the single most common cause of a stalled B2B migration, and it is a data-modelling problem rather than a technical one. Legacy systems often attach a quote to a person and a shipping address. Shopify attaches it to a person, a company, and a location, with a role that connects them. Any legacy contact who bought on behalf of two divisions has to be resolved into two role assignments before the import will run.
Rep attribution does not exist, and that is the finding
Neither the draft order input nor the B2B order import path exposes a sales representative or order owner field (per shopify.dev, September 2026). If commission, territory or quota depends on rep attribution, that data needs a destination you choose: an order metafield, a tag convention, or a field in the CRM that stays the system of record. Pick one before the import, because retrofitting rep attribution across a migrated order set means reprocessing every order.
Two mechanics worth knowing before you plan the cutover
- Draft orders expire now. "Draft orders created on or after April 1, 2025, are automatically deleted after 1 year of inactivity" (per Shopify Help Center, September 2026). A long-cycle B2B quote that sits untouched for a year disappears. Long sales cycles need a touch policy or a different holding place.
- Inventory can be held. Draft orders support
reserveInventoryUntil(per shopify.dev, September 2026), which is the mechanism for a quote that promises stock. Legacy allocation logic usually needs restating in those terms rather than porting.
When NOT to migrate quotes
- When the quote is older than your typical sales cycle. A dead quote in a new system looks live to a rep who did not write it.
- When pricing came from a legacy rules engine you have not rebuilt. Migrating the output without the rule means the next revision of that quote produces a different price and the customer sees it.
- When the company hierarchy is unresolved. Import orders before the company model is settled and you will re-import.
- When the rep is leaving. Reassign first, migrate second.
The Deploi point of view
Our own position, from building on Shopify. Separate from the facts above.
- Our take: Sequence B2B in this order and do not compress it: companies, locations, contacts and role assignments, then catalogs and price lists, then historical orders, then open quotes recreated last by the reps who own them. Reps recreating their own open quotes is not a shortcut, it is a control. It surfaces the quotes that should have been closed and gives each one a current owner.
- Where we disagree: B2B migrations get scoped from the order table because that is what the legacy export produces. The company model is the hard part and it is the part that gates everything else, so it belongs at the front of the plan and at the front of the budget. A scope that prices order import precisely and company modelling vaguely has the risk upside down.
- What this page adds: that the B2B import path has a hard precondition on company, location, contact and role assignment, that no rep-attribution field exists anywhere in it, and that draft orders now self-delete after a year of inactivity.
Reviewed by Martin Dejnicki, Director of SEO & AI Search. Facts verified 2026-09-14.
Where we worked this out
Our decision records