Build vs. Buy>ERP, Accounting & Integrations>Bulk Operations Limits & Timeouts

Are Bulk Operation Timeouts a Platform Ceiling or Your Bug?

Written by Deploi EditorialReviewed by Martin Dejnicki, Director of SEO & AI SearchUpdated September 2026Pricing verified September 2026

Bulk operation failures on Shopify are a query-shape problem, not a platform ceiling. Shopify caps a bulk query at five total connections and two levels of nesting, and gives every job 10 days to finish (verified Sep 2026). Flatten the query or split it into several jobs, because Shopify Plus does not raise either limit. Buy Matrixify or Hextom from $9.99/month when the job is merchandising work rather than integration.

Your profile — see how the verdict shifts

VerdictBUILD (flatten the query, split the job, fix your own poller) · BUY a bulk import/export app when the work is merchandising, not integration · a plan upgrade changes nothing here
Buy score
5.4
Build score
8.0
Confidence
HighRead Shopify's bulk-operations query documentation on 2026-09-05 and confirmed every ceiling exactly as written: a maximum of five total connections in the query, a maximum of two levels deep for nested connections, and a bulk query operation that has to complete within 10 days, after which it will be stopped and marked as failed. Concurrency is version-gated: API versions 2026-01 and higher allow each app up to five simultaneous bulk query operations per shop, while prior versions allow only one bulk operation of each type at a time per shop. None of these ceilings is plan-tiered, so Shopify Plus provides no additional headroom against any of them. That matters because the 10-day allowance is enormous: a job that fails in minutes or hours has not hit it, and the failure is almost always a rejected query shape, a poller that gave up, or an HTTP client timeout on the download. On the app side we browsed the Store Management and Operations category, which surfaces both listings directly, and read both in full (verified Sep 2026): Matrixify at 4.9★ with 1,593 reviews and Hextom Bulk Product Edit at 4.9★ with 1,155 reviews, both Built for Shopify. Neither raises a platform limit; both chunk work beneath it so an ops team never meets the raw API.
Reference scenario
$20M–$500M GMV · Shopify Plus · nightly ERP and PIM syncs plus a 400,000-record catalog migration · in-house or agency dev bench · jobs failing intermittently in production
As of
September 2026

Decision at a Glance

Your profileVerdictWhy
Merchandising imports and exports run by an ops teamBUYMatrixify and Hextom exist so a merchandiser never writes a query. Both chunk work beneath Shopify's limits internally, and both start under $25/month with a free demo tier (verified Sep 2026).
A bulk query rejected before it ever startsBUILDRejection at creation is a shape violation, and the fix is free: get under five total connections and two levels of nesting. No app and no plan changes that, because the limit protects Shopify's query planner.
A nightly ERP sync that stalls or half-completesBUILDThe platform gives a job 10 days, so a sync dying in 20 minutes died in your stack. Instrument the poll loop, the download step and the client timeout before blaming the API.
On Plus and expecting the plan to lift the ceilingBUILDPlus multiplies rate limits, not bulk-operation shape. The five-connection, two-level and 10-day ceilings read identically on every plan (verified Sep 2026), so architecture is the only lever left.

What Bulk Operations Limits & Timeouts Actually Drives

OutcomeImpactHow it works
Operational efficiencyHighA sync that half-completes puts someone on manual reconciliation the next morning, and the same person re-runs the job by hand until the underlying query is fixed.
Revenue — indirectHighPrices, inventory and product status that arrive late or partially mean the storefront sells the wrong things at the wrong numbers until the next successful run.
Data & insightMediumA run ledger with per-job cursors and result files turns migrations into an auditable record, so a bad slice is identified and replayed instead of re-running everything.
Customer experienceMediumStale inventory from a failed nightly job produces oversells and cancellations, which customers experience as a broken store rather than a broken integration.

Spend ceiling: Size the spend to the failure, not the fear. A rejected query is an afternoon's work at no software cost, an ops team's recurring jobs are covered from $9.99/month (verified Sep 2026), and only a resumable, auditable ERP pipeline justifies $12,000–$40,000 (Deploi estimate, illustrative).

