Install
Install

UPS WorldShip Export – Configuration

The UPS WorldShip Export in the Matrixify app produces an XML file with your store’s Orders data that imports directly into UPS
WorldShip. Its behavior can be adjusted with a per-store set of technical configuration parameters listed below.

Copy the full UPS WorldShip configuration example JSON, fill in your values, remove attributes you do not wish to set or configure, and send the configuration JSON to the Matrixify Support – we will apply it to your store. You do not need to use/set all configuration attributes – the Matrixify app will default to standard values/behviour if an attribute is not specifically configured.

Prefer not to edit JSON? Ask our AI Agent Maibo to prepare it from a plain-language description.

For instructions on how to Export Shopify Orders data to the UPS WorldShip file format using the Matrixify app, see our tutorial Export Orders from Shopify to UPS WorldShip®.

Examples of configuration JSON

Below you see examples of JSON code structure for the UPS WorldShip configuration within the Matrixify app.

You can copy the full JSON and keep only the parameters you need, replace the values with yours, and send it to Matrixify Support. All parameters are optional, and a typical store sends only a small subset.

Common minimum field configuration

{
  "DescriptionOfGoods": "Clothing",
  "Telephone": "+1 1234567890",
  "Email": "[email protected]",
  "price_includes_vat": false,
  "ShipperNumber": "A11B22"
}

Full UPS WorldShip configuration

{
  "DescriptionOfGoods": "Clothing",
  "Telephone": "+1 1234567890",
  "Email": "[email protected]",
  "price_includes_vat": true,
  "ShipperNumber": "A11B22",
  "ShipperNumberForAccessPoint": "88AA89",
  "ShipperNumberForNoAccessPoint": "86AA98",
  "xml_format": "xml_auto_import",
  "split_packages_per_unit": true,
  "package_dimensions_from_variant_metafields": {
    "Length": "custom.length",
    "Width": "custom.width",
    "Height": "custom.height"
  },
  "weight_unit": "lb",
  "PackageType": "CP",
  "fail_order_when_package_data_missing": true,
  "package_weights_from_order_metafield": "custom.package_weights",
  "reference1_source": {
    "parts": ["order_name", "customer_metafield:custom.customer_number"],
    "separator": " | ",
    "max_length": 20
  },
  "reference2_source": "sku",
  "reference3_source": "text:If damaged, return to sender",
  "remove_number_sign_from_references": true,
  "ship_to_elements_from_customer_metafields": {
    "CustomerID": "custom.customer_number",
    "LocationID": "custom.customer_number"
  },
  "ServiceType": "GND",
  "service_type_by_shipping_line": {
    "Ground": "GND",
    "3 Day Air": "3DS",
    "UPS Access Point": "GND"
  },
  "use_shipping_line_mapping": false,
  "number_of_packages_from_quantity": false,
  "ProfileName": {
    "GB": "GB_Youemp",
    "DE_FR_NL": "EU_Youemp",
    "EU": "EU_Einzelsendung",
    "WW": "WW_Youemp"
  },
  "InvoiceUnitOfMeasure": "CS",
  "use_presentment_currency": true,
  "BillTransportationTo": "SHP",
  "BillDutyTaxTo": "REC",
  "include_quantum_view_notify_block": true,
  "quantum_view_notify_types": ["Exception", "Delivery"],
  "write_quantum_view_notify_types_as_y": true,
  "include_quantum_view_notify_email_address": true,
  "access_point_quantum_view_notify_email_address": "[email protected]",
  "include_bill_duty_tax_to": true,
  "@ProcessStatus": "0",
  "@ShipmentOption": "SC",
  "include_shipment_key": true,
  "remove_number_sign_from_shipment_key": true,
  "include_empty_ship_to_address_lines": true,
  "omit_ship_to_attention_when_same_as_company_or_name": true,
  "remove_access_point_marker_from_address2": true,
  "hold_at_access_point_from_address2_marker": true,
  "fallback_shipping_email": "[email protected]",
  "sanitize_phone": true,
  "remove_us_phone_country_code": true,
  "remove_vat_for_GB": true,
  "ThirdPartyIntermediary": {
    "CompanyOrName": "Company Name",
    "Attention": "Contact Person",
    "Address1": "123 Main St",
    "CountryTerritory": "US",
    "PostalCode": "12345",
    "CityOrTown": "City Name",
    "StateProvinceCounty": "FL",
    "Telephone": "5551234567",
    "UpsAccountNumber": "ABC123"
  },
  "goods_elements_from_metafields": {
    "PartNumber": "product_metafield:ups.part_number",
    "DescriptionOfGood": "product_metafield:ups.description_of_goods"
  },
  "combine_goods_lines": true,
  "include_goods": true,
  "item_substitutions_by_sku": {
    "SKU_123ABC": [
      {
        "sku": "SKU_XYZ987",
        "price": 10.0,
        "quantity": 1,
        "title": "Replacement Item",
        "harmonized_system_code": "650500",
        "country_code_of_origin": "US"
      }
    ]
  }
}

