Bulk import β
When you're moving from another church management tool β or have a spreadsheet your secretary has been maintaining β bulk import is the right tool. It handles thousands of rows, surfaces errors per-row, and detects likely duplicates before they land in your database.
1. Prepare your CSV β
Export your data to a CSV file (UTF-8 encoded, comma-separated). You can use Excel's Save As β CSV UTF-8 or Google Sheets' Download β CSV.
Recommended columns:
| Column | Required | Notes |
|---|---|---|
first_names | yes | Given names |
last_names | yes | Family names |
email | β | Lowercase, no spaces |
primary_phone | β | E.164 format preferred (e.g. +18761234567) |
date_of_birth | β | ISO format YYYY-MM-DD |
gender | β | male / female / other |
country | β | Two-letter code (JM, US, GB) |
date_of_registration | β | Defaults to import date if blank |
member_type | β | Must match an existing member type label |
org_unit | β | Must match an existing unit name |
You can include any columns you like β extras are ignored or mapped to custom fields in the next step.
TIP
Open your file in a text editor before uploading. Spreadsheet apps sometimes mangle dates or phone numbers (turning +1876... into scientific notation). Reformat those columns to plain text.
2. Upload the file β
Go to Members β Bulk import. Drag the CSV in, or click to browse. GCM reads the header row and shows the first few rows as a preview.

3. Map columns β
The mapper shows your CSV columns on the left and the matching GCM fields on the right. We auto-match by name β first_names, email, dob all snap into place automatically.
For columns we don't recognize, you choose:
- Map to existing field β picks from any standard or custom field.
- Create custom field β adds a new custom field on the fly. Good for "spiritual gifts" or "baptismal date" that you haven't set up yet.
- Ignore β for columns you don't want to bring across (internal IDs, source-system notes).
WARNING
Mapping is per-import. If you run a second import, you'll set the mapping again. Save your prepared CSV template so the column names match each time.
4. Duplicate detection β
Before we commit anything, GCM scans your file against your existing members. We flag:
- Exact name + email matches.
- Exact name + phone matches.
- Fuzzy name matches inside the same org unit.
For each match you choose:
- Skip β leave the existing record alone, drop the row.
- Update β merge the CSV data into the existing record (non-empty CSV values win).
- Create anyway β useful when two real people share a name.
5. Review and import β
The final screen shows totals: how many will be created, updated, skipped, and how many had errors.
Click the import button. The job runs server-side and shows live progress. Most imports of 500 rows complete in under a minute.
When it finishes, you get a downloadable error report listing any rows that failed and why (bad date format, missing required field, unit not found, etc.). Fix those rows and re-upload β the duplicate detector will skip the rows that already imported successfully.
6. After import β
Visit Members and you'll see the new records. Now is a good time to:
- Run the duplicate scanner to catch anything the per-row check missed.
- Open a sample of profiles to confirm photos, custom fields, and unit assignments look right.
- Trigger a "welcome to GCM" workflow if you want everyone to get a notification.
Common questions β
What's the maximum file size? 50,000 rows or 25 MB, whichever is lower. Larger imports β split into chunks.
Can I import attendance or giving at the same time? No. Bulk member import only handles member records and their direct fields. Attendance and giving have their own importers with stricter validation.
Does this trigger workflows? By default no β bulk imports skip the member.created trigger to avoid spamming everyone with welcome messages mid-migration. There's a checkbox on the final review screen if you actually want triggers to fire.
What if I imported the wrong file? Open the Settings β Data & Logs page and find the import in the history. You can roll it back, which soft-deletes every member created by that batch. Soft-deleted members are restorable for 30 days.
Next steps β
- Custom fields β define the structure before your second import.
- Merging duplicates β clean up after a messy import.