Orders and fulfillment

Shopify Draft Orders: Column Reference

Last updated

This reference covers all 134 Draft Orders export controls in EditEngine, including which values you can change through Advanced Import. Draft Orders import is publicly available, subject to the required Shopify access. Changes to fields and lines apply to open or invoice-sent drafts. A completed draft accepts only a tags-only UPDATE or MERGE.

Export a small Draft Orders selection from EditEngine → Export, keep an untouched copy, and remove columns unrelated to your change before importing. Use a CSV or an Excel worksheet named Draft Orders or Draft Order. In Import → Advanced Import, review the detected resource, headers, commands, and row count. Test one open draft and verify the result in Shopify before using a larger file. Advanced Import does not have the bulk editor's one-click undo.

Draft Orders export columns showing 134 selected controls

How to read this reference

Create/update means EditEngine uses the supplied value for a new draft or a supported update to an open or invoice-sent draft. Export only means editing that cell does not change Shopify through this sheet. New customer only means it is used only when the import creates a customer; it never updates the profile of an existing customer.

Export groupControls
Base43
Customer13
Billing and Shipping Addresses26
Company6
Line Items38
Line Items Product Data7
Metafields1
Total134

There are 133 fixed headers plus one dynamic Metafields control. Metafields can expand into several namespace/key headers, so the spreadsheet's final column count can differ from 134. Numbered tax patterns below expand separately for 1, 2, and 3.

Blank ordinary fields normally leave the corresponding update input unset. Blank tags do nothing. Blank selected metafield cells delete the metafield. Line replacement, line quantities, and prices have their own defaults; review those sections before reimporting an export.

Base columns: identity and editable fields

Exact headerValue or exampleAdvanced Import treatment
IDDraft Order ID, such as 1234567890Primary lookup and grouping identity. Numeric IDs or Shopify Draft Order GIDs are accepted. A supplied but unresolved ID prevents MERGE/UPDATE from falling back to Name. Remove source-store IDs for migration.
NameShopify-generated name, such as #D100Exact lookup only when ID is absent; also groups rows when ID and Number are absent. Does not rename a Shopify draft or choose its generated name.
CommandNEW, MERGE, UPDATE, REPLACE, DELETE, IGNOREControls the draft group. Blank defaults to MERGE; exports contain MERGE. See command behavior below.
Order IDID of the Order created from the draftExport only. Does not identify a draft or edit the resulting Order.
Statusopen, invoice_sent, completedExport only. Sending an invoice or completing a draft changes its state through the action columns.
Emailbuyer@example.comCreate/update the draft's contact email. Separate from Customer: Email, which resolves the linked customer. Blank leaves it unset.
NoteDeliver after MondayCreate/update the draft note. Blank does not clear an existing note.
TagsWholesale, PriorityComma-separated tags, interpreted by Tags Command. Blank creates no tag operation.
Tags CommandMERGE, DELETE, REPLACEAdd, remove, or replace the tag set. Blank defaults to REPLACE, as in the export. Multiple tag rows run in spreadsheet order.
Created AtStore-time-zone date and timeExport only. Does not backdate creation.
Updated AtStore-time-zone date and timeExport only.
CurrencyShopify currency code, such as USD, EUR, INRCreate/update the draft currency. Invalid codes fail. Required when a Shipping Line is supplied; include it with custom prices to make the intended currency explicit. Blank does not change an existing currency.
Weight TotalTotal weight in grams, such as 500Export only; does not set individual line weights.
Price: SubtotalAmount before shipping and taxExport only. Change supported lines or discounts instead.
Charge TaxesTRUE or FALSECreate/update whether the draft is tax-exempt: FALSE sets tax exemption, TRUE removes it. Blank leaves this input unset. Shopify calculates the resulting taxes.
Reserve Inventory Until2026-10-01T12:00:00Z or 2026-10-01 12:00:00 +0000Create/update the reservation expiry. A valid ISO or Matrixify-style date with time zone is required. Blank does not clear a reservation.
Visible To CustomerTRUE or FALSECreate/update customer visibility. Blank leaves it unset.
Tax: IncludedTRUE or FALSEExport only. A populated import cell produces a non-blocking warning and is ignored.
Tax: TotalTotal calculated tax amountExport only.
Price: TotalDraft total including shipping, discounts, and taxExport only in EditEngine. It is not a target amount or price override.
Additional DetailsOne name: value pair per line, such as PO: 1001Create/update draft attributes. Provide the complete intended list when changing it. Blank does not clear existing details.
Invoice URLShopify invoice/checkout URLExport only. Treat exported customer checkout links as private operational data.
Invoice Sent AtDate and time of invoice sendingExport only.

