Skip to content
NG CRM
Migration7 min read

Moving from Excel to a CRM without losing history: an 8-step plan

How to move spreadsheets of customers, contacts and quotes into a CRM so that links, owners and dates stay correct: cleanup, duplicates, field mapping, import order, cut-over and training.

In short

  • History is lost because of the order, not the tool: customers are imported before contacts, deals before quotes, and activities last, with their own dates.
  • Before the import every row gets a stable ID; it links contacts to customers and prevents duplicates when an import is repeated.
  • Duplicates are merged in the spreadsheet before the import — by tax ID, email, phone and similar name — not afterwards, in a system the team already uses.
  • In NG CRM, “Check file” shows row by row what the import would do without writing anything, and the server recalculates the amounts of imported quotes.
  • Cut-over day is an agreed date after which Excel is read-only and everything new goes into the CRM; role-based training happens before it.

Short answer: moving from Excel to a CRM without losing history comes down to doing things in the right order. First the spreadsheets are cleaned, duplicates merged and every row given a stable ID. Then fields, owners and sales stages are agreed, and customers, contacts, deals, quotes and activities are imported — in that order. In NG CRM every file first goes through “Check file”, which writes nothing, and the old system's ID prevents duplicates on re-import. Cut-over and training come last.

What gets lost when a migration is rushed?

The easy route is to export a spreadsheet and “drop it” into the new system. The consequences show up in the first week:

  • Links disappear. Contacts do not know which company they belong to, and deals have no customer.
  • History gets the wrong dates. Calls from last year look as if they happened on import day.
  • Owners are wrong. Every imported deal belongs to the administrator who ran the import.
  • Duplicates multiply. One customer under three names becomes three customers with three half-histories.
  • Amounts do not add up. Quotes copied from a spreadsheet have totals that do not match their line items.

The plan below prevents each of these. It does not need a developer, but it does need discipline and one person who owns the migration.

How do you move from Excel to a CRM? An 8-step plan

  1. List your sources and decide what moves
  2. Clean the data
  3. Merge duplicates
  4. Give every row a stable ID
  5. Map columns to fields
  6. Set up users, owners and sales stages
  7. Import in the right order
  8. Cut over and train the team

1. List your sources and decide what moves

Write down every place customer data lives today: the main spreadsheet, individual reps' sheets, the list of quotes, an export from the old CRM or invoicing software. For each source, decide what moves. Active customers and open deals always move; for older history, agree on the period the team actually uses. Whatever does not move, archive — do not delete.

2. Clean the data

Cleanup is the most important and the longest step. The rules are simple:

  • one row is one record — one customer, one contact, one deal;
  • one column is one piece of data — first and last name, street and town, not “everything in the notes”;
  • store tax and company registration numbers as text, so Excel does not strip leading zeros;
  • dates in one format, amounts as numbers, no currency in the same cell;
  • phone numbers in the same format, for example with the +381 country code;
  • email addresses without spaces and never two in one cell.

You do not need to standardise date formats and decimal separators by hand if the system converts them on import, but each column must be consistent from the first row to the last.

3. Merge duplicates

A duplicate is the same customer or contact entered more than once. The easiest way to find one is by tax ID, then by email and phone, and finally by similar name (“Example d.o.o.” and “EXAMPLE DOO Belgrade”). Sort the spreadsheet by those columns, pick the master row and move into it whatever the others have that it lacks. Duplicates are far easier to merge in a spreadsheet than later, in a system the team already works in.

NG CRM validates the Serbian tax ID check digit on entry and warns about likely duplicates by tax ID, email, phone and similar name, and lead duplicates can be merged later too, up to five at a time. That protects you going forward; it does not replace cleanup before the move.

4. Give every row a stable ID

This is the step most often skipped, and the one that saves the most work. Add an “ID” column to every sheet and give each row a unique code that never changes — for example C-0001 for customers and D-0001 for deals. If the data comes from an old system, use its ID.

The ID does two jobs. First, it links records: in the contacts sheet, a “Customer ID” column says which company each contact belongs to. Second, it makes re-imports safe: when a row carries the old system's ID, NG CRM recognises the existing record instead of creating a new one, so the same file imported twice gives unchanged rows, not duplicates.

5. Map columns to fields

Mapping means deciding which CRM field each spreadsheet column goes into. An example for a typical sales sheet:

Excel columnCRM fieldNote
CompanyCustomer nameone official name, no abbreviations
Tax IDCustomer tax ID (PIB)as text; also used to recognise the customer
Contact personContact first and last nametwo columns, not one
Phone, EmailContact phone and emailone value per cell
StatusDeal stagevalues are mapped to pipeline stages
Sales repOwnerrecognised by the user's email address
ValueDeal amounta number, currency in a separate column
NotesActivity or notewith the date it happened
Sales channelCustom fielddefined before the import

