Fulfilling an order with a digital product

Fulfilling an order with a digital product

sebastian555
Tourist
5 0 1

I'm trying to fulfill an order via GraphQL call but no luck so far. I believe the issue might be because I'm using products with Track Quantity and This is a physical product both set to false. Perhaps some of my understanding about fulfillments is wrong. 

I can see that none of my test orders have fulfillments associated with them. 

// https://some-store.myshopify.com/admin/api/2025-04/graphql.json
{
  orders(first: 1) {
    edges {
      node {
        id
        name
        fulfillable
        fulfillmentsCount {
            count
        }
        fulfillments (first: 30) {
            legacyResourceId
            requiresShipping
            createdAt
        }
        fulfillmentOrders (first: 30) {
            nodes {
                channelId
            }
            edges {
                node {
                    id
                }
            }
        }
      }
    }
  }
}


Result

{
    "data": {
        "orders": {
            "edges": [
                {
                    "node": {
                        "id": "gid://shopify/Order/11462815121756",
                        "name": "#1001",
                        "fulfillable": true,
                        "fulfillmentsCount": {
                            "count": 0
                        },
                        "fulfillments": [],
                        "fulfillmentOrders": {
                            "nodes": [],
                            "edges": []
                        }
                    }
                }
            ]
        }
    },
    "extensions": {
        "cost": {
            "requestedQueryCost": 19,
            "actualQueryCost": 7,
            "throttleStatus": {
                "maximumAvailable": 2000.0,
                "currentlyAvailable": 1993,
                "restoreRate": 100.0
            }
        }
    }
}


I can easily fulfill an order on my Shopify admin page in Orders section. I want to achieve the same via API.

Here's my desired workflow. FYI we're using Shopify Hydrogen.
- Customer places an order.
- We capture the order on our server using Shopify's webhook.
- The server generates the unique file (each file will always be unique).
- Order status is marked as fulfilled on Shopify - that's the part I'm struggling with. 
- File becomes downloadable via link which we include on My Orders page

Replies 2 (2)

paul567
Visitor
1 0 0

Hello,

Thanks for the detailed context. Based on everything you've shared, the key reason you're unable to fulfill the order via GraphQL likely comes down to product settings and how Shopify handles fulfillment orders under the hood.

When you disable "Track Quantity" and mark it as a non-physical product, Shopify assumes no fulfillment is required because:

No inventory needs to be updated.

No shipping needs to be handled.

Therefore, no fulfillment order is created, and no fulfillment can be attached via the API.



Best Regards

sebastian555
Tourist
5 0 1

Ok but somehow the order status on the admin dashboard is marked an unfulfilled and I have an option to fulfil it (and it works), so something fulfillment related is happening on the backend. Is it possible to reproduce it using graphql?

 

I understand that Shopify treats digital products differently but why fulfillment status is present on the dashboard at all?

1000030044.png