# Imports and exports > An import brings contacts into MailCamp from a CSV file; an export writes contacts out to one. Both run as background jobs with their own overview page, because a large audience takes minutes rather than seconds to process. ## What it is Imports and exports are how an audience is moved in and out of MailCamp — onboarding from another provider, a periodic backup, consolidating several mailing lists into one. Neither happens inline: you start a job, it is queued and processed, and the result appears on the corresponding overview. ## Importing ### The wizard 1. Open **Contacts → Import contacts** (`/contacts/import`). 2. Upload the CSV. UTF-8 is recommended and the first row should hold column headers. 3. Map each CSV column onto a contact field. Email is required; names, custom fields, tags and topics are optional. 4. Review the preview and confirm. ### Key concepts - **Duplicates**: a duplicate email within the same mailing list is merged into the existing contact, with imported values overwriting the old ones. Re-importing the same file is safe. - **Status overwrite**: an import can set the resulting status — for example marking contacts as Confirmed so they skip double opt-in. Only do this with proof of consent. - **Tagging an import**: giving each import its own tag keeps groups distinguishable afterwards, which is what makes consolidating several lists into one audience workable. - **Topics at import**: an interest can be attached during the import, placing contacts in the right group from the start. They can change it themselves later. - **Job statuses**: `Created`, `Queued`, `Processing`, `Completed`, `Failed`, `Unknown`. ### Consent Only import people who opted in. Purchased or scraped lists damage sender reputation, get flagged as spam and may breach GDPR. ## Exporting 1. Open **Contacts → Export contacts** (`/contacts/export`). 2. Pick the mailing list to export from — on a single-audience account this is filled in for you. 3. Start the export. Depending on list size it takes up to a few minutes; you are notified when it is ready. 4. Download the CSV from the exports overview. ## Limits and edge cases - A contact belongs to exactly one mailing list, so an import always targets one list; moving people between lists means exporting and re-importing. - Custom fields are scoped to a list — a column that does not exist as a field on the target list cannot be mapped. - An import that fails most often has an unmapped email column or a file that is not UTF-8; re-export from the spreadsheet as "CSV UTF-8" and retry. ## Web routes Paths use `:id` as the placeholder for a job identifier. - `/contacts/import` — the import wizard. - `/contacts/lists/imports` — import overview with job statuses. - `/contacts/lists/imports/:id` — details of one import. - `/contacts/export` — start an export. - `/contacts/lists/exports` — finished exports, ready to download. ## Related - [Contacts](/llms/contacts.txt) — what is imported and exported. - [Custom fields](/llms/custom-fields.txt) — what CSV columns map onto. - [Tags](/llms/tags.txt) and [Topics](/llms/topics.txt) — what can be attached during an import.