---
title: Importing, exporting and using the API
description: "Export a list or the whole CRM, import accounts, contacts, opportunities and activities with the five-step wizard, follow or cancel an import, and connect third-party software through the public API."
url: "https://illizeo.com/en/centre-aide/crm-import-export-and-api/"
updated: "2026-11-08"
category: CRM
---

# Importing, exporting and using the API

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](https://illizeo.com/en/centre-aide/crm-enable-and-administer/)).
- 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](https://illizeo.com/en/centre-aide/crm-settings/)).

## Exporting a list

1. 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.
2. Click **CSV** or **Excel**, at the top of the list. These buttons only appear with the export permission.
3. 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.
4. Click **Export as CSV** or **Export as Excel**. The file downloads, dated today.

![The Export the accounts window: the ticked columns, ordered with arrows, and the Other columns list.](https://i0.wp.com/illizeo.com/wp-content/uploads/2026/11/crm-import-export-and-api-01.en_.png?resize=462%2C541&quality=80&ssl=1)
Exporting a list: the columns to tick and order.

- 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.

![The Import and export page: the Full CRM export card with its two buttons, the New import button and the My imports table.](https://i0.wp.com/illizeo.com/wp-content/uploads/2026/11/crm-import-export-and-api-02.en_.png?resize=800%2C223&quality=80&ssl=1)
CRM › Import and export: the full export, imports and their history.

## 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. **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. **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. **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. **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. **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 import wizard at step 1: the choice of object, the templates to download and the button to choose the file.](https://i0.wp.com/illizeo.com/wp-content/uploads/2026/11/crm-import-export-and-api-03.en_.png?resize=800%2C345&quality=80&ssl=1)
The import wizard: choose the object, start from a template, then upload the file.

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:**.

![Step 2 of the wizard: each file column, two sample values and the proposed CRM field, with Do not import.](https://i0.wp.com/illizeo.com/wp-content/uploads/2026/11/crm-import-export-and-api-04.en_.png?resize=800%2C673&quality=80&ssl=1)
The columns: each file column mapped to a CRM field.

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.

![Import diagram: read the file, map the columns then the values, choose the duplicate rule, simulate without writing anything; depending on the results, go back to the mapping or import; each valid row is created or updated, an invalid row is refused and goes into the CSV report.](https://i0.wp.com/illizeo.com/wp-content/uploads/2026/11/crm-import-export-and-api-flux-01.en_.png?resize=800%2C1434&quality=80&ssl=1)
An import: the simulation plays everything without writing; a refused row does not stop the others.

### 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](https://illizeo.com/en/centre-aide/crm-duplicates-and-merging/)); 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](https://illizeo.com/en/centre-aide/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](https://illizeo.com/en/centre-aide/crm-approvals/)).

### 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](https://illizeo.com/en/centre-aide/api-developer-guide/).

1. Create a token in **Settings › Manage Illizeo › API Tokens** (see [Creating and managing API tokens](https://illizeo.com/en/centre-aide/api-managing-tokens/)).
2. 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](https://illizeo.com/en/centre-aide/crm-outgoing-webhooks/)) and “CRM — validation requests”. They are only offered if the CRM is enabled.

![The New API token form, Scopes section: the CRM — accounts, contacts, opportunities and activities resources, with Read ticked.](https://i0.wp.com/illizeo.com/wp-content/uploads/2026/11/crm-import-export-and-api-05.en_.png?resize=800%2C329&quality=80&ssl=1)
An API token: the CRM scopes, read and write.

| 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 returns `403 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), `cursor` and `limit` (50 by default, 200 at most). Opportunities also accept `stage_id` and `mission`; accounts and contacts, `club_id` (current members of a club). The response carries `items`, `next_cursor` and `has_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 sends `confirmer_doublon` set to true.
- A write that your organisation submits to human approval writes nothing: it returns `202` with the `CRM_VALIDATION_PENDING` code 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](https://illizeo.com/en/centre-aide/crm-outgoing-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.

### *Similaire*
