SalesOS.

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

FormatBest ForMax File Size
CSVSimple tabular data, most universal format50 MB
Excel (.xlsx)Structured data with multiple sheets, formatted data50 MB
JSONAPI-style data, nested structures25 MB
vCard (.vcf)Contact imports from address books10 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 HeaderSalesOS FieldStatus
First Namecontact.first_nameAuto-mapped
Last Namecontact.last_nameAuto-mapped
Companycontact.account_nameAuto-mapped
Phone Numbercontact.phoneAuto-mapped
Custom ScoreUnmapped (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:

OptionDescription
Default valueFill empty cells with a specified value
Format conversionConvert date formats, phone formats, etc.
Value mappingMap source values to SalesOS picklist values
ConcatenationCombine multiple columns into one field
SplitSplit one column into multiple fields

Step 3: Duplicate Handling

Configure how SalesOS handles records that match existing data:

StrategyBehavior
Skip duplicatesIf a match is found, do not import the row
Update existingMerge imported data into the matched record (overwrite non-empty fields)
Update if newerOnly overwrite if the imported data has a more recent timestamp
Create anywayImport as a new record regardless of matches
Flag for reviewImport 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 ResultCountAction
Ready to import2,847Will be created/updated
Warnings143Minor issues (importable but flagged)
Errors12Cannot be imported (invalid data)
Duplicates89Handled 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:

ObjectTemplate Includes
ContactsFirst name, last name, email, phone, company, title, address fields
AccountsCompany name, domain, industry, size, revenue, address, phone
LeadsName, email, company, source, status, phone, notes
DealsName, amount, stage, close date, account, contact, owner
ProductsName, SKU, price, category, description, status
ActivitiesType, 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:

  1. Go to Settings > Data > Import Templates
  2. Select the object type
  3. Choose which fields to include (standard + custom)
  4. Set the column order
  5. Save and name the template
  6. Share with your team

Duplicate Handling During Import

Detection Methods

SalesOS uses multiple methods to detect duplicates:

MethodDescriptionConfidence
Exact matchIdentical values in the match fieldHigh
Fuzzy matchSimilar values accounting for typos/variationsMedium
Domain matchingSame email domain or website domainMedium
Phone normalizationMatching phone numbers regardless of formattingHigh
Composite keyMultiple fields combined for matchingHigh

Merge Rules (Update Strategy)

When updating existing records, configure field-level merge behavior:

RuleDescription
Always overwriteImported value replaces existing value
Overwrite if emptyOnly fill fields that are currently blank
Overwrite if newerReplace only if import timestamp is more recent
Never overwritePreserve existing values regardless
AppendAdd 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 TypeValidation
EmailValid email format ([email protected])
PhoneContains digits, valid length for country
DateParseable date in recognized format
NumberNumeric value within allowed range
CurrencyNumeric with optional currency symbol
URLValid URL format with protocol
PicklistValue 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:

ColumnContent
Row NumberOriginal row in the source file
Error FieldWhich field caused the validation failure
Error TypeCategory of error (missing, invalid, type mismatch, etc.)
Error MessageHuman-readable description of the issue
Original ValueThe value that failed validation
All Original DataComplete 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:

  1. Go to Settings > Data > Import History
  2. Find the import to reverse
  3. Click Undo Import
  4. 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

MethodUse Case
Manual exportOne-time download of specific data
Filtered exportExport only records matching current filters
Full backupComplete database export for disaster recovery
Scheduled exportRecurring automated exports
API exportProgrammatic 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

FormatDescriptionBest For
CSVComma-separated values, universally compatibleData processing, re-import elsewhere
Excel (.xlsx)Formatted spreadsheet with headers and data typesReporting, sharing with non-technical users
PDFFormatted report-style outputArchival, compliance, printing
JSONStructured data formatDeveloper 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:

  1. Go to Settings > Data > Scheduled Exports
  2. Click Create Schedule
  3. Configure the export parameters (same as manual export)
  4. Set the schedule:
FrequencyOptions
DailyAt specified time
WeeklyOn specified day(s) and time
MonthlyOn specified date and time
Custom cronAdvanced scheduling expression

Delivery Methods

DestinationDescription
EmailSend as attachment to specified recipients
SFTPUpload to an SFTP server (path configurable)
Cloud storageSave to Google Drive, Dropbox, or OneDrive
WebhookPOST the export URL to a webhook endpoint
InternalSave 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 ObjectSalesOS ObjectNotes
AccountAccountAll standard and mapped custom fields
ContactContactPreserves account relationships
OpportunityDealMaps stages to your SalesOS pipeline
LeadLeadIncludes lead source and status
Task / EventActivityPreserves relationships and dates
NoteNoteLinked to parent records
AttachmentDocumentMigrated to document library
Custom ObjectsCustom ObjectsRequires manual mapping

Process:

  1. Connect via Salesforce OAuth
  2. Select objects to migrate
  3. Map fields (auto-mapped where possible)
  4. Map picklist values (stage names, statuses, etc.)
  5. Map users (match by email for ownership transfer)
  6. Run validation (dry run)
  7. 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:

POST /v1/bulk-import
Content-Type: application/json

{
  "object_type": "contacts",
  "operation": "upsert",
  "match_field": "email",
  "records": [
    { "first_name": "Jane", "last_name": "Smith", "email": "[email protected]" },
    { "first_name": "John", "last_name": "Doe", "email": "[email protected]" }
  ]
}

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

TierRecords per RequestRequests per Minute
Starter1,00010
Professional5,00030
Enterprise10,00060

Limits and Throttling

Import Limits

LimitValue
Maximum file size50 MB
Maximum rows per import100,000
Maximum concurrent imports3 per organization
Import processing rate~1,000 records per minute
Maximum custom field mappings200 per import
Import history retention90 days

Export Limits

LimitValue
Maximum rows per export500,000
Maximum scheduled exports20 per organization
Export file retention7 days (then auto-deleted)
Maximum concurrent exports5 per organization
Full backup frequencyOnce 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.