Bulk Import
Bulk Import lets you import large amounts of data from a spreadsheet in one step — instead of adding each record manually.
Who Can Use Bulk Import?
| Role | Access |
|---|---|
| Admin | ✅ Yes |
| Director (custom role) | ✅ Yes |
| Staff / Member | ❌ No |
Opening Bulk Import
Click Bulk Upload in the sidebar (near the bottom), or go to /bulk-upload.
What Can You Import?
Use the Import Type dropdown to choose what you're importing:
| Type | What it adds |
|---|---|
| Members | Individual people to the directory |
| Families | Household groups |
| Transactions | Financial records |
| Events | Calendar events |
How to Import
Step 1 — Download the Template
Click Download Template to get a CSV file pre-formatted with the correct column headers for your chosen import type. Open it in Excel, Google Sheets, or any spreadsheet app.
Step 2 — Fill in Your Data
Add your data to the template. Each row is one record. Follow the column reference at the bottom of the import page for formatting rules.
Step 3 — Paste Your Data
You have two options:
Option A — Paste from Clipboard:
- Select all your data in the spreadsheet (including headers), copy it.
- Click anywhere in the import grid and paste (Ctrl+V / Cmd+V).
- The grid fills automatically.
Option B — Type directly: Use the live grid on the page — click any cell to type in it directly.
Step 4 — Review
Look over the data in the grid. Required fields are highlighted if they're missing.
- Click Add Row to add an empty row at the bottom.
- Click the × on any row to remove it.
Step 5 — Submit
Click Import to send the data. A summary shows how many records were created and if any rows had errors.
Column Reference by Import Type
Members
| Column | Required | Notes |
|---|---|---|
firstName |
✅ | First name |
lastName |
✅ | Last name |
email |
Email address | |
phone |
Phone number | |
birthday |
Format: MM-DD-YYYY | |
familyName |
Creates family if it doesn't exist | |
status |
active (default), inactive |
Families
| Column | Required | Notes |
|---|---|---|
name |
✅ | Family name (e.g. "Smith Family") |
status |
active (default), inactive |
Transactions
| Column | Required | Notes |
|---|---|---|
date |
✅ | Format: MM-DD-YYYY |
type |
✅ | income or expense |
amount |
✅ | Number (e.g. 125.00) |
description |
✅ | What the transaction is for |
fund |
Fund name — must already exist | |
category |
Transaction category | |
paymentMethod |
cash, check, card, ach | |
payeeName |
Payee for expenses | |
status |
settled (default), pending | |
notes |
Additional notes |
Events
| Column | Required | Notes |
|---|---|---|
name |
✅ | Event name |
startDate |
✅ | Format: MM-DD-YYYY |
startTime |
✅ | 12h format (e.g. 10:00 AM) |
endDate |
✅ | Format: MM-DD-YYYY |
endTime |
✅ | 12h format |
locationName |
Venue name | |
locationAddress |
Venue address | |
description |
Event description | |
category |
Event category | |
isPublic |
true or false | |
registrationEnabled |
true or false | |
capacity |
Max attendees (blank = unlimited) |
Tips for Clean Imports
- Dates must be MM-DD-YYYY — not YYYY-MM-DD or DD/MM/YYYY.
- Emails for members — if an email matches an existing app account, the member will be automatically linked to that account.
- Duplicate members — if a member with the same email already exists, their record is updated, not duplicated.
- Fund names in transactions must match an existing fund exactly.
- Remove blank rows — empty rows at the bottom of your spreadsheet will cause errors.
Frequently Asked Questions
Why does pasting not work? Make sure you're copying from a spreadsheet (Excel, Google Sheets) — the paste feature detects tab-separated values. Don't paste from plain text or a PDF.
An error says "required field missing" but I filled it in. Column headers are case-sensitive. Use the downloaded template to ensure the column names match exactly.
I imported members but they don't appear in the directory. Check the Status filter — it defaults to "Active." If you imported with status "inactive," switch the filter.
Can I undo an import? Not automatically. Review the data carefully in the grid before clicking Import. If you need to undo, you'll have to delete the records manually.