Nothing written first

Importing your contacts

The first pass writes nothing. That single property is what makes this safe to attempt on an afternoon rather than something to schedule for a quiet week.

Before you upload

Ten minutes in the spreadsheet saves an afternoon afterwards

An import in Consonas runs in two halves: a first pass that reads your file and writes nothing at all, and an approval that writes everything. Almost every decision worth making belongs to the half before either of them.

It is far easier to fix a file than to fix four hundred records. Everything in this section is a spreadsheet task and all of it is quicker before the import than after.

Decide what not to bring

This is the most important thing on this page and it is the one most often skipped. The instinct is to import everything, because the data feels free and might be useful one day.

What that produces is a system where a search for a common surname returns four plausible records and nobody knows which is current, where marketing lists are full of addresses that bounce, and where the number of contacts tells you nothing about the business. Filter to the people and organisations someone in your team would recognise. You can always import the rest later, and in practice almost nobody ever wants to.

Fix the telephone numbers

Spreadsheets treat telephone numbers as numbers and remove the leading zero. This happens before the file reaches us and nothing downstream can recover it. Format the column as text, or put an apostrophe before each number, and check a few by eye.

One email address per cell

A cell containing two addresses separated by a semicolon or a slash cannot be interpreted safely, so the row is skipped and reported rather than guessed at. Decide which address is the right one, or split the row.

Make the dates consistent

A column where some rows are written one way and some another usually means someone edited the file on a different computer. The rows that cannot be read are skipped and listed, which is fine, but it is quicker to make the column consistent first.

Check the columns actually contain what they say

Sort by each column and look at the top and the bottom. This takes two minutes and it is how you find the eleven rows where a company name ended up in the surname column, which is the single most common fault in a real file.

The columns

What the import recognises

Column names differing between systems is the normal case rather than a problem. You map them, and the product suggests matches for the ones it recognises.

Name
For a person, first and last in separate columns if you have them, or one full name column if you do not. For an organisation, the organisation name. If your file mixes both in one column, the preview will show you exactly where that goes wrong.
Email address
The most important column in the file, because it is what duplicate detection matches on. One address per row. A cell containing two addresses separated by a semicolon will be skipped and reported rather than guessed at.
Telephone
Any format. Leading zeros survive, which is the single most common thing a spreadsheet destroys before you even get here.
Organisation
The company a person works for. If present, the import creates the organisation and connects the person to it instead of putting the company name in a field on the person.
Relationship type
Client, member, supplier, whatever you named. If the column is absent you can set one type for the whole file, which is what most people do on a first import.
Address
Separate columns work better than one. If everything is in a single cell, it comes in as one line, which is usually acceptable and occasionally annoying.
Notes
Free text, which becomes a note on the record. This is where most of the value in an old spreadsheet actually is, and it is the column people most often forget to bring.
Anything else
Mapped to custom fields if you have created them. Columns you do not map are ignored rather than silently discarded, and the preview lists them.

Upload, map, approve

Running the import

1. Upload the file

Nothing is written at this point. The product reads the file, works out what the columns contain, and suggests a mapping.

A comma separated file is what to bring, and the reason that format travels between systems at all is that somebody wrote its shape down as RFC 4180 long after everyone had already agreed on it. Import, export and search covers what the same machinery does once your records are in.

2. Correct the mapping

Check every column, including the ones it guessed correctly. Columns you do not map are ignored rather than silently discarded, and the preview lists them so you can see what you are leaving behind.

If your file contains people and their employers, map both. The import creates the organisation and connects the person to it, which is the shape you want and the one that would otherwise take two passes and manual work.

3. Read the preview properly

This is the step that matters and the one people rush. It tells you how many records will be created, how many existing ones will be updated, and how many rows will be skipped and why.

Read the skips first. They are where your file disagrees with itself, and they are frequently the most informative thing you will learn about data you have been carrying for years. Then check a handful of the creates by eye: are the names in the right fields, did the company come through, is the type right.

