> For the complete documentation index, see [llms.txt](https://docs.daylite.app/help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.daylite.app/help/mac-fundamentals/tools-and-utilities/csv-tsv-data-importer.md).

# CSV/TSV Data Importer

How to import a CSV or TSV file into Daylite on Mac: map your columns to Daylite fields, update existing records with Unique fields, and save reusable import profiles.

The Daylite CSV/TSV importer lets you bring records into Daylite from spreadsheet files. You can import People, Companies, Opportunities, Projects, Tasks, Appointments, Notes, and Forms — mapping each column in your file to the corresponding Daylite field. The importer also supports updating existing records by matching on Unique fields, so you can use it both for initial data migration and for ongoing data updates. The CSV/TSV importer is available on Mac only.

**Key facts:**

* Access the importer via **File > Import > Import from Spreadsheet**
* Supported record types: People, Companies, Opportunities, Projects, Tasks, Appointments, Forms and Notes, labeled "Memos" in the importer UI,
* Each column in your file — the Source — maps to a Daylite field — the Destination.
* Marking a field as Unique tells the importer to match against existing records and update them instead of creating duplicates
* Fields labeled "Overwrites" replace existing data on matched records
* Import Profiles let you save and reuse field mapping configurations for repeated imports

{% hint style="info" icon="lightbulb" %}
**Before you start:** To import contacts from Apple Contacts or a vCard file rather than a spreadsheet, see [Importing Contact Information](https://docs.daylite.app/help/mac-fundamentals/contact-management/importing-contact-information).
{% endhint %}

## What Can You Import?

The Daylite importer supports the following record types:

| Record type   | Notes                                                   |
| ------------- | ------------------------------------------------------- |
| People        | Contact records for individuals                         |
| Companies     | Organization records                                    |
| Opportunities | Sales pipeline records                                  |
| Projects      | Project records                                         |
| Tasks         | Task records                                            |
| Appointments  | Calendar event records                                  |
| Notes         | Labeled "Memos" in the importer UI                      |
| Forms         | Requires selecting a specific Form template — see below |

When you select a record type from the **Kind** dropdown, the list of available Destination fields changes to match that type. For example, selecting People shows fields like First Name, Last Name, and Primary Phone, while selecting Opportunities shows fields like Opportunity Name, Value, and Probability.

When importing Forms, an additional dropdown appears to choose which Form template to import into. This is the only record type that requires selecting a template before mapping fields.

## How to Import from a CSV or TSV File

{% hint style="success" %}
**Before You Import**

An import can make large, sweeping changes to your database, and there is no undo. Clean your file and get your field mapping right before you run it. The Daylite interface is also locked while an import runs, so you cannot use the app until it finishes. Run a small test import first to confirm your mapping, and schedule large imports for a time you do not need Daylite.
{% endhint %}

To import records from a spreadsheet file:

1. Go to **File > Import > Import from Spreadsheet.**

<div align="left"><figure><img src="https://3475717408-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6oVSyjL3UowOqokog3Vn%2Fuploads%2FYGh6rKQfgVsoBai29BUL%2Fimage.png?alt=media&amp;token=f085de65-9ec6-4f39-b675-802dfca76dd1" alt="" width="563"><figcaption></figcaption></figure></div>

3. Click **Browse** and select the CSV or TSV file you want to import.

<figure><img src="https://3475717408-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6oVSyjL3UowOqokog3Vn%2Fuploads%2FBj69BG8zRRwHuWvf5R4W%2Fimage.png?alt=media&amp;token=910b55aa-e10d-40b9-8588-7bbf1f0cc8d8" alt=""><figcaption></figcaption></figure>

4. Select the record type from the **Kind** dropdown, for example: People, Companies, or Opportunities.

<div align="left"><figure><img src="https://3475717408-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6oVSyjL3UowOqokog3Vn%2Fuploads%2F3jFyoIn3RKfThl20CDSA%2FScreenshot%202026-09-17%20at%2018.03.42.png?alt=media&amp;token=a152c5be-3fcd-4a8f-8967-dfe0cd4462c5" alt="" width="185"><figcaption></figcaption></figure></div>

5. Map each Source column to a Destination field in Daylite. See How to Map Fields for details.
6. Optionally, mark fields as **Unique** if you want the importer to match against existing records. See How to Match and Update Records for details.
7. Click **Preview** to review the mapping summary.
8. Click **Import**.

After the import completes, you can find your newly imported records under **Last Import** in the relevant section of the Daylite sidebar.

### How to Map Fields

Field mapping tells Daylite which column in your spreadsheet corresponds to which field in a Daylite record. The mapping interface displays each mapping as a row with the following components:

**Source** is the column from your spreadsheet. The importer reads the first row of the file and uses the column headers as Source labels. If the first row does not contain headers, the importer displays column numbers instead.

**Destination** is the Daylite field where the imported data is stored. The available Destination fields depend on the record type you selected in the **Kind** dropdown. For example, People records have fields like First Name, Last Name, and Primary Phone; Opportunity records have fields like Opportunity Name, Value, and Close Date.

<div align="left"><figure><img src="https://3475717408-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6oVSyjL3UowOqokog3Vn%2Fuploads%2FfgR1EnCgrU1HzSzDynIp%2FScreenshot%202026-09-17%20at%2018.18.51.png?alt=media&amp;token=a294e5e1-1464-4416-bda7-1ac13d61db5c" alt="" width="375"><figcaption></figcaption></figure></div>

**Label** is an additional selector that appears for certain Destination fields. For example, when mapping a phone number on a People import, you can assign a label such as Work, Mobile, or Main. Address fields also have label selectors.

Some Destination fields are listed as "Extra" fields. An Extra field in Daylite is a custom field. When you select an Extra field as the Destination, an additional input appears where you enter the name for the custom field — this name is what appears on the record in Daylite.

Three buttons at the bottom of the mapping interface let you manage your field mappings:

* **Remove (–)** drops a selected mapping row so that column is not imported
* **Add** **(+)** creates a new mapping row so you can map an additional column
* **Profile** opens the Profile menu for saving and loading mapping configurations

<figure><img src="https://3475717408-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6oVSyjL3UowOqokog3Vn%2Fuploads%2FJ1rEa8KrAzIQzRJMLXzJ%2FScreenshot%202026-09-17%20at%2017.59.23.png?alt=media&amp;token=4c37bef6-13bd-4ee7-a7e3-788946064b11" alt=""><figcaption></figcaption></figure>

**Field wrappers** are characters (typically quotation marks) that enclose field values in a CSV file. They tell the importer where a field begins and ends, which is necessary when a field value itself contains the delimiter character — for example, a comma inside an address within a comma-separated file. In most cases, the default wrapper settings work correctly. You can customize the field wrapper character if your data requires it.

**Individual Salutations** is a language-specific field that appears in the Destination list only when Daylite is set to German. It reflects a cultural convention for formal address.

{% hint style="info" %}
**Keyword Split by String?**

Keyword split by string is a setting that tells the importer how to handle a column containing multiple Keywords in a single cell. If your spreadsheet stores multiple Keywords in one field separated by a delimiter character, you can specify that delimiter so Daylite splits the value into individual Keywords.

Supported delimiters include commas, plus signs, and equal signs. The importer applies the specified delimiter only to the field mapped to Keywords.
{% endhint %}

### How to Match and Update Records

A Unique field is a field the importer uses to match incoming records against existing records in Daylite. When you check the **Unique** checkbox on a field mapping, the importer compares each row in your file against all existing records. If it finds a record where every Unique field matches, it updates the existing record instead of creating a new one.

This means the importer can be used for two purposes: creating new records and updating existing records with new data.

**Example:** You previously imported a list of People with first names, last names, and email addresses. Later, you receive a new file that includes phone numbers for the same people. You can import the new file with First Name and Last Name marked as Unique. The importer finds the matching records and adds the phone numbers to the existing records instead of creating duplicates.

{% hint style="warning" %}
**The "Overwrites" label** appears next to certain Destination fields. This means that if the existing record already has data in that field, the import replaces the old value with the new one. For example, if a record already has a primary phone number and the import file contains a different phone number mapped to Primary Phone (Overwrites), the existing phone number is replaced.
{% endhint %}

**Recommendations for Unique fields:**

Mark as many fields as Unique as practical. First Name and Last Name alone are not infallible — common names, or the same name appearing twice in your database, can cause incorrect matches. Adding Primary Email as a Unique field alongside First Name and Last Name produces more reliable results.

**Source Import ID** is the most reliable field to match on, because it identifies a single record exactly rather than relying on names. Records do not have one by default. You create it by including your own ID column in the file the first time you import. On any later import from that same source, map the column back to Source Import ID and mark it Unique, and the importer matches on that firm value instead of First Name and Last Name. This is niche, but it is worth setting up when you will repeatedly update the same records from an external system that already has stable IDs.

## How to Save and Reuse Import Profiles

An import Profile is a saved field mapping configuration. Profiles are useful when you perform the same type of import repeatedly — for example, importing a standardized contact list from another system on a weekly or monthly basis.

The Profiles menu at the bottom of the mapping interface includes four options:

* **Save Profile** saves the current mapping configuration
* **Load** **Profile** opens a previously saved Profile
* **Save Profile As** saves the current mapping as a new Profile
* **New Profile** clears all mappings and starts a blank configuration

## Frequently Asked Questions

**Can you import records other than Contacts into Daylite?**

Yes. The CSV/TSV importer supports People, Companies, Opportunities, Projects, Tasks, Appointments, Notes, and Forms. Select the record type from the **Kind** dropdown before mapping fields.

**What happens if you import a record that already exists in Daylite?**

If you have marked fields as Unique, the importer matches the incoming record against existing records. When all Unique fields match, the importer updates the existing record with any new data from the import file instead of creating a duplicate. Fields marked "Overwrites" replace existing values.

**Why does the importer show column numbers instead of column names?**

The importer reads the first row of the file as column headers. If the first row contains data instead of headers, the importer displays column numbers as the Source labels. Add a header row to your file before importing if you want descriptive Source labels.

**Does importing Forms work differently from importing other record types?**

Yes. When you select Form as the record type in the **Kind** dropdown, an additional dropdown appears where you select which Form template to import into. This determines which fields are available as Destinations. No other record type requires this additional selection.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.daylite.app/help/mac-fundamentals/tools-and-utilities/csv-tsv-data-importer.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
