Data Import & Export
Move data in and out of SalesOS with flexible import mapping, scheduled exports, and migration tools.
Overview
SalesOS provides comprehensive tools for moving data into and out of your CRM. Whether you are migrating from another system, performing a bulk update, generating compliance reports, or setting up recurring data feeds, the Import and Export module handles it all with validation, mapping, and audit capabilities built in.
Data integrity is paramount in a CRM. Every import passes through validation, deduplication checks, and preview stages before committing records. Every export respects your organization's access controls and data governance policies.
Importing Data
Supported Import Formats
| Format | Best For | Max File Size |
|---|---|---|
| CSV | Simple tabular data, most universal format | 50 MB |
| Excel (.xlsx) | Structured data with multiple sheets, formatted data | 50 MB |
| JSON | API-style data, nested structures | 25 MB |
| vCard (.vcf) | Contact imports from address books | 10 MB |
Starting an Import
Navigate to Settings > Data > Import or use the Import button available on any list view (Contacts, Accounts, Leads, Deals).
Select the target object type:
- Contacts
- Accounts / Companies
- Leads
- Deals / Opportunities
- Activities
- Products
- Notes
- Custom Objects
Import Wizard
The Import Wizard guides you through a five-step process.
Step 1: Upload File
- Drag and drop your file or click to browse
- SalesOS auto-detects the file format and encoding
- For CSV files, the delimiter is automatically identified (comma, semicolon, tab, pipe)
- Preview the first 10 rows to confirm the file was parsed correctly
Step 2: Field Mapping
The mapping interface presents your file's columns alongside SalesOS fields:
| Your Column Header | SalesOS Field | Status |
|---|---|---|
| First Name | contact.first_name | Auto-mapped |
| Last Name | contact.last_name | Auto-mapped |
| Company | contact.account_name | Auto-mapped |
| Phone Number | contact.phone | Auto-mapped |
| Custom Score | — | Unmapped (needs manual selection) |
Auto-mapping: SalesOS uses intelligent matching to automatically map columns based on header names, data patterns, and common aliases. Approximately 80% of standard fields map automatically.
Manual mapping: For unmatched columns, select the target SalesOS field from a searchable dropdown. You can also:
- Skip a column (do not import)
- Create a new custom field on the fly
- Map to a related object field (e.g., map a company column to account name)
Transformation options per field:
| Option | Description |
|---|---|
| Default value | Fill empty cells with a specified value |
| Format conversion | Convert date formats, phone formats, etc. |
| Value mapping | Map source values to SalesOS picklist values |
| Concatenation | Combine multiple columns into one field |
| Split | Split one column into multiple fields |
Step 3: Duplicate Handling
Configure how SalesOS handles records that match existing data:
| Strategy | Behavior |
|---|---|
| Skip duplicates | If a match is found, do not import the row |
| Update existing | Merge imported data into the matched record (overwrite non-empty fields) |
| Update if newer | Only overwrite if the imported data has a more recent timestamp |
| Create anyway | Import as a new record regardless of matches |
| Flag for review | Import but mark as potential duplicate for manual resolution |
Match criteria — Choose which fields determine a duplicate:
- Email address (most reliable for contacts)
- Company name + domain (for accounts)
- Phone number
- External ID (from source system)
- Custom combination of fields
Step 4: Validation Preview
Before committing, SalesOS validates every row and presents a summary:
| Validation Result | Count | Action |
|---|---|---|
| Ready to import | 2,847 | Will be created/updated |
| Warnings | 143 | Minor issues (importable but flagged) |
| Errors | 12 | Cannot be imported (invalid data) |
| Duplicates | 89 | Handled per your duplicate strategy |
Error types:
- Required field missing (e.g., no email for a contact)
- Invalid format (e.g., "not-a-date" in a date field)
- Value not in picklist (e.g., unknown industry value)
- Reference not found (e.g., account name that does not exist)
- Data type mismatch (e.g., text in a number field)
Downloading the error report: Export a file containing only the failed rows with error descriptions. Fix them offline and re-import.
Step 5: Confirm and Execute
Review the final summary:
- Total records to process
- Records to create (new)
- Records to update (existing)
- Records skipped
- Estimated processing time
Click Start Import to begin. For large imports (1,000+ records), processing happens in the background and you receive a notification upon completion.
Import Templates
Downloadable Templates
SalesOS provides pre-formatted import templates for each object type:
| Object | Template Includes |
|---|---|
| Contacts | First name, last name, email, phone, company, title, address fields |
| Accounts | Company name, domain, industry, size, revenue, address, phone |
| Leads | Name, email, company, source, status, phone, notes |
| Deals | Name, amount, stage, close date, account, contact, owner |
| Products | Name, SKU, price, category, description, status |
| Activities | Type, subject, date, duration, related contact, related deal |
Accessing Templates
- Settings > Data > Import > Download Templates
- From any list view: Import > Download Template
- Templates are available in CSV and Excel formats
Custom Templates
Create custom import templates that include your organization's custom fields:
- Go to Settings > Data > Import Templates
- Select the object type
- Choose which fields to include (standard + custom)
- Set the column order
- Save and name the template
- Share with your team
Duplicate Handling During Import
Detection Methods
SalesOS uses multiple methods to detect duplicates:
| Method | Description | Confidence |
|---|---|---|
| Exact match | Identical values in the match field | High |
| Fuzzy match | Similar values accounting for typos/variations | Medium |
| Domain matching | Same email domain or website domain | Medium |
| Phone normalization | Matching phone numbers regardless of formatting | High |
| Composite key | Multiple fields combined for matching | High |
Merge Rules (Update Strategy)
When updating existing records, configure field-level merge behavior:
| Rule | Description |
|---|---|
| Always overwrite | Imported value replaces existing value |
| Overwrite if empty | Only fill fields that are currently blank |
| Overwrite if newer | Replace only if import timestamp is more recent |
| Never overwrite | Preserve existing values regardless |
| Append | Add to existing value (for multi-value fields) |
Duplicate Review Queue
Records flagged as potential duplicates during import appear in the Duplicate Review Queue (accessible from Data > Duplicates). For each potential duplicate pair:
- View side-by-side comparison
- Choose to merge (select which values to keep)
- Mark as not a duplicate (dismiss)
- Merge and update the import record
Import Validation
Type Checks
Every field value is validated against its expected type:
| Field Type | Validation |
|---|---|
| Valid email format ([email protected]) | |
| Phone | Contains digits, valid length for country |
| Date | Parseable date in recognized format |
| Number | Numeric value within allowed range |
| Currency | Numeric with optional currency symbol |
| URL | Valid URL format with protocol |
| Picklist | Value exists in the field's option list |
Required Field Enforcement
If a required field is missing from a row, that row is flagged as an error and excluded from import. Required fields are indicated in the mapping step.
Custom Validation Rules
Admins can define custom validation rules that apply during import:
- Cross-field validation (e.g., close date must be after create date)
- Conditional requirements (e.g., if status is "Qualified", source is required)
- Format patterns (e.g., account numbers must match regex
ACC-\d{6}) - Range limits (e.g., deal amount between 1,000 and 10,000,000)
Error Report
The error report (downloadable CSV) contains:
| Column | Content |
|---|---|
| Row Number | Original row in the source file |
| Error Field | Which field caused the validation failure |
| Error Type | Category of error (missing, invalid, type mismatch, etc.) |
| Error Message | Human-readable description of the issue |
| Original Value | The value that failed validation |
| All Original Data | Complete row for context |
Import History and Undo
Import Log
Every import is recorded with full metadata:
- Import ID and timestamp
- User who performed the import
- Source file name and size
- Object type and record counts (created, updated, skipped, failed)
- Duration
- Duplicate strategy used
- Field mapping configuration
Undo / Rollback
For imports completed within the last 30 days, you can undo the entire import:
- Go to Settings > Data > Import History
- Find the import to reverse
- Click Undo Import
- Confirm the rollback
What undo does:
- Records that were created are deleted
- Records that were updated are reverted to their pre-import values
- Records that were skipped are unaffected
Limitations:
- If imported records have been manually modified since import, those changes are also lost on rollback
- If imported records triggered automations (e.g., created tasks, sent emails), those side effects are not reversed
- Undo is not available for imports older than 30 days
Exporting Data
Export Methods
| Method | Use Case |
|---|---|
| Manual export | One-time download of specific data |
| Filtered export | Export only records matching current filters |
| Full backup | Complete database export for disaster recovery |
| Scheduled export | Recurring automated exports |
| API export | Programmatic bulk data retrieval |
Starting an Export
From any list view, click the Export button to export the currently displayed (and filtered) records. Alternatively, go to Settings > Data > Export for full control.
Selecting Data
Configure what to export:
- Object type — Which records to export (contacts, accounts, deals, etc.)
- Fields — Select specific fields or export all
- Filters — Apply conditions to limit the export set
- Related data — Include fields from related records (e.g., account name on contacts)
- Date range — Export only records created or modified within a period
Export Formats
| Format | Description | Best For |
|---|---|---|
| CSV | Comma-separated values, universally compatible | Data processing, re-import elsewhere |
| Excel (.xlsx) | Formatted spreadsheet with headers and data types | Reporting, sharing with non-technical users |
| Formatted report-style output | Archival, compliance, printing | |
| JSON | Structured data format | Developer integrations, API consumption |
Format Options
- CSV: Choose delimiter (comma, semicolon, tab), encoding (UTF-8, UTF-16, Latin-1), and whether to include headers
- Excel: Choose whether to include formatting, formulas for calculated fields, and multiple sheets for related data
- PDF: Choose layout (portrait/landscape), columns to include, and grouping
- JSON: Choose flat vs. nested structure, field naming convention (camelCase vs. snake_case)
Scheduled Exports
Creating a Schedule
Set up recurring exports that run automatically:
- Go to Settings > Data > Scheduled Exports
- Click Create Schedule
- Configure the export parameters (same as manual export)
- Set the schedule:
| Frequency | Options |
|---|---|
| Daily | At specified time |
| Weekly | On specified day(s) and time |
| Monthly | On specified date and time |
| Custom cron | Advanced scheduling expression |
Delivery Methods
| Destination | Description |
|---|---|
| Send as attachment to specified recipients | |
| SFTP | Upload to an SFTP server (path configurable) |
| Cloud storage | Save to Google Drive, Dropbox, or OneDrive |
| Webhook | POST the export URL to a webhook endpoint |
| Internal | Save to SalesOS file storage for manual download |
Schedule Management
- View all active schedules and their next run time
- Pause or resume individual schedules
- View execution history (success, failure, file size, row count)
- Receive alerts when a scheduled export fails
CRM Migration Tools
Dedicated Migration Wizards
SalesOS provides specialized migration tools for the most common source CRMs:
Salesforce Migration
What migrates:
| Salesforce Object | SalesOS Object | Notes |
|---|---|---|
| Account | Account | All standard and mapped custom fields |
| Contact | Contact | Preserves account relationships |
| Opportunity | Deal | Maps stages to your SalesOS pipeline |
| Lead | Lead | Includes lead source and status |
| Task / Event | Activity | Preserves relationships and dates |
| Note | Note | Linked to parent records |
| Attachment | Document | Migrated to document library |
| Custom Objects | Custom Objects | Requires manual mapping |
Process:
- Connect via Salesforce OAuth
- Select objects to migrate
- Map fields (auto-mapped where possible)
- Map picklist values (stage names, statuses, etc.)
- Map users (match by email for ownership transfer)
- Run validation (dry run)
- Execute migration
HubSpot Migration
Migrates contacts, companies, deals, tickets, activities, notes, and email history. Pipeline stages are mapped during setup.
Pipedrive Migration
Migrates persons, organizations, deals, activities, and notes. Custom fields and pipeline stages are mapped during the wizard.
Migration Best Practices
- Export a backup from your source CRM before starting
- Run a test migration with a small subset first (100 records)
- Verify record counts match between source and destination
- Check that relationships (contact-to-account, deal-to-contact) are preserved
- Validate that custom field values transferred correctly
- Plan for a cutover weekend where both systems are frozen
API-Based Bulk Import
Bulk API Endpoint
For programmatic imports, use the Bulk Import API:
API Import Features
- Upsert support — Create or update based on match field
- Batch processing — Submit up to 10,000 records per request
- Async processing — Large batches return a job ID for status polling
- Webhook notification — Receive a callback when processing completes
- Error handling — Per-record error reporting in the response
Rate Limits
| Tier | Records per Request | Requests per Minute |
|---|---|---|
| Starter | 1,000 | 10 |
| Professional | 5,000 | 30 |
| Enterprise | 10,000 | 60 |
Limits and Throttling
Import Limits
| Limit | Value |
|---|---|
| Maximum file size | 50 MB |
| Maximum rows per import | 100,000 |
| Maximum concurrent imports | 3 per organization |
| Import processing rate | ~1,000 records per minute |
| Maximum custom field mappings | 200 per import |
| Import history retention | 90 days |
Export Limits
| Limit | Value |
|---|---|
| Maximum rows per export | 500,000 |
| Maximum scheduled exports | 20 per organization |
| Export file retention | 7 days (then auto-deleted) |
| Maximum concurrent exports | 5 per organization |
| Full backup frequency | Once per 24 hours |
Throttling Behavior
When limits are reached:
- Additional imports are queued (not rejected)
- Queue position is displayed in the UI
- Processing resumes automatically when capacity is available
- Email notification when queued import starts and completes
Best Practices
- Always preview before committing — Never skip the validation preview step. Even a small formatting issue in row 5,000 can cascade into data quality problems.
- Start with accounts, then contacts — When importing related data, import parent records (accounts) first so that child records (contacts) can be properly linked during their import.
- Use templates — Download and use the official import templates rather than formatting your own files. Templates include the correct headers, data types, and example values.
- Clean data before import — Remove obvious duplicates, standardize formatting (dates, phone numbers, addresses), and fill required fields in your source file before uploading.
- Test with a small batch — For large imports, run a test with 50-100 records first. Verify the results meet expectations before processing thousands of records.
- Document your field mappings — Save your mapping configuration (the wizard allows this) so that recurring imports from the same source use consistent mappings.
- Schedule exports for compliance — If your organization requires regular data backups or compliance exports, use scheduled exports rather than relying on manual processes.
- Use the undo window wisely — You have 30 days to undo an import. Check your data thoroughly within this window. After 30 days, reverting requires manual cleanup.
- Coordinate with your team — Announce major imports in advance. Multiple users importing simultaneously can create confusion around duplicates and ownership.
- Monitor import health — Review import history regularly. A pattern of high error rates may indicate a systematic issue with your data source or mapping configuration.