What buying enables (top apps)

  • + Large imports and exports run by non-engineers, with chunking, retries and file assembly handled beneath the API
  • + Scheduled recurring tasks with a rollback window, from 30 days on a free demo tier to 180 days on the top listed tier (verified Sep 2026)
  • + Parallel processing on the highest Matrixify tier, listed as batch import with 10 or more threads per job (verified Sep 2026)
  • + Two Built for Shopify listings at 4.9★ with 1,593 and 1,155 reviews, which is unusually deep evidence for a technical category

What building additionally unlocks

  • + Resumable jobs with a recorded cursor, so a failure re-runs one slice instead of the whole migration
  • + Reconciliation against the source system, which no bulk editor offers because it has no source system to compare with
  • + Query shapes tuned to your data model, staged to use five concurrent operations on API 2026-01 and higher
  • + JSONL results you keep, diff and replay, turning every run into evidence rather than a status

Find Your Verdict in 3 Questions

  1. Is the job merchandising work an ops team runs, rather than a system integration?

    Yes: Your verdict: BUY — Matrixify or Hextom from $9.99/month handles chunking beneath the API, and neither needs an engineer (verified Sep 2026).

    No: Go to question 2.

  2. Does the bulk operation get rejected at creation rather than failing later?

    Yes: Your verdict: BUILD — that is a shape violation; get under five total connections and two levels of nesting, which costs an afternoon.

    No: Go to question 3.

  3. Has the job actually been running for close to 10 days?

    Yes: Your verdict: BUILD — split it into several scoped bulk jobs and run up to five at once on API 2026-01 or higher.

    No: Your verdict: BUILD — the platform ceiling is not what stopped you; instrument the poll loop, the download step and your client timeout.

The TCC Scorecard — 12 Dimensions

TCC — Total Cost of Capability: what it actually costs to have this capability over three years, whichever way you get it. Each dimension is scored 0–5 for both paths. How we score →

DimensionBuyBuildWhy
Cost
Acquisition & implementationA bulk-edit app installs in a day and runs its first job the same afternoon; splitting a monolithic query into staged bulk jobs with a poller and a resume path is 2–5 weeks (Deploi estimate, illustrative).
Recurring feesThe two listings run $9.99–$200/month depending on record volume per task (verified Sep 2026) and bill forever; restructured queries in your own integration carry no licence at all.
Maintenance & upgradesThe vendor tracks Shopify's API versions for you; your own bulk pipeline needs a version review each year, and concurrency behavior changes with the version you pin.
Switching & exitLeaving a bulk-edit app costs you saved task templates and scheduled jobs, not data; a restructured query is your own code and moves with the integration.
Risk
Vendor riskBoth listings sit at 4.9★ with 1,593 and 1,155 reviews and Built for Shopify status (verified Sep 2026), which is about as low as app vendor risk gets.
Security & compliance surfaceA bulk app reads and writes your entire catalog, customer and order data by design, which is a wide scope to grant for a job your integration already has credentials for.
Platform-deprecation exposureThe Bulk Operations API is current and actively developed, and the 2026-01 concurrency change proves it moves; a pinned older version quietly keeps the one-at-a-time behavior.
Value
Fit to requirementApps fit scheduled merchandising jobs precisely and fit an ERP contract badly, because a sync needs idempotency, resume and reconciliation that no task template exposes.
Time to marketAn urgent 50,000-product update ships today through an app; the same change through a rebuilt pipeline waits for the sprint that fixes the query.
Performance & scaleStaged bulk jobs on API 2026-01 or higher run five at a time per shop per app, so a 400,000-record migration parallelizes instead of queueing behind one job.
Data ownership & AI-readinessA bulk pipeline you own produces JSONL you can keep, diff and replay, which turns a migration into an auditable record rather than a run that either worked or did not.
Focus & opportunity costRestructuring one query is an afternoon and worth it; building a general bulk framework when an app already schedules your merchandising jobs is not.

The App Landscape

