Salesforce Data Import Wizard Guide
Salesforce Data Import Wizard Guide
Salesforce Data Import Wizard guide: run a CSV import, work around the 50k-record limits, and graduate to ongoing Salesforce sync.
No credit card required
Free 100k syncs every month
The Salesforce Data Import Wizard is the right tool for exactly one job: the first time you need to get a CSV into Salesforce.
After that, every team we talk to hits the same walls. The record cap. The missing objects. Someone ends up running the wizard every Monday morning, and six months later that someone wants out.
This guide covers both halves. First, how to run the Salesforce Data Import Wizard end to end. Then, the point at which CSV uploads stop scaling and what to replace them with.
What the Salesforce Data Import Wizard does and when it's the right tool
The Salesforce Data Import Wizard is a native, browser-based CSV loader available in every Salesforce edition except Database.com. You open it from Setup, point it at a CSV, map columns to fields, and it inserts or updates records inside Salesforce. It works in the browser without any downloads or API keys.
The import wizard in Salesforce handles these objects natively:
Accounts and Contacts
Leads
Campaign Members
Person Accounts (if enabled in your org)
Any custom object
It does not handle Opportunities, Cases, Contracts, Products, Assets, Documents, Orders, Quotes, or most other standard objects. For those you need Data Loader (desktop app) or the Bulk API.
The wizard is the right tool when all of these are true:
The import is a one-time or rare event
The file has 50,000 rows or fewer
You want a non-technical teammate to run it without help
The target object is on the supported list above
You're fine triggering the run manually
A narrow fit, but a real one. A sales ops manager cleaning up 3,000 stale leads on a Friday afternoon shouldn't stand up a Salesforce sync pipeline. The data wizard Salesforce ships in the box is exactly what that job needs.
Step-by-step: run a Salesforce Data Import Wizard CSV upload
Before you open the wizard, prepare the CSV. This is where most failed imports fail, not in the upload itself.
A wizard-ready CSV looks like this:
UTF-8 encoded (export from Excel as CSV UTF-8, not plain CSV)
Under 100 MB and under 50,000 rows
90 or fewer columns
Every required field populated on every row
Picklist values that already exist in Salesforce (the wizard will not create them)
Ownership fields resolved to a username that actually exists
Then run the wizard:
Open Setup → Data Import Wizard. Type "Data Import Wizard" into Quick Find. Click Launch Wizard. Your profile needs Modify All Data, or one of the narrower permissions like Import Personal Contacts or Import Custom Objects.
Choose the object. Pick Standard Objects or Custom Objects, then select the specific target: Contacts, Leads, a custom object, and so on. The wizard shows only the objects your profile can edit.
Choose the import type. Add New Records, Update Existing Records, or Add New and Update Existing Records (upsert). Updates and upserts require a match key.
Pick the match key. Salesforce.com ID is the safest key for updates because it's immutable. Email and External ID are fine if the data is clean. Avoid Name; it almost always produces wrong matches.
Decide about duplicate rules and triggers. Active duplicate rules apply during import and can silently merge rows or block inserts. Deactivate them if you want a raw insert. Triggers and workflow rules also fire on each record, which slows large imports.
Upload and map. Drop the CSV. The wizard auto-maps columns whose headers match Salesforce field labels. Fix the unmapped columns by hand. Anything you don't map is dropped. There's no partial import.
Start the import. Salesforce queues the job. Small imports (under 5,000 rows) finish in minutes. Large ones can run for an hour or more depending on org load. You get an email when it's done.
Review the results. Open Setup → Bulk Data Load Jobs. Each job has a row-level breakdown: successes, failures with reason codes, and skipped records. This is the only place you'll see why a specific row didn't land.
That's the full workflow. The first run is usually smooth. The tenth run is where things break down.
Salesforce Data Import Wizard limits you'll hit: 50k records, missing objects, silent skips
Every limit in the Salesforce import wizard is small enough that a real CRM dataset eventually hits it.
Limit | Value | What it breaks |
|---|---|---|
Records per import | 50,000 | Bulk lead uploads from an event, full contact backfills |
File size | 100 MB | Wide CSVs with notes or long descriptions |
Fields per record | 90 | Accounts and Contacts with heavy custom schema |
Characters per record | 400,000 (400 KB) | Rows with long text fields |
Notes and descriptions | 32 KB | Truncated past the limit, no warning |
Objects supported | ~6 standard + custom | No Opportunities, Cases, Products, Orders |
Scheduling | None | Every run is manual |
Rollback | None | Bad import means manual cleanup |
The 50k-record cap is the most common blocker. Teams split the CSV into chunks, run the wizard multiple times, and hope nothing changes between runs.
The object gap hits next. A RevOps team plans a monthly deal import, opens the wizard, discovers Opportunities aren't supported, and ends up routing data through Data Loader instead.
Then there's the silent skip. A CSV has 10,000 rows, the wizard reports "9,847 created," and 153 rows vanished into duplicate-rule matches, missing picklist values, and field-level security. At scale this becomes unmanageable.
When to graduate from the Salesforce Data Import Wizard to ongoing sync
There's a clear inflection point. You're still on the right tool as long as imports stay occasional and one-directional. You've outgrown it the moment any of these become true:
You're running the wizard on a schedule (weekly, monthly)
The source data lives in a system that could push directly (Stripe, Postgres, Intercom, a data warehouse)
You need to update Opportunities, Cases, or other unsupported objects
You care about which fields changed, not just which records exist
A failed row needs to be investigated and retried without losing your place
More than one person runs imports, and they need an audit trail
None of these are edge cases. They're what a mature Salesforce org looks like two years in. Re-running the same import every week is a manual integration without the observability of a real one.
We see the pattern constantly. Teams run the SFDC import wizard for a year, graduate to Data Loader for the record cap, then end up writing a Python script that wraps the Bulk API. That script becomes the thing nobody wants to own.
How to replace CSV imports with direct Salesforce sync from your source tool
The better pattern for recurring imports is to connect the source system directly to Salesforce and let changes flow continuously. You skip the CSV export, the wizard steps, and the record cap entirely.
With Oneprofile, the setup looks like this:
Connect Salesforce as a destination. OAuth into your Salesforce org. Oneprofile reads the full object and field schema at connect time. That covers standard and custom objects alike, including Opportunities, Cases, and everything else the wizard can't touch.
Connect the source. Stripe, Postgres, Intercom, HubSpot, a warehouse. Any of the 98 integrations or your own database.
Map fields once. Same mapping interface as the wizard, but saved. When Oneprofile encounters a Salesforce field type that doesn't exist yet on the target object, it creates the custom field with the right type before writing. You don't prep the schema separately.
Pick a sync mode. Update or Create (upsert), Update only, Create only, or Mirror. Same semantics as the wizard's three modes, plus Mirror for cases where the destination should exactly match the source.
Set a schedule or run realtime. Every 15 minutes, hourly, daily, or realtime where the source supports webhooks. Stripe, Intercom, Postgres, and others support push-based updates that reach Salesforce in seconds.
Let the sync run. Property-level change tracking means only changed fields are written to Salesforce, cutting API calls and preventing overwrites. Failed records go to a dead letter queue you can inspect and retry.
The whole setup takes under 10 minutes for the first pair. Custom objects work the same as standard ones.
The Salesforce Data Import Wizard doesn't go away. It's still the right tool for genuinely one-off uploads. What goes away is the recurring use of it: the Monday ritual, the "who has the latest CSV" question, the 153 silently-skipped rows. You stop being the person who owns imports and start being the person who owns the sync config.
What is the Salesforce Data Import Wizard?
What is the record limit for the Salesforce Data Import Wizard?
Does the Salesforce Data Import Wizard support custom objects?
Why did the Salesforce Data Import Wizard skip my rows?
Can I schedule the Salesforce Data Import Wizard to run automatically?
What's the difference between the Data Import Wizard and Data Loader?