Hi everyone,
I am currently struggling with a persistent TIMEOUT error on the customers Bulk Operation endpoint.
Context
My company operates 5 Shopify Plus stores with nearly identical configurations. We use Python workflows to fetch data via the Bulk API for analysis in BigQuery.
-
The logic works perfectly on 4 out of 5 stores, even when fetching 3+ years of history.
-
On the 5th store, the operation consistently fails with a
TIMEOUTerror, even after significantly reducing the query complexity.
Environment
-
Admin API Version :
2025-10 -
Resource :
customers
The query
I have stripped the query down to the bare minimum (removing all orders connections and other nested fields), but the issue persists. Here is the template used (where FILTER_PLACEHOLDER is replaced by an updatedAt lower bound) :
Also note that we only have around 5 metafields maximum per customer (Not as if we had 300…).
CUSTOMERS_BULK_QUERY_TEMPLATE = """{
customers(query: "FILTER_PLACEHOLDER") { edges { node {
id
createdAt
updatedAt
tags
verifiedEmail
numberOfOrders
amountSpent {
amount
currencyCode
}
defaultAddress {
countryCodeV2
city
zip
}
statistics {
predictedSpendTier
rfmGroup
}
metafields {
edges {
node {
key
namespace
value
}
}
}
defaultEmailAddress {
emailAddress
}
}}}
}"""
Behaviour I see
I have been monitoring the bulk operation status minute-by-minute. Here is the behavior I am seeing :
-
Initial speed : The operation starts well, parsing 5k to 15k customers per minute.
-
Stalling : It hits a specific “sticking point” where it processes nothing for about 2 minutes.
-
Then… : It sometimes resumes briefly, but eventually hits another snag and crashes with a
TIMEOUT. -
Consistency: This happens regardless of the date range (tested with
2022,2023, and2024,2025start dates).
Since this is the Bulk API and I have removed nested connections, I don’t believe this should be hitting query cost limits. It behaves as if it is choking on specific data nodes.
Logs & Request IDs
Here are the details for a few failed attempts.
Example 1 : Runs then fails
The operation was running successfully, then timed out shortly after.
X-Request-ID: 866fc97a-51ca-4698-a6cf-5f0fc2db8cb3-1767169706
Status Code: 200
Bulk ID: gid://shopify/BulkOperation/8425689514331
Status: RUNNING
Count: 27898
…moments later…
X-Request-ID: e8d3902a-5f92-4403-a3bb-ecdfa5d838ba-1767169994
Status Code: 200
Bulk ID: gid://shopify/BulkOperation/8425689514331
Status: FAILED
Error: TIMEOUT
Count: 27882
Example 2 : Launch this morning
This operation stalled at count 48 844 for over 5 minutes.
X-Request-ID: e7b0ffec-e556-40af-a161-f713990454cc-1767170326
Bulk ID: gid://shopify/BulkOperation/8425974956379
Status: CREATED (Then stalled during processing)
Example 3 : Previous failures
# Failure A
Timestamp: 2025-12-31T07:01:08Z
ID: gid://shopify/BulkOperation/8425082880347
Status: FAILED | Error: TIMEOUT | Count: 38720
# Failure B
Timestamp: 2025-12-31T06:31:07Z
ID: gid://shopify/BulkOperation/8424878473563
Status: FAILED | Error: TIMEOUT | Count: 49025
Hypothesis
I suspect there may be a data integrity issue, perhaps a few customer records on this specific store have malformed data that causes the bulk parser to hang.
Unfortunately, I have no way to audit this from my end.
I have already aggressively reduced query complexity and narrowed the date ranges, so I do not believe this is a standard complexity issue.
Given that our orders bulk query (which is far more complex with nested connections) successfully retrieves millions of lines on this same store, it is baffling that the customers endpoint struggles with significantly less data.
Could a Shopify Engineer please review the Request IDs above to see if there is an underlying server-side error or a specific bad record causing the timeout?
Thank you for your help.