Importing Members
Import members in bulk via CSV upload or the API — format your file, handle duplicates, and troubleshoot errors.
Importing Members
Need to add many members at once? The CSV import lets you bulk-create or update members from a spreadsheet, including their contact info, labels, notification preferences, and form data.
CSV Import (UI)
- Go to People → Members
- Click the Import button
- Select your CSV file
- Choose a role for any newly created members
- Review the import preview
- Click Confirm to import
CSV Format
Your file must be a standard CSV with headers in the first row. At minimum, each row needs one of: email, phone, or external_id.
csv
Column Reference
| Column | Required | Format |
|---|---|---|
email | One of email, phone, or external_id | Valid email address |
phone | One of email, phone, or external_id | E.164 format (e.g. +15551234567) |
external_id | One of email, phone, or external_id | Your system's user ID |
name | No | Free text |
date_of_birth | No | Date in YYYY-MM-DD format |
description | No | Free text |
labels | No | Comma-separated slugs; quote the cell if it contains commas (e.g. "vip,premium") |
notify_email | No | true/false or 1/0 |
notify_sms | No | true/false or 1/0 |
notify_voice | No | true/false or 1/0 |
form.{type}.{field} | No | Dot-notation for form data (see below) |
Including Form Data
To populate form records during import, add columns using dot notation: form.{data_type_slug}.{field_slug}.
csv
The data type and field slugs must match what's configured in your workspace under Knowledge → Forms.
Limits
- Maximum 10,000 rows per import
- Maximum 10 MB file size
Bulk Import via API
For automated or recurring imports, use the API endpoint directly:
bash
The API streams progress as NDJSON so you can track large imports:
json
To find the newMemberRoleId, list your roles at GET /api/v2/w/{workspace_uuid}/member-roles or check People → Roles in the admin.
For creating individual members with associated data records in one call, see the Importing Members developer guide which covers the /create-signup endpoint.
Duplicates and Update-vs-Create
The import matches existing members by email or phone number:
- New member — If no match is found, a new member is created with the role you selected
- Existing member — If a match is found, the member's fields are updated with the values from the CSV (blank cells are skipped, not cleared)
- Role preserved — Existing members keep their current role; the selected role only applies to new members
This means you can safely re-import the same file after making edits — existing members get updated, and new rows create new members.
Using External IDs
If your members originate from another system (CRM, EHR, etc.), populate the external_id column with your system's user ID. This makes it easy to:
- Look up members by your system's ID via the API
- Keep members in sync across repeated imports
- Track which members correspond to records in your other systems
Validation Errors and Troubleshooting
Common Errors
| Error | Cause | Fix |
|---|---|---|
| "Invalid email format" | Malformed email address | Check for typos, extra spaces, or missing @ |
| "Invalid phone format" | Phone not in E.164 format | Use full international format: +15551234567 |
| "No identifier provided" | Row has no email, phone, or external_id | Add at least one identifier column |
| "Unknown label" | Label slug doesn't exist in workspace | Create the label first in Knowledge → Labels, or fix the slug |
| "Unknown form field" | form.x.y references a non-existent data type or field | Check your data type and field slugs in Knowledge → Forms |
Tips
- Check your encoding — Save CSV files as UTF-8 to avoid garbled characters
- Trim whitespace — Leading/trailing spaces in emails or phone numbers cause validation failures
- Preview first — The import UI shows a preview before committing; review it for unexpected data in the wrong columns
- Export then edit — If updating existing members, export your current member list first (
GET /api/v2/w/{workspace_uuid}/members/export), edit the CSV, then re-import
Best Practices
- Start small — Test with 5-10 rows before importing thousands
- Use external IDs — They make re-imports and API lookups much easier
- Use ISO dates —
date_of_birthmust beYYYY-MM-DD - Normalize phone numbers — Always use E.164 format (
+followed by country code and number, no spaces or dashes) - Create labels first — Set up any labels you reference in the CSV before importing
- Set up forms first — If including form data columns, make sure the data types and fields exist in your workspace
- Keep a backup — Save your original CSV before editing, in case you need to start over
Related Resources
Members
Add, invite, and manage the humans in your workspace — team and customers alike.
Anonymous & Test Members
Manage unknown callers and sandbox accounts — review the anonymous queue, resolve to real members, expire stale entries, and create test members.
Roles & Permissions
How member roles and permission scopes control access to workspace features and data.
All Guides
Browse all available guides