LeadmodeDocumentation
Switching from another system

Switch from Excel or CSV

How you prepare spreadsheets with leads, opportunities, calls and tasks for the switch, which columns the AI needs, what the pitfalls are and what does not come along.

This page belongs to the area Switch from another system. The process with your AI is described in Switch with your AI. It applies to Excel, Google Sheets and CSV files from any source.

When to use the file import and when the switch

If you only have leads, use the file import. It is simpler. The switch is worthwhile if your spreadsheets also contain history: calls, notes, tasks, appointments or opportunities with stage. The file import knows only leads.

What you prepare

One table or sheet per kind of data. Best like this:

TableContentAt least
Companiesone row per companyunique identifier, name
Contact personsone row per personunique identifier, identifier of the company, name
Opportunitiesone row per sales opportunityidentifier of the company, stage
Historyone row per call, note or emailidentifier of the company, date and time, text
Tasksone row per taskidentifier of the company, title, status
Appointmentsone row per appointmentidentifier of the company, start, end, status

The instructions for saving as XLSX or CSV are in Leadmode at the import under "Where does your data come from?" for Excel and Google Sheets. They have been checked.

If you only have one table, that is fine. Your AI shows you what it finds in it and suggests how it is divided.

How columns become Leadmode objects

In your tableLeadmodeNote
Company, customerCompanyaddress, channels, owner
Contact person, personContact personconnection to the company via the identifier
Status, stage, phaseStage or substagefree text is assigned via the mapping
Call, lead, historyHistorywith date, author, outcome and text
Note, remarkNotewith date and author
Task, follow-up, callback onTaskwith due date
AppointmentAppointmentstart, end, status
Editor, caretakerOwneryou assign names to employees, also former ones
Other columnsCustom fieldstype is recognised
"Do not call", "block"Blockremains as a block

Several contact persons in one row

In the file import and in the switch you can store several contact persons and contact channels per company in two columns: peopleJson (persons) and channelsJson (numbers and emails). Both are JSON lists. An example for a company with two contact persons:

peopleJson:   [{"ref":"a","firstName":"Anna","lastName":"Muster","salutation":"Frau","jobTitle":"Geschäftsführung","primary":true},
               {"ref":"b","firstName":"Ben","lastName":"Beispiel"}]
channelsJson: [{"kind":"phone","value":"+49 30 1234567","label":"Zentrale"},
               {"person":"a","kind":"mobile","value":"+49 171 1234567","label":"Direkt"},
               {"person":"a","kind":"email","value":"anna@beispiel.de"},
               {"person":"b","kind":"phone","value":"+49 30 7654321"}]
  • Persons: firstName or lastName (one is enough). Optional are ref (a name to which the channels refer), salutation (Herr, Frau, Divers or Keine Angabe; without an entry the salutation stays unknown and is never guessed from the first name), jobTitle, primary (main contact person; without an entry the first person) and doNotContact.
  • Channels: kind is phone, mobile or email, plus value. person refers to the ref of a person; without person the channel belongs to the company. Optional are label, preferred (preferred; without an entry the first per person and kind), enabled and doNotContact.
  • Errors: an invalid row names the place, for example invalid_structure:channelsJson[1].kind. Values from the file never appear in the message. Preview and import check by the same rules.

Typical pitfalls

  • No identifier. Without a unique identifier per row, Leadmode cannot later recognise whether an entry has already been imported. If you can, add a column with a running number and do not change it later. If it is missing, your AI forms an identifier from the row. This only holds as long as the table does not change.
  • Companies as text. If persons only carry the company name and no identifier, your AI connects via the name. Spellings such as "Müller GmbH" and "Mueller GmbH" may be separated by it. Check the messages in the trial run.
  • Several values in one cell. Your AI splits several phone numbers or emails in one cell. Check the result.
  • Date formats. "01.02.2026" can be 1 February or 2 January. Tell your AI which format applies. Give times as well, otherwise the order in the history is missing.
  • Merged cells and empty rows. Remove them. The first row must contain the column headings.
  • Several sheets. For the file import exactly one sheet must be filled. In the switch your AI reads the file itself. One sheet per kind or one CSV per kind is simplest.
  • Free-text statuses. The more different spellings, the longer the mapping. Tidy up duplicate spellings beforehand, if you can.
  • The future. Calls and completed tasks in the future are rejected.

What does not come along

  • Formulas, charts, colours and comments. The value of the cell counts.
  • Files linked in cells, and attachments.
  • Emails as a mailbox and call recordings.

Acceptance

  1. Count the rows of your tables and give the numbers to your AI as "expected".
  2. Have the reconciliation report shown to you. Each difference must have a reason.
  3. Open three to five companies you know well. Check history, tasks, owner and stage.
  4. Check that blocks arrived and that no email went out.
  5. Complete the order. If you do not like the result, take it back and start again.

See also

On this page