4. Cancel if anything looks wrong

Because nothing has been written, cancelling costs nothing. Fix the file and upload it again. Doing this twice is normal and doing it three times is not a failure, it is the process working.

5. Approve

Records are created. From this point they exist, so this is the moment the preview was protecting you from.

6. Spot check, then export

Open five records and read them. Then run an export, which is free and takes seconds, so you have a copy of the state immediately after the import and you know the export works.

Common faults

What the preview catches, and what to do

All six of these appear in real files regularly.

What is in the file What happens What to do about it
Two email addresses in one cellThe row is skipped and listed in the preview with the reason.Split into a second row or pick one. Do not delete the row and hope.
The same person twiceDetected on email address and shown as one create and one update.Check which version wins. The later row in the file updates the earlier one.
A company name in the person columnIt creates a person with a company's name, which is the most common import fault.Fix it in the file. This is exactly what reading the preview catches.
Dates in three different formatsThe ones it cannot read are skipped and reported.Format the column consistently in the spreadsheet before uploading.
Blank rows in the middleIgnored.Nothing.
Everyone who ever emailed youIt all imports, correctly, and your database becomes much less useful.Filter the file first. This is the advice most worth taking on this page.

The usual reason a migration is abandoned is not that the new system was wrong. It is four hundred correct records and ninety wrong ones with no reliable way to tell which is which.

Which is why the first pass writes nothing, and why running an import three times is the process working rather than failing.

After

What to do in the week following an import

Search for your ten most important customers

By name, by email address, by telephone number. This finds two things quickly: records that did not come through as you expected, and duplicates that existed in your old system without anybody knowing.

Merge the duplicates you find

Merging keeps both timelines, both sets of files and both sets of connections, and the merge itself is recorded. Do it while the number is small. Duplicates multiply, because each one becomes a plausible destination for future work.

Do not add custom fields yet

Wait a fortnight. The fields you would add today are mostly inherited from the system you are leaving, and about half of them will never be filled in twice. After two weeks of real use you will know which two or three genuinely change what somebody does.

Import the second file, if there is one

If your history is spread across several spreadsheets, bring them in one at a time and read each preview. The second import will match against records created by the first and update rather than duplicate them, which is the behaviour you want and the reason to do them in sequence instead of combining the files by hand.

What a row is

What a row is, which is the only hard question

Everything else about an import is mechanical. This is the one that decides whether the system can answer your questions in a year.

Most rows describe two things

A person, and the organisation they work for. That is two relationships and a connection between them, not one record, and importing it as one produces a system that cannot answer who else works there or what happened when that person moved.

The preview shows you what it made of each row before anything is written, which is exactly the moment to check this. Look at five rows and ask whether what was created is what you meant.

Sometimes the durable thing is neither

In several trades the record that lasts is not a person or a company. It is a site, a property, a household, a case or a party, and the people around it change.

If that is true of your trade, decide it before importing rather than afterwards. The sector pages each carry a modelling section saying what the durable record is for that trade and how to represent it below the Enterprise plan.

Connections are where the value is, and they are easy to skip

A connection carries a role and usually a period. Someone is a director of one company until March and of another from April, and both stay true of their own dates.

An import that creates records without connections produces a list. An import that creates connections produces something that can answer a question. The extra work is one column, and relationships and connections explains what the connection is then able to answer.

Bring consent with its provenance or not at all

A column marked yes is a tick rather than a consent record. Consent here is a fact with a date, a source and a channel, and importing a tick as consent carries an assertion you may not be able to support. The Information Commissioner's Office is the place to read what has to be demonstrable, and campaigns and consent records describes how the product checks it at the moment of sending.

If you have the date and the source, bring them. If you do not, knowing that before somebody sends a campaign is considerably better than knowing it afterwards.

A hundred rows first, always

Then open five of them at random. Almost every problem shows up in the first hundred, and undoing a hundred is a completely different proposition from undoing four thousand.

A surveying practice

One invented file, followed from the spreadsheet to the spot check

