Bulk Import Credentials from CSV

Import hundreds of credentials at once using a CSV file — much faster than creating them one by one.

Bulk CSV credential import dialog in CertLister

Bulk Import Credentials from CSV


Overview

Import hundreds of credentials at once using a CSV file. Much faster than creating credentials one at a time.

Time savings: Import 100 credentials in 5 minutes (vs. 5+ hours manually)

Skill level: Basic (Excel/Google Sheets knowledge required)


When to Use Bulk Import

Ideal Scenarios

  • Migrating from another system - Have existing credential data
  • After group training - 20+ students completed the same course
  • Historical credentials - Adding past credentials to your system
  • Recurring certifications - Annual renewals for many people
  • Large events - Conferences, workshops with many participants

When NOT to Use Bulk Import

  • Single credentials - Faster to create manually
  • Under 10 credentials - Not worth setting up CSV
  • Complex customization - Each credential needs unique details
  • First time user - Create a few manually first to understand the process

Before You Start

Requirements

You'll need:

  • Credential data in Excel, Google Sheets, or CSV format
  • Basic spreadsheet skills
  • 30-60 minutes to prepare your data

Available on:

  • Basic plan
  • Pro plan (unlimited credentials)

Data Quality Check

Before importing, verify:

  • All names are spelled correctly
  • Dates are in correct format
  • Category names match your existing categories
  • No duplicate entries
  • No blank required fields

Tip: Start with a small test batch (5-10 credentials) before importing hundreds.


CSV File Format

Required Columns (8 Total)

Your CSV must have these 8 columns in exact order:

#Column NameDescriptionRequired?Example
1Credential NumberUnique ID (leave blank for new credentials)OptionalCERT-2025-001
2TitleWhat they completedRequiredCPR Certification
3Recipient NameFull name of personRequiredSarah Johnson
4Recipient EmailEmail addressOptionalsarah@email.com
5Issue DateWhen issued (YYYY-MM-DD)Required2025-01-15
6Expiry DateWhen it expires (YYYY-MM-DD)Optional2027-01-15
7StatusCredential statusOptionalactive
8CategoryCredential categoryOptionalSafety Training

Important: All 8 columns must be present, even if some cells are empty.


Column Details

1. Credential Number

  • When to use: Updating existing credentials
  • For new credentials: Leave blank (system generates automatically)
  • Format: Any unique string (e.g., CERT-2025-001)
  • Example: If you have existing credentials and want to update data, include their credential numbers

2. Title (Required)

  • What it is: The certification name or achievement
  • Examples: "CPR Certification", "First Aid Training", "Food Safety Handler"
  • Tips: Be specific and consistent with naming

3. Recipient Name (Required)

  • Format: Full name (first and last)
  • Examples: "Sarah Johnson", "Dr. Michael Chen", "Emily Rodriguez"
  • Tips: Check spelling carefully - this appears on the credential

4. Recipient Email (Optional)

  • Format: Valid email address
  • Examples: "sarah@email.com", "mchen@company.com"
  • Used for: Future communication, notifications
  • Can be blank: Yes

5. Issue Date (Required)

  • Format: YYYY-MM-DD (strict format)
  • Examples: "2025-01-15", "2024-12-31"
  • Invalid: "01/15/2025", "January 15 2025"

6. Expiry Date (Optional)

  • Format: YYYY-MM-DD (same as issue date)
  • Examples: "2027-01-15", "2026-06-30"
  • Can be blank: Yes (credential never expires)
  • Validation: Must be after issue date

7. Status (Optional)

  • Valid values:
    • active - Credential is valid
    • expired - Credential has expired
    • revoked - Credential was revoked
  • Default if blank: active
  • Case-insensitive: "Active", "ACTIVE", "active" all work

8. Category (Optional)

  • Format: Category name (must match existing categories)
  • Examples: "Safety Training", "Compliance", "Professional Development"
  • If category doesn't exist: See "Category Handling" section below
  • Can be blank: Yes (credential will be uncategorized)

Example CSV File

Correct format (all 8 columns):