Draft-level tax blocks: 12 controls

Each pattern represents three exact headers. For example, Tax 1: Rate, Tax 2: Rate, and Tax 3: Rate are separate controls.

Header patternValue or exampleAdvanced Import treatment
Tax 1: Title through Tax 3: TitleTax name, such as VATExport only.
Tax 1: Rate through Tax 3: RateFraction, such as 0.20 for 20%Export only.
Tax 1: Price through Tax 3: PriceCalculated tax amountExport only.
Tax 1: Channel Liable through Tax 3: Channel LiableTRUE, FALSE, or blank if unknownExport only.

Invoice and completion actions: 8 controls

These are actions, not descriptions. Sending an invoice contacts the customer; completing a draft creates a real Shopify Order. Exports set Send Invoice, Complete, and Complete: Payment Pending to FALSE and leave invoice customization fields blank.

Exact headerValue or exampleAdvanced Import treatment
Send InvoiceTRUE or FALSETRUE sends an invoice after creating/updating the draft. False or blank does not send it.
Send Invoice: ToRecipient emailUsed only with Send Invoice = TRUE. Blank leaves Shopify's recipient default in place.
Send Invoice: FromSender emailOptional invoice sender passed to Shopify. Blank uses Shopify's default.
Send Invoice: BccEmails separated by commas or newlinesOptional blind-copy recipients. Blank supplies none.
Send Invoice: SubjectYour wholesale quoteOptional subject. Blank uses Shopify's default.
Send Invoice: MessageMessage textOptional custom message. Blank uses Shopify's default.
CompleteTRUE or FALSETRUE converts the draft into an Order after the draft update and any invoice action. False or blank does not complete it.
Complete: Payment PendingTRUE or FALSEOnly used with Complete = TRUE. True requests payment pending; false requests completion without payment pending. Blank leaves Shopify's default unchanged.

Customer columns: 13 controls

Customer lookup uses Customer: ID, then exact email, then exact phone. If no customer matches and an email or phone is provided, EditEngine creates a customer. These fields link a customer to the draft; they do not update an existing customer's profile. Use the Customers resource for that separate change.

Exact headerValue or exampleAdvanced Import treatment
Customer: IDDestination Customer IDPreferred customer link. Blank allows email/phone lookup.
Customer: Emailbuyer@example.comLookup and new-customer email. An unmatched email/phone can create a customer.
Customer: PhoneInternational phone, such as +14165550100Lookup and new-customer phone. Also supplies the draft's Phone input unless a separate Phone header is present. Export reports the customer-profile phone, not the draft's standalone phone.
Customer: First NameAshaNew customer only.
Customer: Last NameShahNew customer only.
Customer: NoteWholesale accountNew customer only.
Customer: Orders CountWhole-number lifetime order countExport only.
Customer: StateAccount state, such as enabledExport only in EditEngine. Does not activate or invite the customer.
Customer: Total SpentCustomer's total spendingExport only.
Customer: TagsComma-separated listNew customer only. Does not apply Draft Order Tags Command to customer tags.
Customer: Email Marketing StatusSUBSCRIBED, UNSUBSCRIBED, PENDING, NOT_SUBSCRIBEDNew customer only. REDACTED and INVALID are rejected. Blank supplies no consent input; NOT_SUBSCRIBED leaves Shopify's new-customer default in place for email.
Customer: SMS Marketing StatusSUBSCRIBED, UNSUBSCRIBED, PENDING, NOT_SUBSCRIBEDNew customer only. REDACTED is rejected. Blank supplies no consent input.
Customer: Tax ExemptTRUE or FALSENew customer only. Separate from the draft's Charge Taxes.

