> For the complete documentation index, see [llms.txt](https://doc.product-reg.varify.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.product-reg.varify.xyz/advance/import-migrate-registrations.md).

# Import/Migrate Registrations

Each import and migration from a previous system is unique, and custom development may be required to facilitate the process.

To assist us, please provide the registrations in a CSV file formatted according to the following sample:

{% file src="/files/-MLN-En0eMnBe\_CFEaVD" %}
Sample registration import CSV
{% endfile %}

Ensure the CSV file is correctly formatted.

Once the CSV file is properly formatted, follow these steps to import it:

1. Navigate to **App admin > Forms**.
2. Select the desired form.
3. Go to **Form Settings**.
4. Click on **Import CSV**.
5. Upload the CSV file and proceed with the import.

## CSV Format Specifications

### Required Fields

Every CSV import must include these mandatory fields:

| Field                      | Description            | Example                  |
| -------------------------- | ---------------------- | ------------------------ |
| `productName`              | Name of the product    | "iPhone 15 Pro"          |
| `customerEmail` or `email` | Customer email address | "<customer@example.com>" |

### Standard Fields

The system supports these standard fields that map directly to database columns:

#### Product Information

* `productName` - Product name (required)
* `productId` - Shopify product ID
* `sku` - Product SKU
* `variantId` - Product variant ID

#### Customer Information

* `customerEmail` or `email` - Email address (required)
* `customerName` or `name` - Full customer name
* `firstName` - Customer first name
* `lastName` or `surname` - Customer last name
* `phone` - Phone number

#### Address Information

* `address1` - Primary address line
* `address2` - Secondary address line
* `city` - City
* `state` - State/Province
* `country` - Country
* `postCode` - Postal/ZIP code

#### Registration Details

* `serialNumber` or `serialNumbers` - Product serial numbers
* `purchaseDate` - Date of purchase
* `warrantyStartDate` - Warranty start date
* `warrantyEndDate` - Warranty end date
* `lastServiceDate` - Last service date
* `status` - Registration status
* `orderId` - Shopify order ID
* `orderNumber` - Order number

### Custom Fields

Any column not in the standard field list is automatically treated as a custom field.

**⚠️ Important Field Matching Behavior:**

* **Matching Existing Fields**: If a custom field name matches an existing field name in the form's field configuration, the imported value will populate that existing field
* **New Fields**: If the field name doesn't match any existing form field, a completely new custom field will be created
* **Field Name Matching**: Uses exact name matching (case-sensitive) to determine if it's updating an existing field or creating a new one

**Custom Field Format:**

* Column names can be arbitrary (e.g., `warrantyPeriod`, `storeLocation`)
* Values are stored as strings