Credential Number,Title,Recipient Name,Recipient Email,Issue Date,Expiry Date,Status,Category
,CPR Certification,Sarah Johnson,sarah@email.com,2025-01-15,2027-01-15,active,Safety Training
,First Aid Training,Michael Chen,mchen@company.com,2025-01-15,2028-01-15,active,Safety Training
,Food Safety Handler,Emily Rodriguez,emily@school.edu,2025-01-10,2026-01-10,active,Compliance
CERT-2024-789,OSHA 10-Hour,David Kim,,2025-01-12,,,Safety Training
,CPR Certification,Maria Garcia,,2025-01-15,2027-01-15,active,Safety Training

Notes on this example:

  • First 3 rows: New credentials (blank Credential Number)
  • Row 4: Updating existing credential CERT-2024-789
  • Row 4: No email, no expiry date, no status (defaults to active)
  • Row 5: No email provided

Step-by-Step Guide

Step 1: Prepare Your Data in Excel/Google Sheets

1. Open your spreadsheet program

  • Excel, Google Sheets, or LibreOffice Calc

2. Create column headers (exact order and spelling matter):

  1. Credential Number
  2. Title
  3. Recipient Name
  4. Recipient Email
  5. Issue Date
  6. Expiry Date
  7. Status
  8. Category

3. Add your data row by row


Step 2: Format Dates Correctly

Critical: Dates must be in YYYY-MM-DD format.

Correct:

  • 2025-01-15
  • 2024-12-31
  • 2026-06-01

Incorrect (will cause errors):

  • 01/15/2025 (wrong format)
  • January 15, 2025 (wrong format)
  • 15-01-2025 (wrong order)

How to format in Excel:

  1. Select date columns
  2. Right-click → Format Cells
  3. Choose "Custom"
  4. Enter format: yyyy-mm-dd
  5. Click OK

Step 3: Verify Category Names

Important: Category names in your CSV must exactly match existing categories in CertLister.

Check your categories:

  1. Log into CertLister
  2. Go to Categories page
  3. Note exact spelling (including capitalization)

Example:

  • Correct: "Safety Training"
  • Wrong: "safety training" (lowercase)
  • Wrong: "Safety Trainings" (extra s)

New categories:

  • If a category doesn't exist, CertLister will prompt you to choose an action
  • See "Category Handling Dialog" section below for details

Step 4: Save as CSV

In Excel:

  1. Click File → Save As
  2. Choose file type: CSV (Comma delimited) (*.csv)
  3. Name your file (e.g., "credentials_jan2025.csv")
  4. Click Save
  5. If Excel warns about features, click Yes (CSV format is correct)

In Google Sheets:

  1. Click File → Download → Comma Separated Values (.csv)
  2. File downloads to your computer

Step 5: Upload to CertLister

1. Go to Credentials Page

  • Click Credentials in the left navigation

2. Click "Import Credentials"

  • Look for "Import" or "+ Import Credentials" button (top right)

3. Upload Your CSV File

  • Click "Choose File" or "Upload CSV"
  • Select your CSV file
  • Click "Open"

Step 6: Review and Validate

CertLister will check your file for:

  • Correct column names
  • Required fields present
  • Date format valid
  • No duplicates
  • Category names (warnings if new)

You'll see a summary:

  • X credentials ready to import
  • Y errors found (if any)
  • Z warnings (if any)

Step 7: Fix Errors (if any)

Common errors:

Error: "Missing required field: recipient_name"

  • Problem: Some rows have blank names
  • Solution: Fill in all names or remove blank rows

Error: "Invalid date format in row 15"

  • Problem: Date not in YYYY-MM-DD format
  • Solution: Fix date format, re-save CSV, re-upload

Error: "Column 'recipient_name' not found"

  • Problem: Column header misspelled
  • Solution: Check exact spelling (no extra spaces, correct case)

To fix:

  1. Click "Cancel" or "Go Back"
  2. Open your CSV file
  3. Fix the errors
  4. Save again
  5. Re-upload

Step 8: Confirm Import

If validation passes:

  1. Review the summary one more time
  2. Check "Create X credentials" count
  3. Click "Import Credentials" or "Confirm Import"

Processing time:

  • 10 credentials: ~5 seconds
  • 100 credentials: ~30 seconds
  • 500 credentials: ~2 minutes

Step 9: Verify Success

After import completes, you'll see:

  • Success message: "X credentials imported successfully"
  • Summary: How many created, any skipped
  • Option to view imported credentials

Next steps:

  1. Click "View Credentials" or go to Credentials page
  2. Filter by category to see your imported credentials
  3. Spot-check a few for accuracy
  4. Download a few PDFs to verify they look correct

Category Handling Dialog

What happens when your CSV includes categories that don't exist in CertLister?

After uploading your CSV, if CertLister finds category names that don't match existing categories, you'll see a dialog with options:

Missing Categories Detected

The dialog shows:

  • List of category names found in your CSV that don't exist
  • Number of credentials affected by each missing category

Example:

Missing categories found in your import:
- "Safety Training" (25 credentials)
- "First Aid" (12 credentials)
- "CPR Courses" (8 credentials)

Choose how to handle missing categories:

Choose this if:

  • Category names are correct and intentional
  • You want to organize credentials properly
  • The categories make sense for your organization

What happens:

  • CertLister automatically creates the missing categories
  • Credentials are assigned to the new categories
  • You can edit category details later

Example: You're importing from a previous system and want to keep the same category structure.


Option 2: Assign to "Unassigned" Category

Choose this if:

  • You're not sure about category names yet
  • You want to categorize credentials manually later
  • You need to complete the import quickly

What happens:

  • All credentials with missing categories are assigned to "Unassigned" category
  • "Unassigned" category is created if it doesn't exist
  • You can recategorize credentials later from the Credentials page

Option 3: Skip Credentials with Missing Categories

Choose this if:

  • Category names are incorrect (typos)
  • You need to fix the CSV first
  • You only want to import credentials with valid categories

What happens:

  • Credentials with missing categories are not imported
  • Other credentials with valid categories are imported
  • You'll see a summary of skipped credentials

Next step: Fix category names in your CSV and import again


How to Respond to the Dialog

  1. Review the list of missing categories
  2. Check for typos (e.g., "Safety Training" vs "Safety Trainings")
  3. Choose an option:
    • Click "Create Categories" (Option 1)
    • Click "Assign to Unassigned" (Option 2)
    • Click "Skip These Credentials" (Option 3)
  4. Proceed with import

Update Confirmation Dialog

What happens when your CSV contains credential numbers that already exist but with different data?

CertLister detects duplicates by credential number. If it finds existing credentials with different data, you'll see a confirmation dialog:

Duplicate Credentials Detected

The dialog shows:

  • List of credential numbers that already exist
  • Which fields have changed (highlighted)
  • Number of credentials that will be updated

Example:

The following credentials already exist with different data:

Credential: CERT-2024-123
- Existing: Sarah Johnson | CPR Certification | Expires: 2026-01-15
- New:      Sarah Johnson | CPR Certification | Expires: 2027-01-15
- Changes: Expiry date updated

Credential: CERT-2024-456
- Existing: Michael Chen | First Aid | Active
- New:      Michael Chen | Advanced First Aid | Active
- Changes: Title updated

5 credentials will be updated. Continue?

Your Options

Choose this if:

  • You want to update credential data
  • The new data is more accurate
  • You're correcting errors or extending expiration dates

What happens:

  • Existing credentials are updated with new data
  • PDF URLs and other metadata remain the same
  • Update is logged in activity history

Click: "Update Credentials" button


Option B: Skip Duplicates

Choose this if:

  • You don't want to modify existing credentials
  • You only want to import truly new credentials
  • You're not sure if updates are correct

What happens:

  • Credentials with matching numbers are skipped
  • Only new credentials (without credential numbers) are imported
  • Original data remains unchanged

Click: "Skip Duplicates" button


Option C: Cancel Import

Choose this if:

  • You need to review the CSV first
  • There are too many unexpected duplicates
  • You want to investigate before proceeding

What happens:

  • Import is canceled
  • No changes are made
  • You can fix your CSV and try again

Click: "Cancel" button


Best Practice

Before importing updates:

  1. Export existing credentials as CSV
  2. Compare with your import file
  3. Verify changes are intentional
  4. Proceed with update

Batch Processing

CertLister processes imports in batches for reliability and performance.

How It Works

Batch size: 50 credentials per batch

Example: If you import 250 credentials:

  • Batch 1: Credentials 1-50 (20 seconds)
  • Batch 2: Credentials 51-100 (20 seconds)
  • Batch 3: Credentials 101-150 (20 seconds)
  • Batch 4: Credentials 151-200 (20 seconds)
  • Batch 5: Credentials 201-250 (20 seconds)
  • Total time: ~2 minutes

You'll see:

  • Progress bar showing batch progress
  • "Processing batch 2 of 5..." status message
  • Percentage complete

Why Batches?

Benefits:

  • Reliability: If one batch fails, others still succeed
  • Progress tracking: See real-time progress
  • Error isolation: Easier to identify which credentials had issues
  • Performance: Prevents server timeouts on large imports

Recommended batch sizes:

  • Small: 10-50 credentials (test imports)
  • Medium: 50-200 credentials (normal use)
  • Large: 200-500 credentials (bulk migration)
  • Very large: 500+ (split into multiple CSV files)

Advanced Tips

Tip 1: Import in Batches

Don't import all at once if you have 500+ credentials

Instead:

  • Batch 1: 100 credentials (test)
  • Review for accuracy
  • Batch 2: 200 credentials
  • Batch 3: Remaining credentials

Why: Easier to fix errors, less risk if something goes wrong


Tip 2: Use Templates

Save time with a template CSV:

  1. Do your first import
  2. Save the CSV file as a template
  3. For future imports:
    • Copy the template
    • Replace data, keep headers
    • Import

Template file: credential_import_template.csv


Tip 3: Calculate Expiration Dates

Excel formula for automatic expiration dates:

For 2-year certifications (CPR example):

=DATE(YEAR(D2)+2, MONTH(D2), DAY(D2))

Where D2 is the issue_date cell.

Example:

  • Issue date (D2): 2025-01-15
  • Formula result: 2027-01-15

Apply to entire column:

  1. Enter formula in first cell
  2. Drag down to copy

Tip 4: Remove Duplicates Before Importing

In Excel:

  1. Select your data
  2. Go to Data → Remove Duplicates
  3. Choose columns to check (e.g., recipient_name + title)
  4. Click OK

In Google Sheets:

  1. Select your data
  2. Go to Data → Data cleanup → Remove duplicates
  3. Choose columns
  4. Click Remove duplicates

Tip 5: Use Conditional Formatting

Color-code your data for easier review:

In Excel:

  1. Select date columns
  2. Go to Home → Conditional Formatting
  3. Create rule: "Dates before today" = Red (already expired)
  4. Create rule: "Dates in next 30 days" = Yellow (expiring soon)

Helps you catch data entry errors before importing.


Troubleshooting

Import button is grayed out

Problem: Can't click the Import button.

Reasons:

  1. Plan limit reached - Bulk import requires Basic or Pro plan
  2. Permission issue - User role may not allow imports
  3. System maintenance - Rare, check CertLister status

Solutions:

  • Check your plan (Settings → Billing) — bulk import is available on Basic and Pro plans
  • Upgrade if you are on the Free plan
  • Verify your user role (Admin or Manager needed)

"Credential limit exceeded"

Problem: Import would exceed your plan limit.

Solutions:

  • Delete old/test credentials to free up space
  • Import fewer credentials (in batches)
  • Upgrade to Pro (unlimited)

"Duplicate credential found"

Problem: Credential already exists in your database.

Detection: CertLister checks for duplicates based on:

  • Recipient name + credential title + issue date

What happens:

  • Duplicate rows are skipped (not imported)
  • You'll see which ones were skipped

Solutions:

  • Remove duplicates from your CSV
  • Check if credentials were already imported
  • Adjust data to make unique (e.g., different issue dates if legitimately separate)

Some rows skipped

Problem: Import summary shows "X skipped."

Common reasons:

  • Duplicate credentials
  • Missing required fields
  • Invalid dates
  • Category name issues

How to see which:

  • Download the "skipped rows report" (button appears after import)
  • CSV file shows which rows failed and why
  • Fix errors and re-import just those rows

Dates imported incorrectly

Problem: Dates show wrong (e.g., 2025-01-15 became 1/15/2025).

This is display only - Data is stored correctly.

To fix display:

  • This is how your browser/system shows dates
  • The actual data is correct in database
  • PDFs will show correctly formatted dates

Categories not matching

Problem: Some credentials imported but not in the category you expected.

Reasons:

  • Typo in Category column
  • Extra spaces (" Safety Training " vs "Safety Training")
  • Wrong capitalization

Solution:

  1. Go to Credentials page
  2. Filter by category "Uncategorized" or the wrong category
  3. Bulk edit to move to correct category
  4. Or delete the batch and re-import with correct category names

CSV file won't open in CertLister

