This article explains how to get your data out of the CRM and how to bring it in: exporting a list, downloading the module’s full export, importing a file from a spreadsheet or another CRM, and connecting third-party software through the public API. It is intended for CRM administrators and for anyone in charge of a data migration; the last part is intended for developers.
Before you start #
- The CRM module must be enabled for your organisation and open to you (see Enabling and administering the CRM module).
- Permissions in the role matrix, CRM menu, Access level: “CRM import and export — View” to export; “CRM import and export — Create” to import, plus the right to create what you import (“CRM accounts — Create”, “CRM contacts — Create”, “Opportunities — Create” or “CRM activities — Create”); “CRM import and export — Delete” to cancel an import.
- The module’s full export and its re-import also require “CRM settings — Edit”. The re-import also requires the right to create all four objects.
- By default, only the Administrator role holds the import and export permissions. An export only contains the records you can read: it is limited both by your scope on import and export and by your scope on the exported object (Mine, My team or All, see CRM settings).
Exporting a list #
- Open CRM › Accounts, CRM › Contacts or CRM › Opportunities, then filter the list as you wish. For activities, open CRM › My activities or the Activities tab of a record.
- Click CSV or Excel, at the top of the list. These buttons only appear with the export permission.
- The Export the accounts window (or Export the contacts, Export the opportunities, Export the activities) offers the columns the list displays, already ticked. Untick those you do not need, tick others under Other columns (active custom fields are listed there) and put them in order with the arrows.
- Click Export as CSV or Export as Excel. The file downloads, dated today.

- The list filters apply. In the kanban view, the opportunity export is limited to the pipeline on display. From My activities, the export covers the activities assigned to you; from a record, those of the record, with the type and status filtered.
- For activities, the Report column is not ticked by default: tick it under Other columns if you need it. Another person’s private activity is never exported.
- Values are written in your language. The CSV uses a semicolon as separator and opens directly in Excel.
- Some data never leaves a list export: account notes, and contact notes and proof of consent.
The Import and export page #
Open CRM › Import and export. The page brings together:
- the Full CRM export card, with the Download the full export and Re-import a full export buttons;
- the New import button, which opens the import wizard;
- My imports: your imports, newest first, with the File, Object, Status, Result and date (Uploaded on). The file name opens the import’s page.
Without “CRM import and export — Create”, only the full export card is shown.