Configuration field descriptions

Common information

These attributes are used by most shops and should always be included.

Field Description and allowed values
DescriptionOfGoods Text written into <DescriptionOfGoods> for the customs declaration.

Allowed Values

String.

Default

The first Line Item’s vendor.

Example
"Cans of our Beer, Clothing"
Telephone Fallback phone number used for <Telephone> when the shipping address has none.

When remove_us_phone_country_code is true, a fallback written as +1 plus 10 digits is exported as the bare 10 digits like any other Ship-to phone.

Allowed Values

String.

Default

Absent.

Example
"+1 1234567890"
Email Access Point notification failed-email address, used when an Order routes to a UPS Access Point.

This is the failed-notification address for UPS Access Point shipments, not a general contact address for the shipment. The recipient email on the shipment comes from the Order, with fallback_shipping_email setting as the fallback.

Allowed Values

Email string.

Default

Absent.

Example
"[email protected]"
price_includes_vat When enabled, prices for EU destinations are treated as VAT-inclusive, and the VAT portion is removed from the exported unit prices and freight charge. When disabled, prices are used as-is.

Allowed Values

true, false

Default

false

Example
true

XML Format

Field Description and allowed values
xml_format UPS WorldShip can import shipment XML in two official formats, and this parameter selects which one the Export produces. Choose it based on how your WorldShip consumes the file.

  • xml_auto_import – the UPS XML Auto Import format (<OpenShipments>). WorldShip watches a folder and processes new files hands-off, printing labels automatically. This is the default. Every setting on this page works in this format.
  • xml_batch_import – the UPS XML Batch Import format (<Shipments>). For bringing shipments in through the WorldShip Import-Export tab – imported as a batch, or recalled one at a time with Keyed Import. This format writes a <Good> for every Line Item of the Order (unless include_goods is false) and wraps the references in <ReferenceNumbers>. It writes no <Package> elements, no Quantum View Notify block and no Access Point block. Enable include_shipment_key together with it so each shipment can be recalled by the Order name.

Settings that have no effect in XML Batch Import:

  • split_packages_per_unit, package_dimensions_from_variant_metafields, package_weights_from_order_metafield, weight_unit, fail_order_when_package_data_missing, number_of_packages_from_quantity – no <Package> elements are written in this format
  • include_quantum_view_notify_block and the other Quantum View Notify keys – XML Auto Import only
  • hold_at_access_point_from_address2_marker and Email – Hold at UPS Access Point is XML Auto Import only
  • use_shipping_line_mapping – the built-in list is never consulted in this format

If WorldShip prints labels by itself from a watched folder, keep the default. If you open WorldShip and import shipments from the Import-Export tab, you need xml_batch_import.

Allowed Values

xml_auto_import, xml_batch_import

Default

xml_auto_import

Example
xml_batch_import

Shipper Number (one of these patterns is required)

Use either ShipperNumber alone, or both ShipperNumberForAccessPoint and ShipperNumberForNoAccessPoint together. If both patterns are present, the Access Point/No Access Point pair takes priority.

Field Description and allowed values
ShipperNumber Your UPS shipper account number is written into <ShipperNumber>. Used for Orders that do not route to a UPS Access Point (when set), and as the single account for all shipments when you do not configure separate Access-Point accounts. See the selection order note below the table.

Allowed Values

String.

Default

Absent.

Example
"A11B22"
ShipperNumberForAccessPoint UPS account number used when the Order routes to a UPS Access Point.

Allowed Values

String.

Default

Absent.

Example
"88AE89"
ShipperNumberForNoAccessPoint UPS account number used when the Order does not route to a UPS Access Point and ShipperNumber is not set.

Allowed Values

String.

Default

Absent.

Example
"86E898"

Package splitting and per-package data

Field Description and allowed values
split_packages_per_unit When enabled, every fulfillable unit of every shippable Line Item becomes its own <Package> element – one UPS label per unit. For example, SKU A quantity 2 + SKU B quantity 3 produces 5 packages in one shipment. <NumberOfPackages> becomes the package count and <ShipmentActualWeight> becomes the sum of the package weights. Only shippable units are counted; on partially fulfilled Orders, only the still-fulfillable quantity is split. When disabled, no <Package> elements are written (legacy shape).

Allowed Values

true, false

Default

false

Example
true
package_dimensions_from_variant_metafields Maps each WorldShip package dimension element name to the Variant Metafield that holds its value. The object key is the XML element name written into each <Package>; the value is the namespace.key of the Variant Metafield to read. Supports Shopify dimension-type Metafields ({"value":20.0,"unit":"INCHES"}) and plain numeric Metafields. Any stored unit (inches, feet, yards, millimeters, centimeters, meters) is converted to inches. Whole numbers are written without a trailing .0 (20.0 becomes 20); real decimals are preserved (17.5). A dimension whose Metafield is empty is omitted from that package. Used only when split_packages_per_unit is true.

