Order.physicalLocation is going to deprecate, with the recommended replacement being fulfillmentOrders.assignedLocation.
However, fulfillmentOrders cannot be used in bulk operations due to the 5-connection limit.
Example bulk query that works today (using deprecated physicalLocation):
mutation BulkRunQuery($query: String!) {
bulkOperationRunQuery(query: $query) {
bulkOperation {
id
status
}
userErrors {
field
message
}
}
}
# $query value:
{
orders(query: "created_at:>=2026-01-01 AND created_at:<=2026-03-09") {
edges {
node {
id
name
processedAt
physicalLocation {
id
}
fulfillments {
id
status
location {
id
}
fulfillmentLineItems(first: 100) {
edges {
node {
id
quantity
lineItem {
id
}
}
}
}
}
lineItems(first: 100) {
edges {
node {
id
title
quantity
sku
}
}
}
shippingLines(first: 100) {
edges {
node {
id
title
}
}
}
refunds(first: 50) {
edges {
node {
id
createdAt
refundLineItems(first: 100) {
edges {
node {
lineItem {
id
}
quantity
}
}
}
}
}
}
discountApplications(first: 100) {
edges {
node {
allocationMethod
targetSelection
targetType
index
}
}
}
}
}
}
}
Attempting to replace physicalLocation with fulfillmentOrders:
# Replacing physicalLocation with:
fulfillmentOrders(first: 10) {
edges {
node {
status
assignedLocation {
location {
id
}
}
}
}
}
Error response:
{
"data": {
"bulkOperationRunQuery": {
"bulkOperation": null,
"userErrors": [
{
"field": ["query"],
"message": "Bulk queries cannot contain more than 5 connections."
}
]
}
}
}
Use case
We use physicalLocation in bulk queries to resolve the supplier/fulfillment location for unfulfilled and POS orders in our tax reporting app.
For fulfilled orders, we use fulfillments.location.id, but for unfulfilled or POS orders, physicalLocation is the only way to determine the correct location within a bulk query.
Could you please suggest an alternative approach for resolving the order’s physical location within bulk queries, given that fulfillmentOrders cannot be added due to the 5-connection limit?