---
title: "Import Ultimate Member users from CSV"
date: 2026-08-06
modified: 2026-08-06
author: "userelements_wh8sr3"
url: "https://www.userelements.com/import-ultimate-member-users-from-csv/"
markdown_url: "https://www.userelements.com/import-ultimate-member-users-from-csv.md"
type: post
excerpt: "Upsert means: if the email already exists, update that member; if not, create a new one. Both Free and Pro […]"
categories:
  - "Ultimate Member"
---
**Upsert** means: if the email already exists, update that member; if not, create a new one. Both Free and Pro support importing a UTF-8 CSV matched by email. **Free is enough** for small imports (≤500 rows). Use Pro for large files, update-only, or safer per-field rules.

## Prepare your CSV

- UTF-8 encoding with a header row
- Include an **email** column (required for match-by-email)
- Add columns you want to set: first\_name, last\_name, role, account\_status, custom UM meta keys, etc.
- Files exported from UM Export usually auto-map on import

## Import steps

### Free

1. Go to **Ultimate Member → Import**.
2. Step 1: upload CSV → mode = **Create or update (upsert)** → match = **Email**.
3. Step 2: confirm column mapping (auto-map, then fix any misses). Email must be mapped.
4. Step 3: dry-run preview → enable **On update, skip blank CSV cells** (recommended) → Run import.

### Pro

1. Go to **UM Export → Import**.
2. Same 3 steps; optionally load an import preset.
3. For 50+ rows, prefer **Run in background**.
4. Optional: suppress new-user notification emails; set role strategy (replace vs add).

> **📸 Screenshot**  
> Upload step with Upsert + Email selected, then mapping table with Email mapped.

## After import

Review Created / Updated / Skipped counts. On Free, split large spreadsheets into ≤500-row files. On Pro, use background import and check import history.

Plugin: [Ultimate Member Export](https://www.userelements.com/ultimate-member-export)