Remove unnecessary customer profile and marketing columns from a focused draft update. Unsupported marketing states can fail validation even when the intended operation is only to link an existing customer.

Billing and shipping addresses: 26 controls

Each row below names two separate controls. The rules apply independently to billing and shipping. An address is sent only when its Country or Country Code is populated. Include the complete intended address; blank cells are not explicit clearing instructions, and do not assume a partial address update will preserve every omitted Shopify address field.

Exact headersValue or exampleAdvanced Import treatment
Billing: First Name; Shipping: First NameAshaCreate/update the corresponding address.
Billing: Last Name; Shipping: Last NameShahCreate/update the corresponding address.
Billing: Name; Shipping: NameAsha ShahFallback for blank First Name or Last Name values; first word becomes first name, remaining words become last name. Separate populated name values take priority.
Billing: Company; Shipping: CompanyExample RetailAddress company text; does not establish a B2B Company relationship.
Billing: Phone; Shipping: PhoneInternational phone numberAddress contact phone.
Billing: Address 1; Shipping: Address 110 Example RoadFirst address line.
Billing: Address 2; Shipping: Address 2Suite 2Second address line. Blank is not an explicit delete.
Billing: Zip; Shipping: Zip02110Postal code. Keep as text to preserve leading zeroes.
Billing: City; Shipping: CityBostonCity name.
Billing: Province; Shipping: ProvinceMassachusettsProvince/state name; ignored when the corresponding Province Code is populated.
Billing: Province Code; Shipping: Province CodeMATakes priority over Province.
Billing: Country; Shipping: CountryUnited StatesCountry name; ignored when Country Code is populated.
Billing: Country Code; Shipping: Country CodeUSTwo-letter country code; takes priority over Country.

Company columns: 6 controls

These link an existing B2B company and company location. They do not create or rename either record. Use destination-store IDs, or exact external IDs/names. The linked customer must have the appropriate company-location contact role. Blank company fields do not unlink the current purchasing company.

Exact headerValue or exampleAdvanced Import treatment
Company: IDDestination Company IDPrimary company identity.
Company: NameExample RetailExact company-name lookup when higher-priority identity is absent.
Company: External IDERP-1001Company lookup by external ID, ahead of Name.
Company: Location IDDestination Company Location IDPrimary location identity.
Company: Location NameMain WarehouseExact location-name lookup within the resolved company.
Company: Location External IDERP-1001-MAINLocation lookup by external ID, ahead of location Name.

Line Items: 38 controls

A draft expands into Line Item rows, followed by an optional Discount and Shipping Line. Repeat the same draft identity on every row. Top Row does not group an otherwise unidentified continuation row.

For an existing draft, all-REPLACE line rows become the complete line list. If any line uses MERGE or DELETE, EditEngine instead loads the current lines and applies the supplied operations. In that mode, a matched MERGE preserves omitted values; an unmatched MERGE appends a line. Do not mix REPLACE with MERGE/DELETE expecting REPLACE to wipe the entire list in that mixed file.

