Skip to main content

SF-0237 · Scenario · Hard

What is the "Enable serial mode for Bulk API" option and when should we use this option?

✓ Verified by Vikas Singhal · Last reviewed 5/17/2026 · Updated for Spring '26

By default, Bulk API processes batches in parallel — Salesforce runs multiple batches at the same time on its server-side queue. That’s why Bulk API is fast.

Serial mode is the opt-in to disable that parallelism. Batches run one at a time, in order. Slower, but predictable.

How to enable it

  1. Open Data Loader.
  2. Settings → Settings.
  3. Tick Use Bulk API.
  4. Tick Enable serial mode for Bulk API.
  5. Save.

The two checkboxes are independent — serial mode only takes effect when Bulk API is on.

Why parallel can hurt

Parallel batches step on each other when:

  • They update the same parent record (rollup-summary or master-detail child loads). Each batch acquires a row lock on the parent; two batches racing for the same Account get UNABLE_TO_LOCK_ROW.
  • Triggers update related records. A before insert on Contact that updates its Account’s Last_Contact_Date__c will collide if two Contact batches share Accounts.
  • Heavy flow / process automation writes to lookup records.
  • Custom approval/lock logic writes to a shared row.

The symptoms are seemingly-random row failures in error.csv with UNABLE_TO_LOCK_ROW or Record currently unavailable. Re-running the failed rows often works because the contention is gone.

When serial mode is the right pick

  • You see lock-row errors in a Bulk API job. Switch on serial mode and they go away.
  • Master-detail children where many rows roll up to the same parent.
  • Recursive triggers that update related objects.
  • Heavy validation that reads related records for cross-record checks.
  • Approval process / process builder / flow that holds locks during the batch.
  • You need ordered processing — e.g. timestamped events that must be ingested in CSV order.

The cost

A 1-million-record load that takes 20 minutes in parallel mode can take hours in serial. You’re trading throughput for safety. Run a serial-mode job when you must, and only when you must.

Alternatives before resorting to serial mode

  1. Sort the CSV so rows targeting the same parent are clustered into the same batch. Within a batch, the API handles updates safely; between batches is where the contention happens.
  2. Reduce trigger / flow scope. Skip rollups during the load via a custom permission bypass, then re-calc post-load.
  3. Decrease batch size while staying parallel — sometimes 5 parallel batches of 1,000 work where 5 parallel batches of 10,000 fail.
  4. Defer rollups. Calculate them with a one-time batch Apex run after the load.

Watch out

  • Serial mode only affects the Bulk API. Using SOAP API? Each batch was always synchronous; the toggle does nothing.
  • Serial mode doesn’t change the per-batch governor limits. Each batch still has to fit inside 10,000 DML rows, 100 SOQL, etc.
  • The Bulk API job’s batch order in serial mode is not guaranteed to match the file’s row order. If you need strict ordering, split the file into batch-size-aligned chunks.

In an interview

Two sentences will do: “Serial mode forces Bulk API batches to run one at a time instead of in parallel. Turn it on when you hit UNABLE_TO_LOCK_ROW errors — usually because batches are updating related records or sharing parents in master-detail.”

Verified against: Data Loader Guide — Bulk API Serial Mode, Bulk API Developer Guide — Serial Mode, Metadata API Developer Guide. Last reviewed 2026-05-17 for Spring ‘26 release.