Nothing below happened. It is an invented firm with an invented file, written out at length because every other section here describes a single step and none of them shows an afternoon running from one end to the other.

What they had on the Monday

A three person surveying practice leaving a desktop address book whose maker stopped updating it years ago. Its export is one file of about thirteen hundred rows with sixteen columns: first name, last name, company, job title, email, telephone, mobile, three lines of address, town, postcode, category, notes, last contact and newsletter.

The office manager also keeps a spreadsheet of jobs going back six years. That is a second file and it is not part of this afternoon, which is the first decision they got right.

An hour spent in the spreadsheet before anything was uploaded

They sorted by last contact. Comfortably more than half the file had not been touched in four years, and reading twenty of those rows made the reason obvious: they are enquiries that went nowhere in a market the practice no longer works in. Those rows stayed in the original file, which was saved to storage the practice controls, and came out of the one about to be uploaded.

Four hundred and ninety rows were left. Sorting by category showed four values and a great many blanks. Sorting by surname put eleven rows at the top where the surname was a limited company. Sorting the mobile column showed that every number in it had lost a leading zero at some point in the past, which was repaired by formatting the column as text and pasting the original export back into it.

The decisions they made about columns rather than rows

The newsletter column held Y and N and nothing else: no date, no source, no channel. They left it unmapped and wrote down the file name and the date, so that anybody asking later can see the ticks existed and were deliberately not treated as consent records.

There were two telephone columns. The mobile is the number anybody actually rings, so that became the telephone. The other was the office landline, repeated identically on rows belonging to three different companies, so it stayed unmapped and appeared in the preview among the columns they were leaving behind.

Category became the relationship type: client, supplier and referrer, with the blanks set to client because reading thirty of them showed that is what they were. The notes column was mapped exactly as it stood, untidy as it is, because it is the only place in the whole file where anybody wrote down why a relationship exists.

A hundred rows first, then five records opened by eye

They copied the first hundred rows into a separate file and uploaded that. The preview said ninety four rows would create records and six would be skipped: three where two email addresses shared one cell, and three where the last contact date was written the American way because somebody had once opened the file on a different machine.

They read all six, corrected them in the full file, and approved the hundred. Opening five of the new records took four minutes and found the thing no preview could have caught. On rows belonging to one large client the company column held the branch name instead of the company, so several people now worked for somewhere that is not a company. That was fixed in the spreadsheet, where fixing it cost one sort and one paste rather than four hundred edits.

The full file, twice

Second upload, all four hundred and ninety rows including the hundred already approved. The preview showed three hundred and seventy creates, a hundred updates and twenty skips. The updates are the hundred matching what already existed, which is what tells you the matching is working before you rely on it. The twenty skips were the faults they already knew about, repeating further down the file where they had not thought to look.

Cancel. Twenty minutes in the spreadsheet. Third upload: three hundred and ninety creates, a hundred updates, nothing skipped. Approved.

What the afternoon actually cost

Roughly three hours, of which two were spent in a spreadsheet and none were spent undoing anything. Three uploads, two of them cancelled. That is not three attempts at the same job, it is one job with two checkpoints in it.

They created no custom fields, wrote the four abandoned columns on a note instead, and looked at that note a fortnight later. Two of the four had not been missed by anyone. Then they ran an export and put it beside the original spreadsheet, which gives them the state of the world before the import and after it, produced by two different systems, for a few seconds of effort.

Your old headings

Your file arrives speaking someone else's language

The mapping screen is the one place where your old supplier's model of the world meets ours, and the column headings are that model's vocabulary rather than a description of what somebody typed.