Allowed Values

Object of ElementName: "namespace.key" pairs. Typical element names: Length, Width, Height.

Default

Absent – no dimensions written.

Example
{
  "Length": "custom.length",
  "Width": "custom.width",
  "Height": "custom.height"
}
weight_unit Unit for the per-package <Weight>, converted from the Line Item weight. Whole numbers drop the trailing .0; decimals are rounded to 2 places. Affects output only when split_packages_per_unit is true. The shipment-level weight written without splitting stays in kilograms regardless.

Does not apply to package_weights_from_order_metafield, whose values are already in the Merchant’s own unit.

Allowed Values

"kg", "lb"

Default

"kg"

Example
"lb"
PackageType Package-type code written as <PackageType>. Without <Package> elements, it is written once in <ShipmentInformation>. With split_packages_per_unit or package_weights_from_order_metafield, it is written in each <Package> instead, because WorldShip rejects the shipment when it appears in both places.

Allowed Values

Any UPS WorldShip package-type code (string), for example "CP" (customer packaging).

Default

"CP"

Example
"CP"
fail_order_when_package_data_missing When enabled, an Order with bad packing data is excluded from the Export and reported as a failed item, with a message naming the Order and the offending data. Other Orders in the same Export continue. The purpose is to never print a label on wrong or missing packing data – fix the data and re-export instead. What counts as bad depends on which packing feature the shop uses:

  • With split_packages_per_unit on, a purchased Variant missing any configured dimension or having no weight; the message names the SKU and the missing fields. When disabled, missing dimensions are simply omitted from the package.
  • With package_weights_from_order_metafield set, an Order whose packing Metafield is missing, empty, or not a list of positive numbers; the message names the Metafield, and the Order is never split instead. When disabled, the Order is exported without the Metafield packages – split per unit when split_packages_per_unit is on, otherwise without <Package> elements.

The failed Orders appear on the Matrixify Export job and in its results file – they are never sent to WorldShip, so WorldShip has nothing to show for them.

XML Auto Import only – in XML Batch Import there is no package data to check.

Allowed Values

true, false

Default

false

Example
true
package_weights_from_order_metafield Names an Order Metafield, as namespace.key, that holds the per-package weights of the Order – for shops whose own system decides how an Order is packed and writes the result to the Order. XML Auto Import only; XML Batch Import ignores this key.

Each value becomes its own <Package> with the PackageType, the value as its <Weight>, and the references – the same references on every package of the Order. <NumberOfPackages> is the package count. PackageType, the shipment weight and the references are left out of <ShipmentInformation>, because WorldShip rejects a shipment that has them in both places:

<Package>
  <PackageType>CP</PackageType>
  <Weight>41</Weight>
  <Reference1>1009</Reference1>
  <Reference2>If damaged, return to sender</Reference2>
</Package>
<Package>
  <PackageType>CP</PackageType>
  <Weight>21.5</Weight>
  <Reference1>1009</Reference1>
  <Reference2>If damaged, return to sender</Reference2>
</Package>

This takes precedence over split_packages_per_unit. An Order without valid packing data falls back to splitting per unit, or to a single shipment-level weight when splitting is off – unless fail_order_when_package_data_missing is true, then that Order fails and is never split.

The Metafield holds the list of weights in either of two forms:

  • a JSON array – [41.0, 21.5], or Shopify’s list.number_decimal form ["41.0", "21.5"];
  • text split on every comma – 41.0, 21.5 or 41.0,21.5. An empty entry between or after commas is skipped, so 41.0, 21.5, and 41,,5 are fine.

Each entry is read as the one number it contains, with a dot as the decimal separator – the same reading a list.number_decimal Metafield gets when imported from a file. Text around the number is ignored (41 kg is 41). The rules that follow from this:

  • A comma always separates entries. 41,5 is two packages of 41 and 5, not one of 41.5; 1,234.5 is two packages of 1 and 234.5. Write 1234.5.
  • Write a leading zero: .5 is read as 5, not 0.5. Write 0.5.
  • An entry with no number, or with more than one (4_1, 0x1A, 1e400, 4.1.5), is invalid packing data.
  • A weight is positive: 0, a negative, and one that rounds to 0 at 2 decimals (0.004) are invalid.
  • In the JSON form every element must be a weight: [41.0, null] and [41.0, ""] are invalid, rather than shipping one label short.
  • More than 200 packages is invalid.

The weights keep the Metafield’s own unit – weight_unit does not apply – are rounded to 2 decimal places, and drop trailing zeros (41.0 is written as 41).