AppStatusPricingBest for
Shopify GraphQL Bulk Operations APINativeFirst-party platform behavior, not a product. A bulk query allows a maximum of five total connections and two levels deep for nested connections, and has to complete within 10 days or it is stopped and marked as failed. Concurrency is version-gated: five simultaneous bulk query operations per shop on API 2026-01 and higher, one bulk operation of each type at a time on earlier versions (verified Sep 2026). None of it is plan-tiered.Included with every plan; no tier raises these ceilingsMoving large result sets without paginating against rate limits
MatrixifyLiveThe bulk import/export workhorse many 'internal tools' secretly areFree (10 records per file); $20/month Basic, $50/month Big, $200/month Enterprise with unlimited records at entry volumes; scales with volume (verified Sep 2026)Large catalog, customer and order imports and exports, including one-off migrations
Hextom: Bulk Product EditLive4.9★, 1,155 reviews, Built for Shopify. Task-based rather than file-based, with scheduled tasks and a rollback backup window that runs from 30 days on the free demo to 180 days on Advanced. Record limits are per task, so job size is what you actually buy.Demo free (10 products per task); Basic $9.99/month; Professional $19.99/month; Advanced $49.99/month (verified Sep 2026)Scheduled, repeatable product edits with a rollback window an ops team can use
Staged bulk job pipeline (custom)Build laneThe lane for integrations rather than merchandising: split one wide query into several shape-legal jobs, poll status rather than guessing, stream the JSONL result instead of buffering it, and record what each run changed so a partial failure is resumable.$12,000–$40,000 one-time (Deploi estimate, illustrative), then upkeepERP and PIM syncs, migrations and any job that must be resumable and auditable

The Build Path

  • Make the query legal before you make it fast: Count the connections in the query and the depth of the nesting. Five total connections and two levels is the ceiling, and exceeding it gets the operation rejected at creation rather than failing later. Splitting one wide query into two narrow ones is usually the entire fix and costs an afternoon.
  • Instrument the three places jobs actually die: The platform allows 10 days, so look elsewhere. Log the creation response, the poll loop and the download of the JSONL result separately, with the client timeout printed next to each. Most reported bulk timeouts turn out to be a default HTTP timeout on the download or a poller that stopped asking.
  • Stage the work and use the concurrency you have: On API 2026-01 and higher an app can run five bulk query operations per shop at once, so a large migration runs as several scoped jobs instead of one that must survive for days. Record each job's cursor and result file so a failed slice re-runs alone.
Effort band
$12,000–$40,000 for a staged bulk pipeline with polling, streaming download, resume and reconciliation — Deploi estimate (illustrative); a single query restructure lands well under the $10–25K contact-form band
Typical timeline
2–5 weeks for the pipeline, or a single afternoon when the fix is query shape (Deploi estimate, illustrative)
Maintenance, honestly
~15% of build cost per year (Deploi estimate): roughly $2,000–$6,000/yr (Deploi estimate, illustrative) covering API version reviews, schema changes on your side, and the occasional new job.
What you own — and what you take on
You own: the query shapes, the job ledger, the JSONL results and the resume logic. You take on: an annual API version review, since concurrency behavior changed at 2026-01 and a pinned older version silently keeps the one-at-a-time rule.

3-Year Total Cost of Capability

Buy (app path)Build (custom path)
Year 0 (setup)$600–$2,400 (setup and template building)$12,000–$40,000
Years 1–3 (recurring)$1,800–$7,200$6,000–$18,000 (upkeep)
3-year total≈$2,400–$9,600≈$18,000–$58,000
Illustrative cumulative cost over 36 months$0$10k$19k$29k$39kMo 0Mo 12Mo 24Mo 36Buy (app path)Build (custom path)
Illustrative cumulative cost: the app line never crosses the build line, and it does not need to. These lanes solve different problems, since an app schedules merchandising jobs and a pipeline carries a contract with your ERP.
  • All figures illustrative samples for the reference scenario — not quotes, not verified pricing.
  • Buy column: one bulk import/export app on a mid-to-high tier, $50–$200/month held flat for three years (listed prices verified Sep 2026; the arithmetic here is ours).
  • Build column: a staged bulk pipeline with polling, streaming download, resume and a run ledger; three-year horizon. A one-query restructure is a fraction of this and is not modeled.

What the Sticker Price Hides

On the buy path

  • Record limits are per file or per task, so the tier that fit at 5,000 products stops fitting at 50,000 and the upgrade arrives mid-migration
  • A bulk app holds read and write scope across catalog, customer and order data, which is a wide grant for a scheduled job
  • Scheduled tasks and templates live in the vendor's account, so an app change means rebuilding the job library
  • An app cannot carry an ERP contract: no idempotency key, no reconciliation record, no resume from a known cursor