Exact headerValue or exampleAdvanced Import treatment
Row #Export row numberExport only. Useful for restoring sort order.
Top RowTRUE on the draft's first rowExport only. Does not replace repeated draft identity.
Line: TypeLine Item, Discount, Shipping LineChooses how other Line fields are interpreted. Blank uses Line Item parsing if there is line content. Only one Discount and one Shipping Line are supported per draft.
Line: IDDraft Order line IDMatch an existing line for MERGE/DELETE. Repeated IDs in replacement/new-draft line rows combine quantities when the other supplied values agree. A Shipping Line ID is descriptive, not its update selector.
Line: CommandREPLACE, MERGE, DELETEApplies to Line Item rows. Blank defaults to REPLACE, as in exports. MERGE/DELETE require an existing draft. DELETE of an unmatched line does nothing; removing all lines fails.
Line: Product IDDestination Product IDResolves a product-backed line, with Product Handle fallback if the product is not found. Also matches existing lines. Include Variant Title or SKU for multi-variant products.
Line: Product Handlelinen-shirtProduct lookup; for Shipping Line rows, supplies the shipping-service handle instead. Ignored on Discount rows.
Line: TitleGift wrapping; percentage; ExpressCustom line title, Discount type (percentage or fixed_amount), or Shipping Line title. Product-backed titles come from the product. Also matches existing lines.
Line: NameDisplay name or discount descriptionOn Line Item rows, used as the title alias only if the Line: Title header is absent. On Discount rows, supplies the discount description. Shipping Line Name is export-only.
Line: Variant IDDestination Product Variant IDHighest-priority product-variant link. Missing variants can use supplied Product ID, Handle, or SKU fallback. Also matches existing lines.
Line: Variant TitleBlue / MediumExact variant selection within a resolved product. A variant title alone cannot identify a product.
Line: SKUSHIRT-BLUE-MExact SKU lookup or existing-line matching; custom-line SKU when an explicitly priced custom line is used. Does not change the product variant's SKU.
Line: QuantityPositive whole number, such as 2Line Item quantity. Blank defaults to 1 for new/replacement lines but preserves a matched MERGE line's quantity. On a Discount row, a positive decimal is the percentage or fixed amount.
Line: PriceUnit amount, such as 19.99Custom-line unit price or Shipping Line price. Does not override product-backed line pricing. Blank can become 0.00 on custom or shipping creation/replacement, so always supply intended prices. Matched MERGE preserves an omitted custom price.
Line: DiscountTotal fixed line discount, such as -5.00For a Line Item, accepts either sign and converts the total discount to a per-item amount using quantity. Must be non-zero; 0 is rejected. Custom-line discount cannot exceed price × quantity. On a Discount row, used as a positive-magnitude fallback when Line: Quantity is blank.
Line: Discount per ItemDiscount divided by quantityExport only. Edit Line: Discount instead.
Line: TotalDiscounted line totalExport only for Line Item and Shipping Line rows. On Discount rows, an import fallback only when Line: Quantity is blank and the Line: Discount header is absent.
Line: GramsNon-negative whole number, such as 250Weight on new/replacement custom lines; also supplied on a matched MERGE line when populated. New/replacement product-backed lines do not take a weight override from this cell.
Line: Requires ShippingTRUE or FALSECreate/update custom lines. Product-backed lines use the product's behavior. Blank preserves a matched MERGE value.
Line: VendorProduct vendorExport only in EditEngine.
Line: PropertiesOne name: value pair per lineCustom attributes for custom or product-backed lines. Provide the complete intended list. Blank preserves properties on a matched MERGE line; replacement does not inherit them.
Line: Gift CardTRUE or FALSEExport only in EditEngine. Does not turn a custom line into a gift card.
Line: TaxableTRUE or FALSECreate/update custom lines. Product-backed lines use the product's tax behavior. Blank preserves a matched MERGE value.
Line: Tax TotalSum of this line's calculated taxesExport only.
Line: Fulfillable QuantityExported line quantityExport only. Does not create or alter a fulfillment.
Line: Fulfillment ServiceService handle, such as manualExport only in EditEngine. This sheet does not assign a fulfillment service.

Line tax blocks: the other 12 Line Items controls

Header patternValue or exampleAdvanced Import treatment
Line: Tax 1: Title through Line: Tax 3: TitleTax nameExport only.
Line: Tax 1: Rate through Line: Tax 3: RateFraction, such as 0.20Export only.
Line: Tax 1: Price through Line: Tax 3: PriceCalculated tax amountExport only.
Line: Tax 1: Channel Liable through Line: Tax 3: Channel LiableTRUE, FALSE, or blankExport only.