Account
In most systems this is the company, and in your exported file it is the organisation column even though no one labelled it that way. Map it as an organisation rather than as a field on the person. A company name typed into a box on a person is a piece of text, and an organisation is something other rows can point at.
Contact
Arrives meaning a person who belongs to an account, which is why exported files so often carry a company name on rows where there is no company. A person does not need an employer to exist here, so a row with a name, an address and nothing else is a complete row rather than a broken one.
Lead
Two things in one word: a person you have not qualified yet, and the fact that someone is interested. Import the person as a person. What the interest was and how far it got is a decision to make after the file is in, not a property of the row.
Status
The most overloaded column in any export. It might mean a stage in a process, it might mean active or archived, and in more files than you would expect it quietly means do not contact this person. Read twenty of its values before you map it anywhere at all.
Category, tag or segment
Usually the closest thing your old file has to a relationship type, and usually holding several values at once: client, newsletter, Christmas card. Pick the one that says what the relationship is. The others describe things you do rather than what someone is.
Owner or assigned to
A column of colleagues' names, some of whom have left. Work out what you want those names to mean before you map anything, because a name matching no one in your organisation is a piece of text pretending to be an assignment.
Unsubscribed, suppressed or do not call
The one column where losing a value has a consequence a person outside your organisation feels instead of one you notice in a report. Keep it beside you even if you decide not to map it. Every other import mistake stays inside the building.
Record number
Your old system's identifier. Meaningless here and occasionally priceless, so bring it into a custom field if anybody will ever have to reconcile the two systems. Working out afterwards which record was which is a matching job done by hand.
Notes, comments or history
Almost always where the value of an old file actually is, and almost always the column someone drops because it is untidy. A paragraph that reads badly is worth more than a tidy field nobody ever filled in.

Two questions worth asking of every column

What did a person actually type into this, and what would somebody do differently if it were wrong? The first question catches the column that says email and contains a mixture of addresses and the word none. The second decides whether the column is worth carrying at all, which is usually the more valuable answer.

Column headings survive far longer than the reasons for them. A file that has moved through three systems in a decade often carries a heading nobody in the building can explain, still faithfully populated, because each migration mapped it to something rather than making a decision about it.

Translation is where meaning goes quietly

Nothing announces itself when a column is mapped to a field that is nearly right. The import completes, the records look plausible, and eighteen months later somebody asks a question the data cannot answer because the answer was flattened into a text field during an afternoon nobody remembers.

This is the whole reason the mapping step is separate from the upload and the preview is separate from both. Splitting them costs you two clicks and buys you the only opportunity to notice a translation before it becomes a fact.

Deliberately absent

No connector, no enrichment, and nothing sent to the people in your file

Each of these has a cost that falls on you, so each is worth reading as a reason to buy something else if the cost is one you cannot carry.

There is no connector to the system you are leaving

You export a file and you upload it. A connector sounds better and quietly means something else: two systems writing to the same records, a reconciliation problem no one owns, and a migration with no moment when it finished.

A file has a date on it. Somebody chose what was in it and someone approved the preview, and in a year the question of what came from where has an answer. The cost is genuinely yours: if your current supplier makes exporting difficult, that is an obstacle we can neither remove nor help with, and it is worth finding out how difficult before you commit to anything.

Nothing is filled in from anywhere else

Some systems will complete the gaps in your file from third party sources: a telephone number here, a job title there, a company size no one asked for. We do not, and would not.

Data you did not collect arrives with no provenance you can describe. The first time someone asks where a telephone number came from, or a person exercises their rights over it, the answer needs to be a sentence about your own relationship with them instead of a shrug about an appended dataset. Your gaps stay gaps, which is the honest version of what you actually know.

Nothing is sent to anyone because a row arrived

Importing a file contacts nobody in it. No welcome message, no notification, no sequence beginning on its own. That is deliberate, because the moment an import can send email is the moment a mistake in a spreadsheet reaches four hundred people and cannot be recalled.

The consequence is that whatever you want said to the people you have imported is a thing you compose and send deliberately, after you have looked at what you actually imported.

There is no repeating import on a schedule

An import is an event you approve, so a recurring one would be a synchronisation with a nightly cadence and the same two writer problem as a connector, minus the person reading the preview.

If a file genuinely has to arrive from another system every night, that is an integration question instead of an import one and it is worth raising before you buy rather than after. We would rather tell you that a different product suits you than have you discover it in month three.

