Migrate from Another CRM

Move your accounts, contacts, deals, and engagement history into Breadbox without re-keying. Imports are resumable, owner-aware, and don't create duplicates on re-runs.

What gets imported

Object typeWhat it covers
AccountsCompanies, lifecycle stage, MRR, address, custom fields, tags. Import these first.
ContactsPeople at your accounts. Auto-links to accounts by name.
DealsActive and historical pipeline. Pipeline stage maps to your Breadbox stages; amount converts to MRR via your chosen mode.
TouchpointsCalls, emails, meetings, site visits — your engagement history.
TasksOpen and completed tasks with assignee mapping.
NotesFree-form notes attached to accounts or deals.

How it works

  1. 1
    Pick your object type and upload a CSV. Export from your current CRM (HubSpot, Salesforce, Pipedrive, Zoho, or anything that exports CSV). We auto-detect column names from common headers.
  2. 2
    Map owners. If your CSV has an owner email column, you'll be asked to match each unique source-CRM owner to a Breadbox user. Anyone without a match becomes "Imported (unassigned)" — you can reassign later.
  3. 3
    Run the import. Processing runs in the background. You can close the page; we'll keep going. The progress dashboard shows live counts of created / linked / skipped / errored rows.
  4. 4
    Review errors and re-run if needed. Errors are listed per-row with the specific reason. Re-runs are safe — already-imported records are skipped.

Recommended order

Run a separate import per object type, in this order. Each step references data created by earlier steps.

  1. Accounts — these are the foundation; everything else links to them.
  2. Contacts — get linked to accounts by company name.
  3. Deals — require accounts to exist; reference contacts by email.
  4. Touchpoints, Tasks, Notes — can run in parallel once accounts and contacts are imported.

No-duplicates guarantee

Every imported record is tracked by source ID. If you re-run a migration with the same CSV (or a fixed version), Breadbox skips rows it's already imported and re-processes only new or changed ones. This makes it safe to:

  • Run a small test import first, then a full run.
  • Fix errors in your CSV and re-upload — only the fixed rows process.
  • Run accounts.csv now and contacts.csv later when you're ready.

We also detect existing Breadbox records (matching name for accounts, matching email for contacts) and link to them without overwriting — so any data you've added in Breadbox stays intact.

Activity history cutoff

Touchpoint and note imports default to keeping the last 2 years of activity. You can change this in the wizard's mapping step. For most teams, 2 years is the right balance between "enough history to be useful" and "not flooding the timeline with noise from years ago."

Deal amount: MRR vs ACV vs one-time

HubSpot and Salesforce store deal "Amount" as a single number with no notion of recurring vs. one-time. Breadbox uses MRR as a first-class concept. During deal import, you'll be asked once how to interpret the source amount:

  • Annual contract value (default) — the source amount is divided by 12 to get MRR.
  • Monthly recurring revenue — the source amount is used as MRR directly.
  • One-time project — the source amount is stored as project revenue, no MRR.

Most MSPs running on HubSpot or Salesforce track annual contract values, so the default works. You can edit individual deals in Breadbox after import.

What doesn't migrate via CSV

CSV exports don't carry everything. The following don't migrate:

  • File attachments — bring those over manually after the migration.
  • Workflow automations — set up your Breadbox playbooks fresh; they're shaped differently anyway.
  • Custom HubSpot Sequences or Salesforce Cadences — Breadbox playbooks replace these.

The HubSpot direct connector (one-click via OAuth) handles attachments and is the better path if you're on HubSpot. See the migration page in Settings.

Troubleshooting

"Account not found" on contact/deal import. The associated_company column needs to match a Breadbox account name (case-insensitive). Import accounts first, or fix the name in your CSV.
"CSV parse error" on upload. Most often caused by an unclosed quoted field. Open in Excel or Google Sheets, save again as CSV, and re-upload.
Owner mapping shows zero owners. Your CSV doesn't have an owner column we recognize. Common headers we look for: owner_email, owner, account_owner, deal_owner, assignee_email, hubspot_owner_email.
Some deals imported without a stage. The stage name in your CSV didn't match a Breadbox pipeline stage. The deal still imports — fix the stage in the deal detail page after import.