Use the exact colon placement shown above. Shopify calculates draft taxes from the supported taxable inputs, addresses, and store configuration.

For SKU-only product linking, omit Line: Price. A populated price without Variant ID, Product ID, or Product Handle selects the custom-line path, even if a SKU is supplied. For a product-backed line, include its destination Variant ID whenever possible.

Line Items Product Data: 7 controls

These values describe the linked product or variant at export time. They can differ from the draft's stored line values. All seven are export only through a Draft Orders sheet.

Exact headerExported valueAdvanced Import treatment
Line: Product TypeCurrent product typeExport only.
Line: Product TagsCurrent comma-separated product tagsExport only.
Line: Variant SKUCurrent variant SKUExport only; different from the draft line's Line: SKU.
Line: Variant BarcodeCurrent variant barcodeExport only.
Line: Variant WeightCurrent variant weight valueExport only.
Line: Variant Weight Unitg, kg, oz, or lbExport only.
Line: Variant Inventory QtyCurrent variant inventory quantityExport only. Does not adjust inventory.

Metafields: one dynamic control

Header patternValue or exampleAdvanced Import treatment
Metafield: namespace.key [type]Metafield: custom.po [single_line_text_field] with value PO-1001Sets that Draft Order metafield. The value must fit its Shopify type. A blank or whitespace-only selected cell deletes it. If the type is omitted, EditEngine uses single_line_text_field.

Remove every metafield column you do not intend to change. In a multi-row draft, the last cell for a given namespace/key wins, including a blank cell on a later line. An export puts metafield values on the top row, so blindly retaining blank continuation cells can delete them. For a metafield-only update, use one row per Draft Order ID and the exact metafield columns you want to set or delete.

Commands and additional accepted import headers

Draft CommandBehavior
NEWCreates when there is no matching draft; fails if a match already exists.
MERGEUpdates a match; creates on a miss unless an unresolved ID was supplied. Default when blank.
UPDATEUpdates an existing match; fails on a miss.
REPLACEValidates the replacement input, then deletes a matching open/invoice-sent draft and creates a new draft. Creates on a miss. The original ID is not retained.
DELETEDeletes a matching open/invoice-sent draft; fails when no draft matches.
IGNORESkips the row.

Completed drafts accept only tags-only MERGE/UPDATE groups. Remove lines, customer columns, invoice/completion flags, and all unrelated editable fields from that file. REPLACE and DELETE are not available for completed drafts.

The following accepted import headers are not extra export controls:

Import headerPurpose
NumberGroups spreadsheet rows after ID and before Name. Never looks up a Shopify draft or assigns its generated number.
PhoneSets the draft's standalone phone when nonblank. A present Phone header takes precedence over Customer: Phone for the draft contact input, including when its cell is blank.
Customer: NameFull-name fallback for blank customer First Name/Last Name values when a customer is created.
Company: Contact IDExplicit destination company-contact reference for a B2B draft. Must belong to the correct company/location relationship.

Preserve identity on every multi-row draft and keep its Draft Order Command consistent across those rows. An unidentified row containing draft or line data becomes a separate new-draft group; it does not join the previous row.

Differences from Matrixify to keep in mind

The official Matrixify Draft Orders reference provides the source format and column terminology. EditEngine's actual import rules above take precedence when moving a file between apps.

  • EditEngine can find a draft by exact Name when ID is absent; Matrixify documents ID for existing-draft updates.
  • EditEngine uses address Name to fill blank first/last-name values, even when those separate headers exist. Matrixify documents the full-name fallback when the separate columns are absent.
  • Some Matrixify fields without an export-only label are read-only here, including Price: Total, Customer: State, Line: Vendor, Line: Gift Card, and Line: Fulfillment Service.
  • EditEngine rejects the read-only customer marketing values REDACTED and INVALID as described above.
Previous
Export and import Shopify Draft Orders