Downloading the module’s full export #
The full export is a ZIP archive containing everything the CRM holds that you can read, so you can archive it or change tools without losing anything. Click Download the full export. The archive contains:
- one file per object (accounts, contacts, opportunities, activities), with the import columns: the archive can be re-imported as it is;
- the relations: legal identifiers and addresses of organisations, contact emails and phone numbers, links to accounts, contacts of opportunities and activities, participants;
- the history: the timeline (who did what, when, on which record, without the content), opportunity stage changes, every version of each quote and its lines;
- the settings that give values their meaning: tags, custom fields, lists, pipelines and stages;
- a file describing every file, its columns and its links, and a “README” file.
Attachments are not part of the archive. A private activity of which you are neither the author, the assignee nor a participant is not included. Every full export is logged.
Re-importing a full export #
Click Re-import a full export and choose the ZIP archive (20 MB at most). It is re-imported in one go, without a simulation: missing settings are recreated, then accounts, contacts, opportunities and activities, with their relations.
- A record that already exists in the organisation (a duplicate, detected as on screen) is not recreated: the row is counted as “skipped”, and the existing record receives the archive’s relations if you can read it.
- A person who does not exist in the organisation leaves the record to the person importing.
- Above 500 rows, the re-import is queued: “The archive is queued: the bell tells you when it is finished.” The See the details link leads to the import’s page.
- Quotes in the archive remain history: they are not recreated.
Importing a file #
An import brings accounts, contacts, opportunities or activities in from a file. Import them in that order: a contact, an opportunity or an activity refers to an account that already exists, and an activity can refer to an opportunity that already exists. Nothing is written before the Import button.
Preparing the file #
- Accepted formats: CSV (semicolon, comma or tab separator) or Excel (first sheet only). 20 MB and 50,000 rows at most. The first non-empty row holds the headers.
- To start from a safe base, download from the wizard the object’s Excel template or CSV template, whose columns carry the field names in your language, or the Sample file, filled with three fictitious rows.
- Required fields: the company name for an account; the last name for a contact; the opportunity name and the account for an opportunity; the type and the account for an activity. A custom field made required in the settings must also be filled in, otherwise the row is refused.
- Dates: 2026-11-06, 06/11/2026 or 06.11.2026; an impossible date (31/02) is refused, never corrected. Amounts: 1234.50, 1 234,50 or 1’234.50. Yes or no: yes, no, oui, non, 1, 0 or x. Several values in one cell: separate them with a semicolon.
- An owner or assignee is given by their email or by “First name Last name”. An account, by its company name or its Illizeo ID. The contacts of an opportunity or activity, by their emails. A country, by its ISO code or its name. A tag must already exist in the CRM settings.
The wizard’s steps #
Click New import. The wizard has five steps, shown under its title.
- 1. The file: under What do you want to import?, choose Accounts, Contacts, Opportunities or Activities. Click Choose a CSV or Excel file, then Read the file.
- 2. The columns: for each File column, the screen shows Examples taken from the first rows and proposes a CRM field. Choose another field or Do not import. Required fields carry an asterisk; as long as one of them has no column, the screen says so (“Required fields with no column: ”) and Next stays greyed out.
- 3. The values: for each list column (account type, industry, stage, activity type, owner…), each value in the file is shown with its number of rows and the proposed CRM value, which you correct if needed. None (ignore) leaves the cell empty, or causes the row to be refused if the field is required. A stage is named “Pipeline › Stage”, or by its name alone if it is unique; the Won and Lost stages are also recognised under their usual names in other tools.
- 4. Duplicates: under When a row looks like an existing record, choose Skip the row (default), Update the record or Create anyway. If you wish, enter a name under Save this mapping as (optional).
- 5. The simulation: click Simulate. Every row goes through the same checks as the real import, then nothing is kept: you see how many records would be Created, Updated, Skipped or Refused, and the Refused or skipped rows, with their reason. Correct things if needed with Back to the mapping, then click Import.

The mapping proposed at step 2 is, in this order: a mapping you saved for identical columns, otherwise the one for the standard export of HubSpot, Pipedrive, Zoho CRM or Salesforce if it recognises it (“HubSpot export recognised: columns are suggested from this template.”), otherwise the field name in one of the four languages. Your saved mappings are also shown as buttons, under Reuse a saved mapping:.

Above 500 rows, the simulation and the import are queued: the wizard says so, and the bell tells you when the simulation is ready, then when the import is finished. You then import from the import’s page.