An Order whose Metafield is missing, empty, or holds anything that is not a positive number never gets a partial set of packages. When fail_order_when_package_data_missing is true, it is excluded from the file and reported as a failed item. The failure message tells the two cases apart: an unfilled Metafield reads “is not filled in … Fill it on the Order”, while one holding something unreadable quotes the value back – “holds [41 and 21.5], which is not a list of positive package weights … Correct it on the Order”.

The namespace cannot be an app-owned one (app--...): Shopify reserves those for the app that owns them, so such a key resolves to nothing on every Order. A key not spelled namespace.key (a bare package_weights) cannot address a Metafield either, and every Order then reads as unfilled – check this value first when every Order fails.

Confirm that the first file imports into WorldShip before relying on it.

Allowed Values

A string in the form namespace.key naming an Order Metafield.

Default

Absent – no packages from the Order.

Examples
"custom.package_weights"

References and ship-to linkage

Field Description and allowed values
reference1_source Chooses what Shopify data fills <Reference1>. Without <Package> elements the reference is written in <ShipmentInformation> – inside <ReferenceNumbers> in XML Batch Import. In XML Auto Import with split_packages_per_unit on, or with package weights from package_weights_from_order_metafield, it is written in each <Package> instead.

Set as a single source string, or as a JSON object joining several sources into one value.

Allowed Values