In NG CRM each column comes with a suggested field and a confidence level, and conversions handle date formats, decimal separators and value replacement — for example, “In negotiation” in the sheet becomes the Negotiation stage. The mapping is saved as a template, so the system recognises it next time. Custom fields your company defines are imported just like standard ones. You can also start from a sample file with every column, downloaded from the system and filled in.

6. Set up users, owners and sales stages

Before the first import, the system needs to know who works there and how you sell:

  • Users are added first, because each deal's owner is recognised by email address. A rep who has left the company should not become an owner — agree who takes over their customers.
  • Code lists — sales stages, activity types and lead sources — are set up before the import, so the values in your sheet have somewhere to go.
  • Stages from the sheet (“quote sent”, “waiting”, “hot”) should be reduced to pipeline stages with clear criteria. How to define them is covered in Sales pipeline stages.

7. Import in the right order

Each step builds on the previous one: a contact needs a customer, a deal needs a customer and an owner, a quote needs a deal. So the order is not a matter of taste:

  1. Customers (partners), recognised by the old system's ID or by tax ID.
  2. Contacts, linked to customers by customer ID and email.
  3. Leads and open deals, with their ID and owner.
  4. Quotes with line items — in NG CRM they arrive as drafts, and the server recalculates their amounts from item, quantity, price and discount.
  5. Activities and tickets — completed activities keep their original dates, so customer history stays accurate.

Every file goes through “Check file” first: a row-by-row check shows what the import would do — new, changed, unchanged or existing — and writes nothing. Then import a small part of the file as a trial. The real import can write everything or nothing, or only the valid rows plus an error file you fix and import again. An import cannot be undone with one click, so the check and the trial are mandatory steps, not options.

8. Cut over and train the team

Cut-over day is an agreed date after which the old spreadsheet is read-only and everything new goes into the CRM. The start of a week or a month works best, when numbers are easier to compare.

  • The day before: a final export from the sheets and a re-import — thanks to the IDs, rows already imported are recognised and only changes and new records come in.
  • Day one: the Excel files are locked for editing and the team works only in the CRM.
  • Role-based training: reps — pipeline, activities and the mobile app; managers — dashboards and stuck deals; the administrator — imports, permissions and code lists.
  • The first two weeks: a short daily review of questions and errors, and one person the team can turn to.

Checklist before cut-over day

  • Every source has an owner and a decision on what moves.
  • Duplicates are merged and every row has an ID.
  • Tax IDs, dates and amounts are in the right format.
  • Users are added; code lists and custom fields are set up.
  • Spreadsheet statuses are mapped to pipeline stages.
  • Every file has passed “Check file” without errors.
  • The trial import has been checked against a few customers the team knows well.
  • The team knows the cut-over date and has been trained.

What determines how long a migration takes?

Less the number of rows and more the state of the data. One tidy spreadsheet moves quickly; five sheets with different column names and the same customers under different names need days of cleanup. NG CRM accepts up to 50,000 rows per file and processes them in the background, so the timeline depends mostly on preparation. A saved mapping template saves work on every later import of the same shape.

Once the data has moved, it stays yours: the full export produces one ZIP with an Excel file for each record type. The whole import process is described on the Migration page, and how the pipeline and quotes work after the move on the Sales page. If your data comes from a system that can export it programmatically, the public API is an alternative to files.

Frequently asked questions

How do I move from Excel to a CRM without losing data?

Clean the spreadsheets, merge duplicates and give every row a stable ID, then import in the right order: customers, contacts, deals, quotes and activities. Check each file without writing first, and run a trial import on a small part.

What is field mapping?

Field mapping is deciding which CRM field each spreadsheet column goes into. In NG CRM each column comes with a suggested field, and the mapping is saved as a template for the next import.

How do I avoid duplicates when importing?

Merge duplicates in the spreadsheet before importing, by tax ID, email and similar name, and give every row the old system's ID. When a row carries that ID, a repeated import into NG CRM recognises the existing record and does not create a new one.

Are the dates of past activities kept?

Yes. Completed activities imported into NG CRM keep their original dates, so customer history shows when things actually happened.

Can an import be undone?

Not with one click. That is why “Check file” runs through the whole file without writing first, a trial import of a small part is recommended, and the real import can run as all or nothing.

How many rows can I import at once?

Up to 50,000 rows per file, from CSV or Excel. Imports run in the background, and every import stays in the history: who, when, which file and with what outcome.

Want to see how this looks in NG CRM?

We will show you in a demo, on examples from your own sales. No obligation.

More articles