4.2 Data Import Wizard vs. Data Loader
Key Takeaways
The Data Import Wizard is browser-based, processes up to 50,000 records, supports automatic deduplication for Accounts, Contacts, and Leads, but does not support Opportunities, Cases, Products, or Users.
Data Loader is a client-side application and CLI tool supporting up to 5,000,000 records across supported standard and custom objects, offering Insert, Update, Upsert, Delete, Hard Delete, Export, and Export All operations.
The Upsert operation relies on a Salesforce Record ID or a designated External ID field to match existing records for updates or create new records if no match is found, reducing ID reconciliation; load parents before dependent children.
Data Loader Export extracts only active records, whereas Export All includes soft-deleted records residing in the Recycle Bin; Hard Delete bypasses the Recycle Bin completely and requires specific Bulk API permissions.
High-volume data loads avoid record lock contention (UNABLE_TO_LOCK_ROW) by sorting import CSV files by Parent ID or running the Bulk API in Serial Mode rather than Parallel Mode.
Data Import Wizard vs. Data Loader
Important
Selecting the correct data ingestion tool is a frequent operational challenge and a core topic on the Platform App Builder exam. Administrators must evaluate record volumes, object types, deduplication requirements, automation bypass needs, and scheduled execution parameters when deciding between the Data Import Wizard and Data Loader.
Salesforce provides two primary administrative tools for importing, updating, and exporting relational data: the browser-based Data Import Wizard and the desktop/command-line Data Loader. Choosing the right tool requires evaluating specific platform boundaries and operational constraints.
Data Import Wizard: Architecture & Scope
The Data Import Wizard is an integrated, browser-based administrative interface accessible directly within Setup (Setup > Integrations > Data Import Wizard). It is engineered for business users and administrators executing small-to-medium ad-hoc data loads without requiring local client software installation.
Key Capabilities & Object Support
- Record Limit: Supports imports of up to 50,000 records in a single execution.
- Supported Standard Objects: Strictly limited to Accounts, Contacts, Leads, Solutions, and Campaign Members.
- Custom Objects: Supports data loading for supported custom objects.
- Unsupported Objects (Exam Trap): The Data Import Wizard CANNOT import or update Opportunities, Cases, Products, Assets, Users, Quotes, or Campaigns (as parent campaign records). If a requirement involves importing Opportunities or Cases, Data Loader is mandatory.
Built-In Deduplication Matching
A primary architectural advantage of the Data Import Wizard is native deduplication matching during the import process, which prevents duplicate record creation declaratively without requiring external ETL staging:
- Accounts & Contacts: Matches incoming rows against existing database records by Salesforce ID, Name & Site, Email, or designated External ID.
- Leads: Matches incoming leads by Salesforce ID, Email, or Name.
Administrators can configure the wizard to either update existing matching records, create new records, or ignore duplicates entirely.
Workflow and Automation Execution
The Data Import Wizard includes a declarative configuration checkbox: "Trigger workflow rules and processes for new and updated records?" When unchecked, workflow rules, process builder processes, and flows that fire on record creation or edit are bypassed, speeding up execution and preventing mass notification emails from being dispatched to customers during data loading.
Data Loader: Enterprise Scale & Operations
Data Loader is a client application installed locally on Windows or macOS, and it also functions as a Windows-only supported Command Line Interface (CLI). It is engineered for enterprise-scale bulk operations, complex schema migrations, and automated batch processing.
Key Capabilities & Scope
- Record Limit: Supports bulk operations of up to 5,000,000 records per run.
- Universal Object Support: Operates across supported standard objects (including Opportunities, Cases, Products, Users, Tasks, Events) and supported custom objects.
- Full Operation Suite: Supports seven distinct operational modes:
- Insert: Creates new records from an input CSV file.
- Update: Modifies existing records based on matching 15-character or 18-character Salesforce Record IDs.
- Upsert: Matches incoming rows against either a Salesforce Record ID or an External ID field; updates existing matches and inserts non-matching rows.
- Delete: Moves matching records into the Recycle Bin (soft delete, recoverable for 15 days).
- Hard Delete: Permanently purges records immediately, completely bypassing the Recycle Bin. Requires the "Bulk API Hard Delete" user permission and enabling Bulk API in Data Loader Settings.
- Export: Queries and extracts active (non-deleted) records matching a custom SOQL query into a CSV file.
- Export All: Queries and extracts active records plus soft-deleted records currently residing in the Recycle Bin (
WHERE isDeleted = true).
Automated Batch Jobs via CLI
Data Loader includes a Command Line Interface (CLI) that can be fully automated using configuration files (process-conf.xml, config.properties). Organizations routinely script Data Loader via Windows Task Scheduler or Windows Task Scheduler jobs to execute automated nightly imports, ERP delta synchronizations, and compliance data extractions without manual user intervention.
Comprehensive Architectural Comparison: Data Import Wizard vs. Data Loader
| Architectural Dimension | Data Import Wizard | Data Loader |
|---|---|---|
| Deployment Interface | In-browser interface (Setup menu; zero install) | Standalone client application (GUI) and CLI (requires install) |
| Maximum Record Volume | Up to 50,000 records per job | Up to 5,000,000 records per job |
| Supported Objects | Accounts, Contacts, Leads, Solutions, Campaign Members, Custom Objects | All standard objects (Opportunities, Cases, Products, Users) and custom objects |
| Deduplication Engine | Built-in declarative deduplication (matches by Name, Email, Ext ID) | Use upsert for key matching and separately configured duplicate rules for supported objects |
| Operations Supported | Insert, Update, Upsert | Insert, Update, Upsert, Delete, Hard Delete, Export, Export All |
| Delete & Recycle Bin | Not supported (cannot delete records) | Supports soft Delete (Recycle Bin) and Hard Delete (purge) |
| Export & Export All | Not supported (cannot export data) | Supports Export (active) and Export All (includes Recycle Bin) |
| Scheduled Automation | Not supported (manual web execution only) | Supported via CLI scripting (Windows Task Scheduler) |
| Underlying API Protocol | Standard Salesforce bulk infrastructure | SOAP API (synchronous, 200/batch) or Bulk API (asynchronous) |
| Automation Bypass | Simple UI checkbox to disable workflow/processes | Requires custom settings, custom metadata, or manual deactivation |
The Upsert Operation & External IDs
The Upsert operation chooses Insert or Update for each incoming record; a whole multi-batch job is not one atomic transaction. It is the gold standard for synchronizing Salesforce with external systems (such as SAP, NetSuite, or legacy databases):
- During configuration, the administrator designates a unique key: either the internal Salesforce Record ID or a custom field flagged as an External ID.
- When Data Loader reads each row in the CSV file, it evaluates the External ID:
- Match Found: Updates the existing Salesforce record with incoming CSV values.
- No Match Found: Creates a new record in Salesforce populated with CSV values.
- Multiple Matches Found: Logs an error for that specific row (
DUPLICATE_EXTERNAL_ID) and skips it without failing the rest of the batch.
Tip
Upsert reduces ID reconciliation in multi-stage migrations where administrators previously had to insert parent records, export their newly generated Salesforce IDs, perform VLOOKUP formulas in Excel to populate foreign keys on child records, and finally insert child records. With External IDs, child records can be upserted by referencing the parent's External ID directly in the import mapping.
Data Formatting & Large-Scale Loading Best Practices
High-volume data loads require rigorous data preparation and performance tuning to prevent operational failure:
- Date and Date/Time Formatting: ISO 8601 is a clear, portable choice for dates and DateTime values:
YYYY-MM-DD(e.g.,2026-10-18) orYYYY-MM-DDThh:mm:ss.sssZfor date/time fields. Other supported formats depend on Data Loader settings; test parsing and timezone handling before the production load. - Multi-Select Picklist Formatting: Multiple values must be delimited by semicolons without extraneous spaces:
ValueA;ValueB;ValueC. - Resolving Record Locking (
UNABLE_TO_LOCK_ROW): When inserting hundreds of thousands of child records (e.g., Contacts, Order Items, Transactions) linked to parent records, Bulk API processes multiple batches in parallel threads. If multiple batches attempt to lock the same parent record simultaneously to update system fields or recalculate Roll-Up Summary aggregates, lock contention occurs, throwingUNABLE_TO_LOCK_ROWerrors.
Mitigating Lock Contention:
- Sort the CSV File: Sort the input CSV file alphabetically or numerically by the Parent Record ID column. This reduces the likelihood of parallel batches competing for a parent; very large parent groups can still cross batch boundaries.
- Enable Serial Mode: In Data Loader Settings, enable "Use Bulk API" and check "Enable Serial Mode". Serial mode forces batches to process sequentially one after another, eliminating multi-threaded race conditions at the expense of longer load times.
- Controlled Automation Bypass: Prefer a reviewed, narrowly assigned bypass switch using a Hierarchical Custom Setting (
$Setup.AutomationBypass__c.BypassAll__c = TRUE).
Cloud Kicks needs to import 45,000 Opportunity records from an external legacy sales platform into Salesforce. The legacy system provides an ERP_Opportunity_Number on every record that must be used to prevent duplicate creation and update existing records where applicable. Which tool and configuration should the app builder choose to satisfy these requirements?
Data Import Wizard, matching incoming records by Name and Opportunity Stage.
Data Import Wizard, using the ERP_Opportunity_Number as the matching External ID field.
Data Loader, executing an Insert operation and activating duplicate rules for Opportunities.
Data Loader, executing an Upsert operation matching against an External ID field for ERP_Opportunity_Number.
A compliance auditor requires an export of all Case records created during the prior fiscal year, including any records that were deleted by customer service agents and currently reside in the Salesforce Recycle Bin. Which tool and action should the administrator utilize to generate this complete dataset?
Data Loader, using the Export All operation with a SOQL query filtering on the CreatedDate field.
Data Loader, using the standard Export operation with a filter for 'IsDeleted = TRUE'.
Data Import Wizard, selecting the 'Include Soft-Deleted Records' option on the Case object.
Reports and Dashboards, running an administrative report on Cases with the Recycle Bin filter enabled.
An administrator is using Data Loader with Bulk API enabled to load 400,000 new Transaction__c child records that link to existing Account parent records. During the load, numerous batches fail with the error: 'UNABLE_TO_LOCK_ROW: unable to obtain exclusive access to this record'. What architectural approach resolves this record locking issue while maintaining efficient loading throughput?
Switch the Data Loader connection from Bulk API to SOAP API with a batch size of 2,000 records.
Sort the source CSV file by the Account parent ID, or configure Data Loader Bulk API to run in Serial Mode.
Change the relationship between Transaction__c and Account from Master-Detail to Lookup.
Temporarily assign all parent Account records to a single system integration user during the import.
Sections you finish are checked off in the contents.