> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gohaven.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Import your member roster from a CSV file

> Bulk-import members into Haven by uploading a CSV. Map columns, handle duplicates, and review results — with automatic detection of common export formats.

The CSV import tool lets you bring your existing member roster into Haven in one step. Whether you're migrating from WildApricot, ClubExpress, or a homegrown spreadsheet, the import wizard walks you through uploading your file, mapping your columns to Haven fields, and reviewing the results before committing.

<Tip>
  If you are migrating from WildApricot, export your contacts from **Contacts → Export** in the WildApricot admin. Haven auto-detects WildApricot column names (First name, Last name, Email, Membership level, Member since, Renewal due, Status) and maps them automatically.

  ClubExpress and other platforms typically support CSV export from their member reports section. Column names will vary, but you can map them manually in step 2 of the import wizard.
</Tip>

## What the import supports

Haven accepts CSV, XLS, and XLSX files. The following fields can be imported:

| Column                     | Haven field      | Notes                                                    |
| -------------------------- | ---------------- | -------------------------------------------------------- |
| First name                 | First name       |                                                          |
| Last name                  | Last name        |                                                          |
| Email                      | Email            | Required. Rows without an email are skipped.             |
| Secondary email            | Secondary email  | CC'd on all automated emails                             |
| Phone                      | Phone            |                                                          |
| Address                    | Address line 1   |                                                          |
| City                       | City             |                                                          |
| State / Province           | State/Province   |                                                          |
| Zip / Postal code          | Postal code      |                                                          |
| Country                    | Country          |                                                          |
| Organization               | Organization     | The member's employer or affiliation                     |
| Membership level           | Membership level | Level name must match exactly, or a new level is created |
| Status                     | Status           | active, lapsed, contact, etc.                            |
| Member since / Join date   | Joined date      | Any common date format is accepted                       |
| Renewal due / Renewal date | Renewal date     |                                                          |
| Tags                       | Tags             | Comma-separated values in a single cell                  |

<Note>
  Email is the only required column. Any row without an email address is skipped during import and counted in the "skipped" total on the results screen.
</Note>

## Formatting your CSV

A few formatting notes before you upload:

* **One row per person.** Each row creates or updates one member record.
* **Dates** — use any standard format: `2024-03-15`, `03/15/2024`, or `March 15, 2024`.
* **Tags** — put multiple tags in a single cell, separated by commas: `Board Member, Finance Committee`.
* **Membership levels** — the value must match a level name in your Haven account exactly (case-insensitive). If Haven does not find a matching level, it creates a new one automatically.
* **Status values** — use: `active`, `lapsed`, `contact`, `suspended`, `honorary`. If the column is omitted, imported members default to `active`.

## Running the import

<Steps>
  <Step title="Navigate to Import">
    Go to **Members → Import CSV** in the left sidebar.
  </Step>

  <Step title="Upload your file">
    Drag and drop your CSV, XLS, or XLSX file onto the upload area, or click to browse your files. Haven parses the file immediately and shows a preview of the first five rows so you can confirm it loaded correctly.

    If the preview looks wrong — columns are missing, or data appears in the wrong place — check that your file uses the first row as a header row and re-upload.
  </Step>

  <Step title="Map your columns">
    Haven automatically maps columns it recognizes by name. Each column in your file appears on the left; the mapped Haven field appears on the right.

    Review the auto-mapped columns and correct any that are wrong or unmapped. Set any column you do not want to import to **Skip this column**.

    The **Email** column must be mapped before you can proceed. Haven blocks import if email is not mapped.
  </Step>

  <Step title="Review the import summary">
    Before importing, Haven shows you:

    * **Total rows** — how many rows are in your file
    * **Membership levels** — the distinct level names detected, so you can confirm they match your existing levels
    * **Missing email** — the number of rows that will be skipped because they have no email address

    If Haven detects level names that don't exist in your account yet, it notes that they will be created automatically.
  </Step>

  <Step title="Run the import">
    Click **Import Members**. Haven processes the rows in sequence. A progress bar tracks the import. When it completes, you see a results screen.
  </Step>
</Steps>

## What happens during import

* **New records** — rows with an email address that does not exist in your database create a new member record.
* **Existing records** — rows with an email address that matches an existing member update that record with the values from your CSV. Fields you did not include in your CSV are left unchanged.
* **Duplicate emails** — if your CSV contains the same email address more than once, Haven processes the first occurrence and skips the duplicates.
* **New membership levels** — if a level name in your CSV does not match any existing level, Haven creates a new inactive level with that name. You can then configure its pricing and settings from **Members → Membership Levels**.

<Warning>
  Import updates existing records. If you include a column for a field that already has a value — for example, renewal date — the imported value overwrites what was there. Double-check your data before importing to avoid overwriting accurate records.
</Warning>

## Post-import review

After the import completes, Haven shows a summary:

* Number of members imported
* Number of rows skipped (and why)
* Names of any new membership levels created
* A list of any row-level errors (for example, an unrecognized date format)

Click **View Members** to go directly to the people list, filtered to show your full database. From there you can spot-check individual records, assign tags, or fill in custom fields that were not in your CSV.

<Tip>
  If you imported many members and some records need corrections, use the member list's search and filter to find them quickly. You can edit any record by clicking the member's name to open their profile.
</Tip>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can I import custom field values?">
    Yes. During the field mapping step, any column in your CSV can be mapped to a custom field you have already defined. Custom fields appear in the mapping dropdown alongside the standard Haven fields. Make sure to create your custom fields in **Members → Custom Fields** before running the import.
  </Accordion>

  <Accordion title="Will importing send welcome emails to my members?">
    No. The CSV import does not trigger automated emails. Welcome emails are only sent when you manually activate a member through the dashboard or when a member completes the public signup flow. This prevents your entire roster from receiving a welcome email when you first migrate.
  </Accordion>

  <Accordion title="What if I make a mistake and need to undo the import?">
    There is no bulk undo for an import. If you need to remove records created by an import, you can delete them individually from the member list. For large-scale corrections, contact Haven support.
  </Accordion>

  <Accordion title="Is there a row limit?">
    Haven does not impose a hard row limit, but very large files (10,000+ rows) may take a few minutes to process. Keep your browser tab open until the import completes. If you have a very large roster, consider splitting it into multiple files of a few thousand rows each.
  </Accordion>

  <Accordion title="Can I import members who don't have email addresses?">
    No. Email is Haven's unique identifier for each person record, so it is required. Rows without an email address are skipped. If you have members without email addresses, you can add them manually through the Add Member form and leave the email field blank — though some Haven features (automated emails, portal login) will not be available for those members.
  </Accordion>
</AccordionGroup>
