We noticed, that some orders that are created via GraphQL API with the orderCreate mutation don’t have a fulfillment record set on fulfillment orders.
After debugging this with the Shopify support, it was confirmed to be a bug:
This is a confirmed bug on our side, not something wrong with your integration.
The shipping address is present, so the destination can be inferred. Here is their summary:
When an order is created via
orderCreatewithout a customer attached, the internal fulfillment-order destination record fails an internal validation (it currently requires a customer to be present) and is dropped, which is whyfulfillmentOrder.destinationcomes backnull, even though your shipping address is valid and present. The fulfillment orders themselves are created asynchronously after the mutation returns, which matches the few-minutes delay you saw.
The was reported and is known for close to 3 months now at the beginning of August and was forwarded to the relevant team:
We’ve filed this with the Fulfillment team to fix the destination creation so it no longer depends on a customer being attached.
However, it is still not fixed and check-ins haven’t provided any additional details, except a reference to the suggested workaround:
Workaround until the fix ships:
Attach a customer to the order in theorderCreatemutation (even a minimal/placeholder customer). With a customer present, the destination record validates and persists correctly, andfulfillmentOrder.destinationwill contain your shipping address data as expected.