I used bulkoperation as a main part to get all the product from the store. I get the bulk operation finish webhook from the shopify webhook.
{
admin_graphql_api_id: 'gid://shopify/BulkOperation/4110336655408',
completed_at: '2025-05-06T06:42:35-04:00',
created_at: '2025-05-06T06:42:32-04:00',
error_code: null,
status: 'completed',
type: 'query'
}
I got the status completed from the webhook. But when i fetch the url using:
query {
node(id: "gid://shopify/BulkOperation/4110336655408") {
... on BulkOperation {
url
partialDataUrl
fileSize
errorCode
url
objectCount
status
rootObjectCount
}
}
}
It returns :
1 Like
Hey @Sabin_Bhattarai
- this is definitely odd. I was able to replicate this on my end. I’ll look into this and loop back with you when I have some next steps - thanks for flagging this!
Hi @Sabin_Bhattarai - are you running this in GraphiQL or an app?
@Liam-Shopify, when I create the same flow using the GraphQL app, it provides me with the URL. However, when I try to implement the same logic from the app, it returns a null response.previously it provides me url but now it returns null.
Now i am using this query to get the url:
query {
currentBulkOperation {
id
status
errorCode
createdAt
completedAt
objectCount
fileSize
url
partialDataUrl
}
}
Hey @Sabin_Bhattarai
- just following up on this, thanks very much for your patience on my reply here. This may be a potential issue on our end, and we’ve opened up an investigation on this internally.
We’ll keep you updated in this thread and reach out once we have more info.
Hey, is there any update on this?
Doing this in the Graphiql app always returns null
:
query getCurrentBulkOperation($type: BulkOperationType) {
currentBulkOperation(type: $type) {
url
status
errorCode
createdAt
completedAt
}
}
# ALSO
query pollBulkOperationProgress {
node(id: "gid://shopify/BulkOperation/4946036490295") {
... on BulkOperation {
fileSize
status
completedAt
createdAt
errorCode
id
objectCount
partialDataUrl
rootObjectCount
type
url
}
}
}
However, the query returns the expected data when my test runner queries it:
await graphql(admin, getCurrentBulkOperation, {}):
Returning:
{
url: '....',
status: 'COMPLETED',
errorCode: null,
createdAt: '2025-08-25T06:18:22Z',
completedAt: '2025-08-25T06:18:23Z'
}
Also, I’m having issues with the webhook topic BULK_OPERATIONS_FINISH
, unsure if its related. The store is subscribed to it. but the app doesn’t seem to receive it. If it is potentially related to it, this is one of the subscription IDs: 1292154306615
.
Yes, this is the expected behavior. If you create the bulk operation from the GraphQL app and then query the data using its ID, it will return the exact details. However, if you create the bulk operation via the app and try to get the URL from the GraphQL app, it will always return null.
If you have correctly set up the BULK_OPERATIONS_FINISH
webhook, it should definitely return the finished webhook with the ID. If not, please share some details about how you configured the webhook so that I can guide you further.
Hey, thanks for the info on this strange behaviour.
Regarding the webhook, it seems to be good now. I was subscribing to the webhook after starting the bulk operation. The bulk operation takes about 10 seconds, so it wasn’t being completed before the store could subscribe to the webhook. Anyways, subscribe to the webhook topic before starting the operation. Should probably make it app specific anyways.