Importing contacts from CSV files is the fastest way to add your audience to Waflow. This guide covers file preparation, the import process, column mapping, validation, and error handling.
Preparing Your CSV File#
Required Format#
Your CSV file must meet these requirements:
| Requirement | Details |
|---|---|
| File type | CSV (Comma-Separated Values) |
| Encoding | UTF-8 (recommended) or UTF-16 |
| Size limit | 10 MB per file (up to 100,000 rows) |
| Header row | First row must contain column names |
| Phone column | Required - contains phone numbers |
Phone Number Format#
Phone numbers must include the country code:
| Format | Valid? | Notes |
|---|---|---|
| +14155551234 | Yes | Recommended format |
| 14155551234 | Yes | Will add + automatically |
| +1 415 555 1234 | Yes | Spaces removed automatically |
| +1-415-555-1234 | Yes | Dashes removed automatically |
| (415) 555-1234 | No | Missing country code |
| 4155551234 | No | Missing country code |
Tip Always include the country code to avoid ambiguity. "4155551234" could be a US number or part of another country's number.
Sample CSV File#
Here's an example of a properly formatted CSV:
phone,first_name,last_name,email,company,purchase_date,customer_type
+14155551234,John,Doe,[email protected],Acme Corp,2024-01-15,vip
+14155555678,Jane,Smith,[email protected],Tech Inc,2024-02-20,regular
+442071234567,Bob,Wilson,[email protected],London Ltd,2024-03-10,new
+919876543210,Priya,Kumar,[email protected],Mumbai Co,2024-04-05,vip
Column Naming#
Use clear, consistent column names:
| Good Names | Avoid |
|---|---|
| phone, phone_number | Column1, A |
| first_name, firstName | name1 |
| email, email_address | contact |
| purchase_date | date |
Waflow will attempt to auto-match common column names.
Download Sample Template#
Get a properly formatted template:
- Go to Contacts > Import
- Click Download Sample Template
- Open in your spreadsheet application
- Replace sample data with your contacts
- Save as CSV
The template includes all default fields plus example custom fields.
Import Process#
Step 1: Start Import#
- Go to Contacts in the sidebar
- Click Import button
- Select CSV Import
Step 2: Upload File#
- Drag and drop your CSV file, or click to browse
- Wait for the file to upload and parse
- Waflow will preview the first few rows
If your file has encoding issues, try:
- Saving as UTF-8 in your spreadsheet application
- Selecting UTF-16 encoding option in Waflow
Step 3: Map Columns#
Waflow displays your CSV columns and asks you to map them to Waflow fields:
┌─────────────────────────────────────────────────────────────────┐
│ Map Your Columns │
├─────────────────────────────────────────────────────────────────┤
│ CSV Column → Waflow Field │
├─────────────────────────────────────────────────────────────────┤
│ phone → [Phone Number ▼] (Required) │
│ first_name → [First Name ▼] │
│ last_name → [Last Name ▼] │
│ email → [Email ▼] │
│ company → [Company ▼] │
│ purchase_date → [+ Create Custom Field] │
│ customer_type → [Import as Tag ▼] │
└─────────────────────────────────────────────────────────────────┘
For each CSV column, select:
- Waflow field: Map to an existing field
- Create custom field: Create a new field for this data
- Import as tag: Convert values to tags
- Do not import: Skip this column
Auto-Matching#
Waflow automatically matches common column names:
| CSV Column | Auto-Matched To |
|---|---|
| phone, mobile, whatsapp | Phone Number |
| first_name, firstname, first | First Name |
| last_name, lastname, last | Last Name |
| email, email_address | |
| company, organization, org | Company |
Review auto-matches and correct if needed.
Step 4: Configure Options#
Set import behavior options:
Duplicate Handling#
Choose what happens when a phone number already exists:
| Option | Behavior |
|---|---|
| Skip duplicates | Keep existing contact, ignore import row |
| Update duplicates | Merge import data into existing contact |
| Replace duplicates | Overwrite existing contact with import data |
Tip Use "Update duplicates" to enrich existing contacts with new data without losing information.
Tag Options#
Optionally add tags to all imported contacts:
- Enter tag names separated by commas
- Tags are created if they don't exist
- Useful for tracking import batches (e.g., "import-dec-2024")
Empty Value Handling#
Choose how to handle empty cells:
| Option | Behavior |
|---|---|
| Keep empty | Set field to empty/null |
| Keep existing | Don't overwrite if updating |
| Use default | Apply a default value |
Step 5: Preview and Validate#
Before importing, Waflow shows:
Import Summary#
- Total rows in file
- Valid rows (will be imported)
- Invalid rows (will be skipped)
- Duplicate rows (based on your setting)
Sample Preview#
First 5 rows as they will appear in Waflow:
┌────────────────────────────────────────────────────────────┐
│ Preview (first 5 contacts) │
├────────────────────────────────────────────────────────────┤
│ Phone Name Email Tags │
│ +14155551234 John Doe [email protected] vip │
│ +14155555678 Jane Smith [email protected] regular │
│ +442071234567 Bob Wilson [email protected] new │
│ +919876543210 Priya Kumar [email protected] vip │
│ ... │
└────────────────────────────────────────────────────────────┘
Validation Errors#
Review any validation issues:
| Error Type | Example | Resolution |
|---|---|---|
| Invalid phone | Missing country code | Fix in CSV and re-upload |
| Invalid email | Bad format | Fix or skip the column |
| Missing required | Empty phone field | Fix or remove the row |
| Invalid date | Wrong date format | Use YYYY-MM-DD format |
Step 6: Import#
- Review the summary and preview
- Click Start Import
- Wait for the import to complete
Progress is shown in real-time:
Importing contacts...
████████████████████░░░░░░░░░░ 67%
6,700 of 10,000 contacts imported
Large imports may take several minutes. You can navigate away; the import continues in the background.
Step 7: Review Results#
After import completes:
┌─────────────────────────────────────────────────────────────────┐
│ Import Complete │
├─────────────────────────────────────────────────────────────────┤
│ ✓ 9,850 contacts imported successfully │
│ ↻ 100 contacts updated (duplicates) │
│ ✗ 50 rows skipped (errors) │
├─────────────────────────────────────────────────────────────────┤
│ [Download Error Report] [View Imported Contacts] [Done] │
└─────────────────────────────────────────────────────────────────┘
Download the error report to see which rows failed and why.
Error Report#
The error report is a CSV containing:
| Column | Description |
|---|---|
| row_number | Original row in your CSV |
| phone | Phone number (if valid) |
| error_type | Category of error |
| error_message | Detailed explanation |
| original_data | The original row data |
Common Errors#
Invalid Phone Number#
Row 45: +123 - Invalid phone number format
Cause: Number doesn't match any valid country code pattern
Fix: Verify the number and country code
Duplicate Phone Number#
Row 102: +14155551234 - Duplicate phone number (skipped)
Cause: This number already exists in your contacts
Fix: Change duplicate handling to "Update" if you want to merge data
Invalid Email Format#
Row 78: john@example - Invalid email address
Cause: Email doesn't contain a valid domain
Fix: Correct the email or leave empty
Date Format Error#
Row 156: 15/01/2024 - Invalid date format, use YYYY-MM-DD
Cause: Date is not in the expected format
Fix: Convert dates to YYYY-MM-DD format (2024-01-15)
Field Type Mismatch#
Row 203: "abc" - Expected number for field 'age'
Cause: Value doesn't match the custom field type
Fix: Ensure values match field types (numbers for number fields, etc.)
Fixing and Re-importing#
If many rows failed:
- Download the error report
- Open your original CSV
- Fix the issues identified
- Save the corrected file
- Import again
Use "Skip duplicates" on re-import to avoid creating duplicates of successfully imported contacts.
Import Limits#
| Plan | Contacts per Import | Imports per Day |
|---|---|---|
| Starter | 5,000 | 3 |
| Professional | 25,000 | 10 |
| Business | 100,000 | Unlimited |
| Enterprise | Unlimited | Unlimited |
For very large imports (500k+), contact support for batch processing.
Import History#
View past imports:
- Go to Contacts > Import History
- See list of all imports
- Click any import to view:
- Import date and time
- Number of contacts imported
- Settings used
- Error report (if any)
Best Practices#
Before Import#
- Clean your data: Remove duplicates, fix formatting
- Validate phone numbers: Ensure country codes are present
- Standardize formats: Consistent date formats, capitalization
- Backup your CSV: Keep the original file
- Test with a small batch: Import 10-20 contacts first
Column Mapping#
- Map all relevant columns: Don't skip valuable data
- Create custom fields for unique data points
- Use tags strategically: Import categories as tags
- Review auto-mapping: Verify automatic matches
Duplicate Handling#
| Scenario | Recommended Setting |
|---|---|
| First import ever | Skip (no duplicates expected) |
| Regular sync from CRM | Update (merge new data) |
| Complete data refresh | Replace (overwrite old data) |
| Uncertain source | Skip (safe option) |
Large Imports#
For imports over 10,000 contacts:
- Split into multiple files
- Import during off-peak hours
- Monitor import progress
- Review error reports promptly
Automation via API#
For regular imports, consider the API:
# Upload and import a file
curl -X POST https://api.waflow.com/v1/contacts/import \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "[email protected]" \
-F "duplicate_handling=update" \
-F "tags=crm-sync"
See API Documentation for details.
Troubleshooting#
File Won't Upload#
- Check file size (under 10 MB)
- Verify it's a .csv file
- Try a different browser
- Check your internet connection
Encoding Issues (Special Characters)#
If names show as "é" instead of "e":
- Open CSV in a text editor (not Excel)
- Save as UTF-8 encoding
- Re-upload
All Rows Failing#
- Check that phone column is correctly mapped
- Verify phone numbers have country codes
- Look for invisible characters (copy/paste issues)
Import Stuck#
- Refresh the page and check import history
- Import may still be processing in background
- Contact support if stuck for more than 30 minutes
Next Steps#
After importing contacts: