Import Members
Use Import Members when you need to add or update many members from a spreadsheet. The importer reads your active Member Types, Membership Plans, and enabled member fields, then validates each row before saving.
Add screenshots of the Import Members popup: upload area, sample template button, validation preview table, image ZIP upload, progress bar, and final import report.
Before You Start
Make sure these are ready:
- At least one active Member Type.
- At least one active Membership Plan.
- Libraries created in Library Manager.
- Organization date format checked in Organization > Date Time.
- Optional profile images collected in a ZIP file if you want to import images.
If Member Types or Membership Plans are missing, the import popup asks you to create them before continuing.
Download The Template
- Open Member Manager > Members.
- Click Import Members.
- Click Download Template beside Import guide.
The template is generated from your active member types and fields.
| Row | Purpose |
|---|---|
| Row 1 | Supported column headers. |
| Row 2 | Required/optional guidance. This row is ignored during import. |
| Row 3 | Example data. Replace it with your real data. |
Column order does not matter. Libcodesk detects columns by header names and supported aliases.
How Column Headers Are Matched
The first row is the header row. Libcodesk reads each header, normalizes it, and matches it to a supported field.
- Column order does not matter.
- Header matching is not case-sensitive.
- Spaces and underscores are handled where supported.
- Supported aliases are detected automatically, so
Photo,Image, andProfile Imagecan point to the same image field. - Extra unsupported columns are ignored safely.
- For custom/member-type fields, Libcodesk also matches the field label configured in Member Types.
Supported Header Keywords
These fixed import headers are available in every member import. Enabled fields from your Member Types are added on top of this list.
| System Field | Recommended Header | Also Detected As |
|---|---|---|
| Member Type Code | Member Type Code | member_type_code, type code, member type |
| Membership Plan Code | Membership Plan Code | membership_plan_code, plan code, membership plan, plan |
| Libraries | Libraries | library, library access |
| Status | Status | member status |
| Temporary Password | Temporary Password | password, temp password |
| Photo | Photo | image, profile image, profile photo, photo filename |
Common member fields also have built-in aliases:
| Member Field | Recommended Header | Also Detected As |
|---|---|---|
| Member ID | Member ID | member_id, library card number, card number |
| Name | Name | full name, member name |
| e-mail, mail | ||
| Phone | Phone | mobile, mobile number, contact number |
| Date of Birth | Date of Birth | dob, birth date |
| Profile Image | Profile Image | photo, image, profile photo |
For fields such as Student ID, Class/Grade, Academic Session, RFID Tag, or any custom field, use the exact label shown in Member Types. For example, a field named Student ID should use a clear matching header such as Student ID.
Required Columns
The exact field list depends on your Member Types. These columns are important in most imports:
| Column | Requirement |
|---|---|
| Member Type Code | Required. Matches the code of an active Member Type. |
| Membership Plan Code | Required. Matches the code of an active Membership Plan. |
| Member ID | Required unless auto-generation is enabled and the spreadsheet cell is blank. Spreadsheet value is always respected when provided. |
| Name | Required. |
| Required unless email auto-generation is enabled and the spreadsheet cell is blank. Spreadsheet value is always respected when provided. | |
| Libraries | Optional. Blank uses the selected plan's libraries. |
| Status | Optional. Blank becomes active. |
| Temporary Password | Required only when the selected Member Type has no default password. |
| Photo | Optional unless the Member Type makes profile image required. |
Supported Files
- CSV, XLSX, XLS, and ODS spreadsheets.
- Optional ZIP archive for profile images.
- Image files inside ZIP can be JPG, JPEG, PNG, or WEBP.
For multilingual names and addresses, Excel format is recommended because it handles Unicode and complex text more reliably.
Dates
Libcodesk reads the date columns across multiple rows and automatically detects the spreadsheet date format when the values make the format clear. For example, a file that contains both 13/05/2025 and 25/12/2025 can be understood as day/month/year even if some other rows are ambiguous.
If a date can be read in more than one valid way, such as 05/06/2025, and the surrounding rows do not make the format clear, Libcodesk asks you to confirm the spreadsheet date format once before building the preview.
Single-digit day or month values are accepted for the matching organization format. For example, if the organization format is d/m/Y, both 1/8/2001 and 01/08/2001 are valid.
After validation, Libcodesk keeps saved dates consistent for reports, renewals, and future searches. Avoid mixing different date formats inside one import file because that can make detection uncertain.
Member Type And Plan Matching
Use Member Type Code and Membership Plan Code in the spreadsheet. The importer can also recognize names in some places, but codes are safer because names may be similar.
If a code does not match an active record, that row is marked as an error before import.
Member ID And Email Auto-Generation
If the organization has auto-generation enabled:
- Spreadsheet value wins when the cell has a value.
- Auto-generation runs only when the cell is blank.
- A blank Member ID is accepted during validation and the ID is assigned when that row is imported.
- Generated Member ID and generated email must still be unique.
If Member ID auto-generation is disabled, every imported row must provide a Member ID.
This helps schools where students may not have real email addresses, while still allowing imported files to provide official IDs and emails when available.
Image Import
Profile images are optional unless the Member Type marks profile image as required.
- Put images in a ZIP file.
- Add the image filename in the spreadsheet
Photocolumn. - Upload the ZIP along with the spreadsheet.
Images can be inside nested folders. Libcodesk matches filenames case-insensitively. Missing optional images show warnings; required missing images block that row.
For very large photo collections, keep each image ZIP under about 2 GB when possible. This is a practical reliability recommendation, not a strict rule. Smaller ZIPs are easier to validate, retry, and review if a network, browser, device, or file problem occurs. If your member photos are larger than this, first import the member records, then use Batch Edit > Batch Image Update to upload photos in smaller ZIP batches.
Validate Before Importing
Click Validate after selecting the spreadsheet. The preview table shows:
- Actual spreadsheet row number.
- Status, placed near the row number for quick review.
- Photo preview or image warning.
- Member ID.
- Name.
- Email.
- Member Type.
- Membership Plan.
- Libraries.
- Status.
The preview table supports horizontal drag-scroll, so staff can hold and drag the table to inspect columns that are farther to the right. Pages with errors are marked in red, and a small red dot makes those pages easier to notice.
The preview summary separates total rows, valid rows, and rows needing attention. The table status stays compact:
| Status Chip | Meaning |
|---|---|
| OK | The row can be imported. |
| 1 Warning | The row can usually import, but optional data needs attention. |
| 2 Errors | The row must be fixed before it can import. |
Click an error or warning chip to open the row fixing popup.
Handling Import Errors
The safest import flow is validate, fix, retry, then import. Do not rush directly into importing a large file.
How To Read The Preview
| Preview Status | Meaning | What To Do |
|---|---|---|
| OK | The row passed the current validation checks. | Import can continue. |
| Warning | The row can usually be imported, but something optional needs attention. | Review the warning. Missing optional images are common warnings. |
| Error | The row cannot be imported until fixed. | Read the numbered error list, correct the spreadsheet, and validate again. |
If a row has more than one issue, Libcodesk shows them as a numbered list so you can fix them one by one.
Fix Row Issues In The Popup
Click the issue chip, such as 2 Errors, to open Fix Row Issues.
The popup shows:
- Actual spreadsheet row number.
- Original spreadsheet value.
- Current corrected value.
- The exact issue.
- A field-specific fix control.
Use Save inside the popup after changing a value. A fixed issue can be closed from the list so you can focus on the remaining issues. Closing the popup updates the preview table and the error page indicators.
Common fix controls include:
| Issue Type | Fix Control |
|---|---|
| Invalid Member Type Code | Searchable Member Type dropdown. |
| Invalid Membership Plan Code | Searchable Membership Plan dropdown. |
| Unknown Library | Library multi-select. |
| Missing Member ID | Manual entry or generate next Member ID when auto-generation is enabled. |
| Missing Email | Manual entry or generate local email when auto-generation is enabled. |
| Invalid Date | Date picker/text input using the organization date format. |
| Invalid Phone | Country-code phone input. |
| Invalid select value | Dropdown or multi-select using allowed options. |
| Missing/invalid image | Choose replacement image, capture from camera where available, select from ZIP, or ignore optional image. |
Use Fix similar rows when the same wrong value appears in many rows, such as one misspelled plan code or member type code. Libcodesk shows progress beside the fix so you can see how many similar rows were corrected.
For optional fields, the popup also supports targeted skipping:
| Action | What It Does |
|---|---|
| Skip row | Leaves the current spreadsheet row out of the import. |
| Skip this data | Clears the current optional field only for this row and validates the row again. |
| Skip this column | Clears the current optional field for all preview rows and validates the preview again. |
Required fields, such as Member Type Code, Membership Plan Code, and required member-type fields, cannot be skipped from the popup.
Row 2 Handling
The generated template uses Row 2 for required/optional guidance. Some users keep that row; others delete it and start real data from Row 2. Libcodesk treats Row 2 carefully so guidance text is not accidentally imported as a member record.
Common Errors And Fixes
| Error | Why It Happens | Fix |
|---|---|---|
| Member Type Code not found | The spreadsheet code does not match an active Member Type. | Check Member Manager > Member Types and use the exact code. |
| Membership Plan Code not found | The plan code is missing, inactive, or typed differently. | Check Membership Plans and use the exact active plan code. |
| Member ID is required | Member ID is blank and auto-generation is not enabled. | Fill Member ID or enable Member ID auto-generation. |
| Email is required | Email is blank and email auto-generation is not enabled. | Fill email or enable member email auto-generation. |
| Invalid email | The email format is not valid. | Use a valid email format or a configured local-style generated email. |
| Duplicate Member ID or Email | The value already exists or appears twice in the import file. | Keep each Member ID and email unique. |
| Invalid date format | Date does not match the organization date format. | Use the format shown in the import popup, such as 25/12/2025; single-digit day/month values like 1/8/2001 are also accepted when the format is d/m/Y. |
| Invalid option | The value does not match the allowed options for a select field. | Use one of the options configured in Member Types. |
| Unmatched library | A library name does not exist. | Correct the name or leave Libraries blank to use plan libraries. |
| Image missing | The Photo column names a file that is not in the ZIP. | Add the image to the ZIP or clear the Photo cell if image is optional. |
| Image invalid | The file is corrupted or unsupported. | Replace it with JPG, JPEG, PNG, or WEBP. |
Smooth Import Workflow
- Download a fresh template after changing Member Types or Membership Plans.
- Test with 5-10 rows first.
- Click Validate and review rows needing attention.
- Fix simple row issues inside the preview popup when possible.
- Use Fix similar rows for repeated mapping mistakes.
- Import valid rows.
- Click Download report after completion when you want to save the report.
- If some rows fail after upload, use the report to correct only those rows and import again.
Large Imports
For thousands of members:
- Use XLSX when possible.
- Keep image ZIP filenames simple and unique.
- If you have more than about 30,000 members, split the spreadsheet into multiple import batches where practical. This reduces the chance of browser, network, device, or file-size interruptions and makes reports easier to review.
- Import in manageable batches if the file is very large.
- Keep each image ZIP under about 2 GB when possible. If your images are larger than that, import the members first, then update profile images later with Batch Edit > Batch Image Update in smaller ZIP batches.
- Avoid huge image files; use clear profile photos and let Libcodesk optimize them.
- Keep the browser/app open until the progress and report are complete.
- In Cloud setup, large new-member imports upload in larger progress steps for speed, then save in smaller visible steps so the screen keeps updating.
- Update Existing Only and Create + Update still perform stricter matching checks because they must protect existing member records.
Import Modes
| Mode | What It Does |
|---|---|
| Create New Only | Adds rows that do not match an existing member. Existing member rows fail with a clear message. |
| Update Existing Only | Updates rows that match an existing member. New rows fail with a clear message. |
| Create + Update | Updates matching rows and creates non-matching rows. |
For update matching, Libcodesk uses the safest available record match first, then visible Member ID, then Email inside the same organization.
After Import
During import, the progress area shows saved, failed, rejected, remaining, elapsed time, rows per second, current phase, and ETA where available. The progress stays visible beside the action area so staff can see that work is continuing.
Large Cloud setup imports first show upload progress, then switch to validation and saving progress. Libcodesk keeps the upload stage fast for large files and updates the saving stage in smaller steps so staff can see steady progress. Saved, rejected, remaining, elapsed time, rows per second, and ETA are updated from the active import so the counters stay consistent.
The main progress bar counts both upload and saving work, so a file that has finished uploading will still continue progressing until the member records are saved.
While an import is active, Libcodesk shows the current phase, such as uploading, validating, saving, or updating visible row results. Keep the browser/app open until the final report appears.
When import finishes, Libcodesk shows the final result and a Download report action. The report is not saved automatically; click the button when you want to keep it.
In Cloud setup, unfinished import uploads are temporary. When an import finishes or is cancelled, Libcodesk keeps the final result/report available and clears temporary upload data automatically. If an upload is abandoned, old temporary data is also cleaned automatically. Profile images are saved only for members that are successfully created or updated.
Do And Don'ts
- Use the generated template instead of building a file from memory.
- Keep Member Type Code and Membership Plan Code accurate.
- Validate with a small file before importing thousands of rows.
- Keep image filenames unique inside the ZIP.
- Don't type country codes inside phone number cells when a dialing code column exists.
- Don't mix date formats in one file.
- Don't rely on column position; use clear supported headers.
- Don't ignore warnings when profile image is required by your Member Type.
FAQ
Can I import members without profile images?
Yes. Images are optional unless your Member Type marks profile image as required.
What happens if the spreadsheet has extra columns?
Unsupported columns are ignored. Valid recognized columns still import normally.
Can I update existing members using import?
Yes. Use Update Existing Only or Create + Update. Matching uses the safest available record match first, then Member ID, then email within the same organization.
What if a member has no real email address?
If email auto-generation is enabled and the email cell is blank, Libcodesk can generate a local-style login email. If the spreadsheet provides an email, that value is used.
Why did a valid preview row fail during upload?
Libcodesk performs final safety checks before saving. Common causes are a duplicate created after validation, an invalid date format, a changed Member Type, or a unique value already used by another member.