Cannot mark an imported order as fulfilled with GraphQL

Topic summary

A developer is importing historical orders from a legacy e-commerce platform to Shopify via GraphQL. The orders import successfully but appear as “Unfulfilled” and need to show as “Fulfilled.”

The Issue:

  • According to Shopify documentation, fulfillment orders are automatically created when orders are created
  • The intended workflow is: query the FulfillmentOrder using the order ID, then use a FulfillmentCreate mutation to mark it fulfilled
  • However, when querying for fulfillment orders on confirmed existing orders, the fulfillmentOrders array returns empty (nodes: [])
  • Access scope errors were initially present but have been resolved

Technical Details:

  • The GraphQL query successfully returns order data but with no fulfillment orders
  • Inventory tracking is disabled for products (most are drop-shipped)
  • The issue remains unresolved with no responses yet

Status: Open question - seeking explanation for why fulfillment orders aren’t being created for imported orders

Summarized with AI on October 28. AI used: claude-sonnet-4-5-20250929.

I am importing orders from our legacy e-commerce platform to shopify using graphql. I am import the orders just fine, but they show as “Unfulfilled” in shopify. I need them to show as “Fulfilled” as they are historical orders.

According to the FulfillmentOrder docs: “Shopify creates fulfillment orders automatically when an order is created.” and that I need to query the FulfillmentOrder with the order ID to get the Fulfillment Order, then once I have that, do a FulfillmentCreate mutation to mark the order as fulfilled.

The problem is, when I try to get the Fulfillment Order with the order id, no result is returned, so I can’t create the fulfillment. At first I was getting access scope errors, but I fixed those. When I run the fulfillmentOrders query for an order that DEFINITELY exists:

query GetFulfillmentOrdersForOrder {
  order(id: "gid://shopify/Order/6670350909773") {
    fulfillmentOrders(first: 10) {
      nodes {
        id
        status
        createdAt
        fulfillAt
        destination {
          address1
          city
          province
          zip
        }
        lineItems(first: 5) {
          nodes {
            id
            totalQuantity
            variant {
              id
              title
            }
          }
        }
        assignedLocation {
          name
          address1
          city
          province
          zip
        }
      }
    }
  }
}

I get a response, but the fulfillmentOrders array is empty

{
    "data": {
        "order": {
            "fulfillmentOrders": {
                "nodes": []
            }
        }
    },
    "extensions": {
        "cost": {
            "requestedQueryCost": 47,
            "actualQueryCost": 3,
            "throttleStatus": {
                "maximumAvailable": 2000.0,
                "currentlyAvailable": 1997,
                "restoreRate": 100.0
            }
        }
    }
}

What am I missing?

If it is relevant, inventory tracking is not on for the products in our shop as most of them are drop shipped.