Your old system's history stays your old system's history

Your records come across. The record of who changed what in the system you are leaving does not, because writing those entries here would stamp our provenance on events that happened somewhere else, and an audit trail that says a thing happened here when it did not is worse than no entry at all.

This is a real reason to keep the old export rather than cancelling the old account and deleting everything the same week. Whatever obligation you had to be able to explain what happened in the old system is an obligation that outlives the subscription.

Import questions

Asked about importing

What happens if I get it wrong?

Nothing, if you have not approved the preview. The first pass writes no records at all, so a wrong import costs you the time it took to read the preview. Cancel, fix the file, upload it again. There is no half finished state to unpick, which is the usual reason migrations get abandoned.

Can I import people and companies from one file?

Yes, and it is the normal case. A row with a person, their job title and their employer creates two records and connects them. The preview shows exactly that before it happens, which is where you catch a file that puts the company name in the wrong column for some rows.

How does duplicate detection work?

On email address, and on close name matches where there is no address. Matches appear in the preview as updates rather than creates. Nothing is merged silently, because two records that look identical are occasionally two people and a product that guesses will eventually guess about someone who matters.

Can I run the same file twice?

Yes, and it is safe. The second run matches the records created by the first and updates instead of duplicating them. This is the intended way to work when you are correcting a file: run, read, cancel, fix, run again.

What file format do I need?

A comma separated file, which is what every spreadsheet application and every other system produces from its export. If you can get a file out of your current system you can almost certainly get it in here.

My telephone numbers lost their leading zero. Whose fault is that?

Your spreadsheet's, before the file reached us, and it is the most common data loss in any migration. Format the column as text before you save, or add an apostrophe before the number. Once the zero is gone from the file, nothing downstream can recover it.

Should I import my whole history?

Almost certainly not, and this is the advice most worth taking. Nine thousand records including everybody who once asked for a price produces a system where search returns four plausible answers and nobody knows which is current. A thousand relationships someone would recognise is worth considerably more.

Can I undo an import after approving it?

There is no single undo button. If you approve an import and it is wrong, the records exist and would need correcting or deleting. That is exactly why the preview exists and why we would rather you spent five minutes reading it than five hours undoing something.

I have three spreadsheets that overlap. Which one goes first?

The one you trust most, because when the same person appears twice the later row updates the earlier one. Import your best file first and your patchiest last and the patchy file will overwrite good values with worse ones. Import them the other way round and the good file has the last word.

Should I import before or after inviting my team?

Import a hundred rows, invite two people, tidy up together, then import the rest. Doing the whole file alone first means you carry every judgement about someone else's customers on your own. Inviting everyone first means eight people form their opinion of the product while looking at the worst state your data will ever be in.

Who in the team should actually do this?

Two people for one hour, and they are usually not the same person. Somebody who is good with a spreadsheet should operate it, and somebody who knows the customers should decide what stays. The spreadsheet alone produces a beautifully clean file containing the wrong four hundred rows.

What should I do with the record numbers from my old system?

Decide whether anybody will ever have to reconcile the two systems. If the answer is yes, put the identifier in a custom field before you import, while the correspondence is free. If you skip it and need it in six months, matching the two lists up again is a job someone does by hand.

The import made our data look worse than I expected. Is something wrong?

Almost certainly not. The gaps were in the file, which means they were in your old system, where a comfortable interface was drawing a record that looked complete around fields nobody had filled in. Seeing it plainly is unpleasant for an afternoon and useful for years.

Do the people in my file need to be told they have been imported?

Changing which system holds a record is not by itself a change of what you are doing with it, so in most cases this is a question about your privacy notice rather than about the import. The part worth attention is the opposite direction: a column of ticks is not a consent record, and importing one does not make it into one.

Upload a file and read the preview

Nothing is written until you approve it, so the worst outcome of trying is that you learn something about your own spreadsheet.

Three people, a thousand relationships, no card and no time limit.