What the import does #
- It follows the same rules as the screen: same checks, same permissions, same scopes. A record you cannot read is reported as “not found”, without revealing anything.
- Rows are written one by one: a refused row does not stop the others.
- Duplicates are detected as on screen (see Finding duplicates and merging records); an opportunity is a duplicate if its account already has an opportunity with the same name, an activity if its account already has an activity of the same type, with the same subject, on the same day. An Illizeo ID column points to the exact record to update.
- Create anyway never creates a second organisation with the same legal identifier: if that organisation exists without an account and you can read it, the account is opened on it; otherwise the row is refused.
- Owner of an account: the one on the row if it is recognised and you can assign it to them; otherwise the person chosen in Owner of an imported account (see CRM settings); otherwise you. For a contact, an opportunity or an activity, an empty column makes the record yours, and a person the CRM does not recognise causes the row to be refused, unless you mapped them to a person at step 3.
- An empty cell changes nothing: on update, the existing value is kept. The emails and phone numbers of an updated contact are added to theirs, and a contact refusal already recorded (“do not call”…) is never lifted by an import.
- An opportunity already won or lost keeps its creation date and closing date, if the file provides them.
- During an import, nobody is notified of the records created and no workflow is triggered. You receive a single notification, at the end.
- If your organisation submits some creations to human approval, the rows concerned are counted as Awaiting validation: they are only written after the decision (see Getting records and sendings approved).
Following, resuming and cancelling an import #
An import’s page shows its object, its number of rows, its status and its results. The statuses are: File read, Simulation queued, Simulated, Import queued, Running, Imported, Failed and Cancelled. While the server is working, the page updates itself.
- Resume the mapping reopens the wizard at the columns step, for an import with the status File read, Simulated or Failed. A Simulated import can also be run with Import.
- Full report (CSV) downloads the refusal report: three columns, Row (the row number in your spreadsheet), Status (“Ignored (duplicate)”, “Refused” or “Awaiting validation”) and Reason.
- Cancel the import (import with the status Imported) removes the records the import created, and nothing else: updates remain, and a record used since (an account that has received a new activity, for example) is kept. The Cancel this import? window reminds you of this; the result says how many records are removed and how many are kept.
- Your imports are visible to you only. The imported file and its report are deleted after 30 days; the figures remain.
Using the public API #
This part is intended for developers. The API’s common rules (address, authentication, limits, errors) are in Public API: developer guide.
- Create a token in Settings › Manage Illizeo › API Tokens (see Creating and managing API tokens).
- Under Scopes, tick Read and, if needed, Write for the “CRM — accounts”, “CRM — contacts”, “CRM — opportunities” and “CRM — activities” resources. Two other resources serve automations: “CRM — webhook subscriptions” (see CRM webhooks) and “CRM — validation requests”. They are only offered if the CRM is enabled.

| Call | Effect |
|---|---|
GET /v1/crm/accounts |
List of accounts; likewise contacts, opportunities and activities. |
GET /v1/crm/accounts/{id} |
One record. |
POST /v1/crm/accounts |
Creation, with the screen’s input and checks. |
PUT /v1/crm/accounts/{id} |
Partial update. |
DELETE /v1/crm/accounts/{id} |
Deletion, with the screen’s rules: a record that has a history cannot be deleted (response 409), it is archived instead. |
GET /v1/crm/validations/{id} |
The status of a validation request, for a write that returned 202. |
- The token acts with the permissions and scope of the person who created it: that person also needs the screen permission (“CRM accounts — View” to read, “Create”, “Edit” or “Delete” to write). A record outside their scope returns
404; another person’s private activity does not exist. An organisation without the CRM returns403 MODULE_NOT_ACTIVE. - As on screen, an activity’s author and assignee can edit it with “CRM activities — View”, as long as it is not done.
- Lists accept
q(full-text search; for contacts, it also covers email addresses),modified_since(ISO 8601 date),owner_id(the owner; for activities, the assignee),tag(a tag),cursorandlimit(50 by default, 200 at most). Opportunities also acceptstage_idandmission; accounts and contacts,club_id(current members of a club). The response carriesitems,next_cursorandhas_more; records are returned by ascending ID. - Records have the application’s shape, with keys in French.
- Creating an account or contact that resembles an existing record returns
409 DUPLICATES_FOUND, until the request sendsconfirmer_doublonset to true. - A write that your organisation submits to human approval writes nothing: it returns
202with theCRM_VALIDATION_PENDINGcode and the request’s ID, whose status can be read with the “CRM — validation requests” resource.
Good to know #
- In an exported file, a cell that starts like a spreadsheet formula is neutralised: it shows as text.
- List exports, the full export, imports and their cancellations are logged.
- The end of an import can also notify your tools through an “Import completed” webhook (see CRM webhooks).
FAQ #
Rows are refused because the account does not exist. #
Import the accounts first, then run the file again. If several accounts have the same name, give the account’s Illizeo ID. An account outside your scope is treated as non-existent.
The Next button stays greyed out at the columns step. #
A required field has no column: the screen names it under “Required fields with no column: ”. Map a column of the file to it, or add that column to your file and start the import again.