Problem: Upload fails or shows error.

Solutions:

  1. Check file size - Very large files (10,000+ rows) may timeout

    • Split into smaller files
    • Import in batches of 500-1000
  2. Check encoding - Save as UTF-8

    • Excel: Save As → More Options → UTF-8
    • Google Sheets: Already UTF-8
  3. Check for special characters - Remove emojis, unusual symbols

    • Replace curly quotes with straight quotes
    • Remove em-dashes
  4. Try a different browser - Chrome/Firefox work best


Import Limits

File Size Limits

  • Maximum file size: 10 MB
  • Maximum rows: 5,000 credentials per import
  • For larger imports: Split into multiple files

Import Frequency

  • No daily limits - Import as often as needed
  • Recommended: Wait 30 seconds between large imports to avoid system load

Plan Limits

Basic Plan:

  • Total credentials: Up to plan limit
  • Imports allowed: Yes
  • Max per import: 5,000 per file

Pro Plan:

  • Total credentials: Unlimited
  • Imports allowed: Yes
  • Max per import: 5,000 per file

After Importing

Step 1: Quality Check

Spot-check 5-10 random credentials:

  1. Open credential details
  2. Verify name, title, dates are correct
  3. Download PDF and review

If errors found:

  • Edit individual credentials
  • Or delete the batch and re-import with corrections

Step 2: Generate PDFs (if needed)

Bulk import creates database records but may not immediately generate PDFs.

To generate PDFs:

  • PDFs are created on-demand when you first view/download
  • Or use the Credentials page to select all imported credentials and use the bulk "Generate PDFs" action

Step 3: Organize with Categories

After import:

  1. Review category distribution (Dashboard or Categories page)
  2. Merge categories if you created duplicates
  3. Rename categories for consistency

Examples

Example 1: After Group CPR Training

Scenario: 30 employees completed CPR training on January 15, 2025. Credentials expire in 2 years.

CSV:

Credential Number,Title,Recipient Name,Recipient Email,Issue Date,Expiry Date,Status,Category
,CPR Certification,John Smith,,2025-01-15,2027-01-15,active,Safety Training
,CPR Certification,Sarah Johnson,,2025-01-15,2027-01-15,active,Safety Training
,CPR Certification,Michael Chen,,2025-01-15,2027-01-15,active,Safety Training

Result: 30 credentials created in ~10 seconds.


Example 2: Migrating Historical Data

Scenario: Moving 500 credentials from old Excel spreadsheet to CertLister.

Steps:

  1. Clean up Excel data (remove blank rows, fix dates)
  2. Add column headers to match CertLister format
  3. Save as CSV
  4. Test import with first 50 credentials
  5. Review for accuracy
  6. Import remaining 450 in batches of 100

Time: 1-2 hours (vs. 40+ hours creating manually)


Example 3: Annual Renewals

Scenario: 100 people renewing Food Safety certification annually.

Process:

  1. Export last year's credentials
  2. Update issue dates (new year)
  3. Update expiration dates (new year + 1)
  4. Import as new credentials

Best Practices

Do

  • Test first - Import 5-10 credentials as a test batch
  • Use templates - Save a working CSV as a template
  • Validate dates - Double-check date format
  • Back up - Keep original CSV files
  • Document - Note what each import was for

Don't

  • Rush - Take time to prepare data correctly
  • Skip validation - Always review before confirming
  • Import duplicates - Check for existing credentials first
  • Use complex formatting - Keep CSV simple (no formulas, colors, etc.)
  • Assume - Verify categories, dates, and names

Data Cleanup Checklist

Before importing, review your data:

  • All required columns present and spelled correctly
  • No blank rows (delete empty rows at bottom)
  • Dates in YYYY-MM-DD format
  • Names capitalized consistently
  • Credential titles standardized
  • Categories match existing ones (or intentional new ones)
  • No extra spaces before/after text
  • No special characters or emojis
  • File saved as CSV (not .xlsx)
  • File under 10 MB

Next Steps

1. Practice with Small Test

Before big import:

  • Create a CSV with 5 test credentials
  • Import them
  • Review results
  • Delete test credentials
  • Now import your real data

2. Set Up Bulk Operations

Learn other bulk features:

  • Bulk delete
  • Bulk export
  • Bulk category updates
  • Bulk PDF generation

Still need help?

We respond to every message within 24 hours.