On the build path

  • Teams tune retries for weeks before checking whether the query was rejected at creation for exceeding five connections
  • Buffering a large JSONL result in memory works in staging and fails in production; stream it
  • A pinned pre-2026-01 API version silently keeps the one-operation-at-a-time rule, so the concurrency you designed for never arrives
  • ~$2,000–$6,000/yr upkeep and one API version review a year (Deploi estimate, illustrative)

What Merchants Say

Engineering teams describe the same wasted week: a nightly sync fails at roughly the same point every night, the team assumes a Shopify ceiling, and the actual cause is a default client timeout on the result download.
community-reported (2026 research corpus)
The low-star theme on bulk editors is job size rather than features, with merchants reporting they discovered the per-task record cap partway through a catalog change and had to split the work by hand.
app-store 1–2★ review theme

If You Change Your Mind Later

If you bought and outgrow it

Nothing about your store data is stranded, because a bulk app writes into Shopify and keeps no separate copy of record. What you lose is the job library: saved templates, field mappings and schedules live in the vendor's account. Export a sample file for every recurring job before you cancel, so the next tool or script has a known-good shape to match.

If you built and want out

Nothing strands at all. The queries, the run ledger and the JSONL results are yours, and an app can take over any individual merchandising job later without touching the integration. The only real exit cost is the knowledge of which query shapes were tuned, so keep them in version control with a comment explaining the split.

When This Answer Changes

We're watching for:

  • A future API version changing the five-connection or two-level query shape rules, which would let a split job be recombined
  • Shopify raising the five-simultaneous-operation concurrency ceiling above the 2026-01 figure, which changes migration architecture
  • The API version your integration pins passing out of Shopify's 12-month support window, which is when the one-at-a-time behavior bites

Verdict change log:

No changes since first publication (September 2026).

Common Questions

What are the limits on a Shopify bulk query operation?

A bulk query allows a maximum of five total connections and a maximum of two levels deep for nested connections (verified Sep 2026). The operation has to complete within 10 days, after which Shopify stops it and marks it failed. Concurrency depends on API version: five simultaneous bulk query operations per shop on 2026-01 and higher, one of each type at a time before that.

Does Shopify Plus raise bulk operation limits?

No. Plus raises API rate limits, taking GraphQL Admin API cost from 100 points per second on standard plans to 1,000 on Plus, and multiplying the legacy REST bucket tenfold (verified Sep 2026). The bulk-operation ceilings are different: five connections, two levels of nesting and 10 days read identically on every plan, so a Plus upgrade buys no headroom here.

Why does our Shopify bulk export keep timing out?

Shopify gives a bulk query 10 days, so a job failing in minutes did not hit the platform ceiling (verified Sep 2026). Check three places in order. First, whether the operation was rejected at creation for exceeding five connections or two levels of nesting. Second, whether your poll loop stopped asking. Third, whether an HTTP client timeout killed the download of the result file.

Your Next Steps

If you're going with BUILD(matches your selected profile)

  1. Print the creation response for every bulk operation, including the rejection reason, before touching retry logic
  2. Count connections and nesting depth in the query and split anything above five and two
  3. Log poll interval, poll count and elapsed time so a stalled job is visible as a flat line
  4. Stream the JSONL result to disk or storage instead of buffering it in memory
  5. Record which API version each integration pins, and review it once a year against the concurrency rules

If you're going with BUY

  1. Size the job in records and match it to a tier's per-file or per-task cap before subscribing
  2. Run the free demo tier against a real file first, since 10 records will expose a bad column mapping
  3. Check the rollback window on the tier you pick, because that is what saves a bad bulk edit
  4. Keep one exported sample file per recurring job as the documented shape
  5. Diary a re-decision when a job needs resume or reconciliation, since that is where an app stops fitting

Official Docs & Sources

Official documentation linked for verification — our verdicts and estimates are our own.

Ready to stop debugging the wrong layer?

We read the query shape first, then the poller, then the download step. Most bulk failures we're handed turn out to be one of those three, and the fix ships in days rather than a rewrite.

Contact us today

API & integration development

Verdict scored for the reference scenario above. Estimates are not quotes; app pricing carries its verification date and gets re-verified quarterly. Full scoring anchors: see the TCC methodology.

Read how we score these decisions (the TCC Framework). No affiliate links, no paid placement — no app vendor pays to appear here.

No affiliate links. No paid placement. We make money building and integrating solutions — not on referral fees.