Single source – one of:

  • "order_name" – the Order name (for example #EZ1019),
  • "order_id" – the Shopify Order ID,
  • "sku" – the SKU; at package level the package’s own Line Item SKU, at shipment level the first Line Item’s SKU,
  • "text:<text>" – a fixed text written on every shipment, for example "text:If damaged, return to sender". A leading # is stripped from it too when remove_number_sign_from_references is true,
  • "customer_metafield:namespace.key" – the value of that Customer Metafield,
  • "blank" – no value at all. The element is still written, but empty, so a WorldShip import map that expects to find the field keeps finding it. This is how a shop switches off the Reference 1 (Order name) and Reference 2 (Order ID) defaults without leaving those values in the feed. Use "blank" for an intentionally empty Reference, not "text:" with nothing after it.

Combined sources – a JSON object with:

  • parts – array of the same source values, written in the order listed,
  • separator – string written between the parts. Optional; if not specified, defaults to " / " (forward slash with spaces on both sides),
  • max_length – integer. The parts are joined first, then the whole value is cut to this many characters. Optional; if not specified, defaults to 35.
Default

Order name.

Examples
"customer_metafield:custom.customer_number"
{ "parts": ["order_name", "customer_metafield:custom.customer_number"], "separator": " | ", "max_length": 20 }
reference2_source Chooses what Shopify data fills <Reference2>. Without <Package> elements the reference is written in <ShipmentInformation> – inside <ReferenceNumbers> in XML Batch Import. In XML Auto Import with split_packages_per_unit on, or with package weights from package_weights_from_order_metafield, it is written in each <Package> instead.

Set as a single source string, or as a JSON object joining several sources into one value.

Allowed Values

Single source – one of:

  • "order_name" – the Order name (for example #EZ1019),
  • "order_id" – the Shopify Order ID,
  • "sku" – the SKU; at package level the package’s own Line Item SKU, at shipment level the first Line Item’s SKU,
  • "text:<text>" – a fixed text written on every shipment, for example "text:If damaged, return to sender". A leading # is stripped from it too when remove_number_sign_from_references is true,
  • "customer_metafield:namespace.key" – the value of that Customer Metafield,
  • "blank" – no value at all. The element is still written, but empty, so a WorldShip import map that expects to find the field keeps finding it. This is how a shop switches off the Reference 1 (Order name) and Reference 2 (Order ID) defaults without leaving those values in the feed. Use "blank" for an intentionally empty Reference, not "text:" with nothing after it.

Combined sources – a JSON object with:

  • parts – array of the same source values, written in the order listed,
  • separator – string written between the parts. Optional; if not specified, defaults to " / " (forward slash with spaces on both sides),
  • max_length – integer. The parts are joined first, then the whole value is cut to this many characters. Optional; if not specified, defaults to 35.
Default

Order ID.

Examples
"sku"
"text:If damaged, return to sender"
{ "parts": ["sku", "order_name"], "separator": ",", "max_length": 20 }
reference3_source Chooses what Shopify data fills <Reference3>. Without <Package> elements the reference is written in <ShipmentInformation> – inside <ReferenceNumbers> in XML Batch Import. In XML Auto Import with split_packages_per_unit on, or with package weights from package_weights_from_order_metafield, it is written in each <Package> instead.

Set as a single source string, or as a JSON object joining several sources into one value.

Allowed Values

Single source – one of:

  • "order_name" – the Order name (for example #EZ1019),
  • "order_id" – the Shopify Order ID,
  • "sku" – the SKU; at package level the package’s own Line Item SKU, at shipment level the first Line Item’s SKU,
  • "text:<text>" – a fixed text written on every shipment, for example "text:If damaged, return to sender". A leading # is stripped from it too when remove_number_sign_from_references is true,
  • "customer_metafield:namespace.key" – the value of that Customer Metafield,
  • "blank" – no value at all. The element is still written, but empty, so a WorldShip import map that expects to find the field keeps finding it. This is how a shop switches off the Reference 1 (Order name) and Reference 2 (Order ID) defaults without leaving those values in the feed. Use "blank" for an intentionally empty Reference, not "text:" with nothing after it.

Combined sources – a JSON object with:

  • parts – array of the same source values, written in the order listed,
  • separator – string written between the parts. Optional; if not specified, defaults to " / " (forward slash with spaces on both sides),
  • max_length – integer. The parts are joined first, then the whole value is cut to this many characters. Optional; if not specified, defaults to 35.
Default

Not written. <Reference3> appears only when this key is configured.

Examples
"order_name"
{ "parts": ["order_id", "order_name"], "separator": " , ", "max_length": 10 }
remove_number_sign_from_references When true, a leading # is stripped from the resolved <Reference1> / <Reference2> / <Reference3> values (#1009 becomes 1009), wherever the references are written – <ShipmentInformation>, <ReferenceNumbers>, or per <Package>. Useful where the reference prints on the label and the shop wants the bare Order number, or where a WorldShip import map matches on it. <ShipmentKey> is not affected – it has its own remove_number_sign_from_shipment_key key. A reference without a #, a numeric one (the default Reference 2 is the numeric Order ID), and a "blank" one are written unchanged. Config-gated because existing shops’ WorldShip import maps may already match on the #-prefixed form.

Allowed Values

true, false

Default

false

Example
true
ship_to_elements_from_customer_metafields Maps <ShipTo> child element names to Customer Metafield keys. Each listed element is written as the first children of <ShipTo>, taking its value from the named Customer Metafield – this attaches a shipment to an existing WorldShip customer record instead of writing a fresh address. An element is omitted when the Order has no customer or the Metafield value is empty.

Allowed Values

Object of ElementName: "namespace.key" pairs. Typical element names: CustomerID, LocationID.

Default

Absent – no CustomerID / LocationID written.

Example
{
  "CustomerID": "custom.customer_number",
  "LocationID": "custom.customer_number"
}

Shipment information

Field Description and allowed values
ServiceType Forces a specific UPS service code.

The UPS service is chosen in this order:

  • ServiceType, when set – forces one service for every Order
  • service_type_by_shipping_line, when the Order’s rate name is in the map
  • the built-in UPS rate name list, unless use_shipping_line_mapping is false
  • the regional default
Allowed Values

Any UPS Service Type – see UPS Service Codes, UPS Service Codes for Freight Shipments, UPS Service Codes for UPS Mail Innovations Shipments and UPS Service Codes and Weight Limits for UPS SurePost Shipments.

Default

Derived automatically from destination and shipping line.

Example
"GND"
service_type_by_shipping_line Maps the shop’s own checkout shipping rate names to UPS service codes, so a Merchant can keep their own wording at checkout instead of renaming rates to UPS’s official service names. Optional; when the key is absent nothing changes.

This map is consulted BEFORE the built-in UPS rate name list, so a shop can override a built-in name with its own meaning. It is NOT switched off by use_shipping_line_mapping: false – that setting only affects the built-in list.

Matching ignores letter case, punctuation and the (R) symbol, so “Ground”, “GROUND” and “Ground(R)” all match the same entry.

Example
"service_type_by_shipping_line": {"Ground": "GND","3 Day Air": "3DS"}
ProfileName Selects the WorldShip ProfileName by destination region. Regions: GB = United Kingdom, DE_FR_NL = Germany / France / Netherlands, EU = remaining EU member states, WW = everywhere else. When absent, a profile is derived only for B2C EU shipments.

Allowed Values

Region object with string values for keys GB, DE_FR_NL, EU, WW.

Default

Absent – derived for EU B2C.

Example
{
  "GB": "GB_Youemp",
  "DE_FR_NL": "EU_Youemp",
  "EU": "EU_Einzelsendung",
  "WW": "WW_Youemp"
}
use_shipping_line_mapping When enabled, the Shopify shipping line title is mapped to a UPS service code (for example, UPS Next Day Air becomes 1DA). When disabled, no mapping is attempted, and the service code falls back to the regional default. Ignored when ServiceType is set thus forcing exact service type.

Allowed Values

true, false

Default

true

Example
false
number_of_packages_from_quantity When enabled, <NumberOfPackages> is the Order’s total fulfillable quantity instead of 1. Ignored when <Package> elements are written – with split_packages_per_unit on, or with package weights from package_weights_from_order_metafield – because <NumberOfPackages> is then the actual package count.

Allowed Values

true, false

Default

false

Example
true
InvoiceUnitOfMeasure Written into each <Goods> block’s <InvoiceUnitOfMeasure>.

Allowed Values

UPS unit-of-measure code (string), for example "PC" (pieces) or "CS" (cases).

Default

"PC"

Example
"CS"
use_presentment_currency When enabled, the file declares the currency the Customer actually paid in instead of the store’s own currency: the currency code, the unit prices and the freight charge all come from the paid amounts.

A Canadian store selling in USD to the United States then exports USD on those shipments and CAD on Canadian ones. The currency code and the amounts always come from the same source, so the declared customs value is never mixed up. When an Order has no separate paid currency — a store that prices every Market in its store currency — the whole file stays in the store currency, exactly as before.

Do not combine with item_substitutions_by_sku unless the substitution prices are given in the currency the file declares.

Allowed Values

true, false

Default

false

Example
true
BillTransportationTo Who pays for transportation, written into <BillTransportationTo>.

Allowed Values

"SHP" (shipper), "REC" (receiver), "TP" (third party). For "TP", also set ThirdPartyIntermediary.

Default

"SHP"

Example
"TP"
BillDutyTaxTo Who pays duty and tax, written into <BillDutyTaxTo>. Forced to "SHP" when the derived profile is EU_Einzelsendung.

Allowed Values

"REC" (receiver), "SHP" (shipper), "TP" (third party).

Default

"REC"

Example
"SHP"
include_quantum_view_notify_block When enabled and the shipment has an email address, a UPS Quantum View Notify (QVN) block is added, requesting a ship notification.

Allowed Values

true, false

Default

false

Example
true
quantum_view_notify_types The Quantum View Notify notification types to request. Each listed type is written as 1. Ship, InTransit and Delivery are always written, as 0 when not listed. Exception is written only when listed. Needs include_quantum_view_notify_block.

Allowed Values

Array of any of "Ship", "Exception", "Delivery", "InTransit".

Default

["Ship"]

Example
["Exception", "Delivery"]
write_quantum_view_notify_types_as_y When enabled, the Quantum View Notify block holds only the types listed in quantum_view_notify_types, each written as Y, as in the UPS XML Auto Import guide. Types that are not listed are left out instead of written as 0.

Allowed Values

true, false

Default

false

Example
true
include_quantum_view_notify_email_address When enabled, the Order email is written as <EMailAddress> in the Quantum View Notify block, so the block names its recipient. Without it, no recipient is written in the file. Needs include_quantum_view_notify_block.

Allowed Values

true, false

Default

false

Example
true
access_point_quantum_view_notify_email_address An extra Quantum View Notify recipient added to every Hold at UPS Access Point shipment, for example a staff address. It gets the same notification types as the Customer. On an Order without an email it is the only recipient. Applies to Access Point shipments from the #APID: marker and from hold_at_access_point_from_address2_marker. Needs include_quantum_view_notify_block.

Allowed Values

Email string.

Default

Absent.

Example
"[email protected]"
include_bill_duty_tax_to When disabled, will remove the BillDutyTaxTo attribute from the Shipment Information.

Allowed Values

true, false

Default

true

Example
false
goods_elements_from_metafields Fills the per-item customs fields of the Goods blocks from Metafields the Merchant maintains in Shopify, instead of the Variant SKU and the Line Item title.

Each key is the element name — PartNumber or DescriptionOfGood — and each value points at the Metafield to read: product_metafield:<namespace.key> for a Product Metafield, or variant_metafield:<namespace.key> for a Variant Metafield.

A mapped element is written from the Metafield only: when the Metafield is empty, the element is written empty instead of falling back to the SKU or the title. The value is written exactly as entered, with accented characters converted to plain letters, because WorldShip expects plain text. Elements that are not mapped keep their normal source.

Allowed Values

JSON object consisting of PartNumber and DescriptionOfGood keys.

Default

Part Number is the Variant SKU, Description of Goods is the Line Item title.

Example
{
  "PartNumber": "product_metafield:ups.part_number",
  "DescriptionOfGood": "product_metafield:ups.description_of_goods"
}
combine_goods_lines When enabled, Goods lines that carry the same customs data are combined into one commodity line on the customs documentation. UPS WorldShip itself never merges commodity lines on import – every Goods entry in the file becomes its own line – so without this parameter each Line Item of the Order prints as a separate customs line, even when several of them are the same commodity.

How the lines are combined:

  • Lines combine only when every exported customs element except the quantity and the unit price is exactly the same: Part Number, Description of Good, Tariff Code (Harmonized System code), Country of Origin, the unit of measure and currency, and any values mapped from Metafields via goods_elements_from_metafields.
  • A line without a Tariff Code never combines – an unclassified item always keeps its own line.
  • The combined line carries the summed quantity and a unit price of total value divided by total units, written with up to 6 decimal places – UPS WorldShip’s own Unit Price field format – so quantity times unit price still equals the original line values added together. Whenever the averaged price fits in 2 decimals (always the case when the combined lines share one price), the plain 2-decimal price is written. For example, 1 unit at 29.82 + 2 units at 31.24 becomes one line: 3 units at 30.766667 = 92.30.
  • The line order is kept – the combined line takes the position of its first item.
  • A group whose summed quantity would not fit WorldShip’s 4-digit Units field (over 9999), or whose quantities sum to zero, is left uncombined.
  • Combining runs after SKU substitutions (item_substitutions_by_sku), VAT removal and the paid-currency selection (use_presentment_currency), so lines are always grouped by the final exported values. Works the same in both XML formats.

Note: with the default SKU-based PartNumber, different Variants keep their own lines. Sizes of one product combine when PartNumber and DescriptionOfGood come from Product Metafields via goods_elements_from_metafields (or when their SKUs are equal or blank).

Allowed Values

true, false

Default

false

Example
true
include_goods When false, no Goods elements are written in either XML format – the commodity list disappears from the file. For shops whose WorldShip does not produce customs documentation from the import (for example domestic-only shipping), where the Goods lines are only noise in the import map. DescriptionOfGoods is a separate shipment-level element and is still written. Goods lines never print on a shipping label – they are customs data – so switching them off does not change the label.

Allowed Values

true, false

Default

true

Example
false
@ProcessStatus Value of the ProcessStatus attribute on the OpenShipment element.

Allowed Values

String, typically "0" or "".

Default

"0"

Example
""
@ShipmentOption Value of the ShipmentOption attribute on OpenShipment. Either a plain string used for all destinations, or a region object chosen by destination (same regions as ProfileName). "SC" means ShipmentCharge.

Allowed Values

String (for example "", "SC"), or a region object with keys GB, DE_FR_NL, EU, WW.

Default

"SC" for B2C EU shipments, empty otherwise.

Example
{
  "GB": "",
  "DE_FR_NL": "SC",
  "EU": "",
  "WW": ""
}

Ship-to address and contact

Field Description and allowed values
include_shipment_key When enabled, a <ShipmentKey> equal to the Order name is written as the first element of each OpenShipment, so WorldShip can key its import on it.

Allowed Values

true, false

Default

false

Example
true
remove_number_sign_from_shipment_key When true, the leading # of the Order name is stripped from <ShipmentKey> (#1009 becomes 1009) – some WorldShip keyed-import setups match on the bare Order
number.

Allowed Values

true, false

Default

false

Example
true
include_empty_ship_to_address_lines When enabled, Address 2 and Address 3 are always written in the Ship-to block, empty when the address has no such line, so the shipper always sees the address-line slots.

By default Address 2 is written only when the address has a second line, and Address 3 is not written at all. Shopify collects only two address lines, so Address 3 is always empty — it exists as the placeholder that some WorldShip import maps expect to find.

Allowed Values

true, false

Default

false

Example
true
omit_ship_to_attention_when_same_as_company_or_name When enabled, the Ship-to <Attention> is left out when it would only repeat <CompanyOrName> – the address has no company, or the company is the same as the name. A shipment to a company keeps <Attention> with the person’s name. UPS Access Point shipments always keep it, because WorldShip requires it there. Works the same in both XML formats.

Allowed Values

true, false

Default

false

Example
true
remove_access_point_marker_from_address2 When enabled and the shipping address second line is the Access Point marker written by the HubBox app, only the Access Point ID is written in <Address2> – .D2R.U55323225. becomes U55323225. Any other second line is written unchanged. On its own this does not make the Order an Access Point shipment – see hold_at_access_point_from_address2_marker.

Allowed Values

true, false

Default

false

Example
true
hold_at_access_point_from_address2_marker When enabled and the shipping address second line is the HubBox Access Point marker, the Order ships as Hold at UPS Access Point. The shipping address is written in <ShipTo> and also as the <AccessPoint> block with the <UPSAccessPointID>.

The Customer gets the UPS “ready for pickup” email at the Order email, or at fallback_shipping_email when the Order has none. If that email cannot be delivered, UPS sends a notice to the Email address.

Use it together with remove_access_point_marker_from_address2, and map the Access Point shipping rate name in service_type_by_shipping_line. XML Auto Import only.

Allowed Values

true, false

Default

false

Example
true
fallback_shipping_email Fallback email used for <EmailAddress> when the Order has no contact, customer, or order email.

Allowed Values

Any email string.

Default

Absent.

Example
"[email protected]"
sanitize_phone When enabled, spaces and dashes are stripped from the Ship-to phone number (some WorldShip setups reject formatted numbers).

Allowed Values

true, false

Default

false

Example
true
remove_us_phone_country_code When true, a Ship-to phone number that is exactly +1 followed by 10 digits (ignoring spaces, dashes, dots and parentheses) is written as the bare 10 digits – +1 707-433-4606 becomes 7074334606. This is a Merchant preference, not a WorldShip requirement: WorldShip imports +1-prefixed numbers as well, and the key exists for shops that want the domestic 10-digit form on their labels. Any other number – another country code, or one already in 10-digit form – is written unchanged. The Telephone fallback goes through the same strip, so a fallback written as +1... is exported as its bare 10 digits too.

Allowed Values

true, false

Default

false

Example
true

Pricing and VAT

Field Description and allowed values
remove_vat_for_GB When enabled, VAT is also removed from prices for United Kingdom destinations. Relevant when price_includes_vat is true.

Allowed Values

true, false

Default

false

Example
true

International and third party

Field Description and allowed values
ThirdPartyIntermediary Third-party intermediary details. When present, the whole object is written into the <ThirdParty>, <ThirdPartyReceiver>, and <Importer> blocks – each sub-key becomes an XML element inside those blocks. Required when BillTransportationTo is "TP".

Allowed Values

Object; see the sub-fields table.

Default

Absent.

Example
{
  "CompanyOrName": "Company Name",
  "Attention": "Contact Person",
  "Address1": "123 Main St",
  "CountryTerritory": "US",
  "PostalCode": "12345",
  "CityOrTown": "City Name",
  "StateProvinceCounty": "FL",
  "Telephone": "5551234567",
  "UpsAccountNumber": "ABC123"
}
item_substitutions_by_sku Maps a purchased SKU to an array of substitute items. Each matched Line Item is replaced by the listed substitutes, with the substitute quantity multiplied by the ordered quantity. Used by stores that ship bundle components under different SKUs than the one sold.

Allowed Values

Object mapping "OriginalSKU" to an array of substitute item objects.

Default

Absent.

Example
{
  "ORIGINAL_SKU": [
    {
      "sku": "REPLACEMENT_SKU",
      "price": 10.0,
      "quantity": 1,
      "title": "Replacement Item",
      "harmonized_system_code": "650500",
      "country_code_of_origin": "US"
    }
  ]
}

Ask Maibo to prepare the configuration

You do not have to assemble the JSON by hand. Ask Maibo, our AI Agent, to guide you through a short set of questions and prepare the configuration JSON for you.
Maibo knows every parameter on this page and their allowed values.

Maibo is available in:

  • Slack
  • the in-app chat, inside the Matrixify app
  • the chat on our website

If you have connected Matrixify to your own AI Agent through the MCP connection, you can send the same prompt to your own AI Agent instead of Maibo – it produces the same configuration JSON.

Copy this prompt and send it to Maibo (or to your own AI Agent) to start:

I want to set up the "Export to UPS WorldShip" format in Matrixify for my Shopify store. Help me build the EXPORT_UPS_WORLDSHIP_SETUP configuration JSON.

Please interview me one question at a time, in plain language - do not ask me to write JSON or to know parameter names. Ask about the essentials first (my store .myshopify.com domain, description of goods for customs, a phone number and a notification email, my UPS shipper number, and whether my product prices already include VAT), then the optional features: splitting each ordered unit into its own package with dimensions and weight taken from my product metafields, what goes into the Reference 1 and Reference 2 fields, linking shipments to my existing WorldShip customer records, which UPS service to use, who pays for shipping and duties, VAT handling, notifications, bundles that ship as separate components, and any advanced options.

Skip questions that do not apply based on my earlier answers, and only include the settings I actually need - leave everything else at its default. Use the Matrixify "UPS WorldShip Export - Configuration" documentation for the available parameters and their allowed values.

When we are done, give me the configuration as a single JSON object plus a short plain-language summary of each setting so I can check it. Then I will send it to Matrixify Support to apply to my store.

Start by asking me the first question.

If you already know exactly what you want, you can skip the questions and just describe it directly, for example:

I want to set up the "Export to UPS WorldShip" format in Matrixify for my Shopify store. Help me build the EXPORT_UPS_WORLDSHIP_SETUP configuration JSON.

Split every ordered unit into its own package. Take Length, Width and Height from the Variant Metafields custom.length, custom.width and custom.height, and use pounds for the weight. 
Fail the Order if any dimension or weight is missing. 
Put my customer number Metafield custom.customer_number into Customer ID, Location ID and Reference 1, and the SKU into Reference 2. 
My UPS shipper number is R89Y57, invoice unit of measure is CS, and my prices do not include VAT.

Either way, you get back a ready configuration JSON. Review it against the tables on this page – check each key and its value against the field it maps to – and confirm it matches what you described.
Once it looks correct, send it to our Support.