CSV Import¶
Import subscribers in bulk from CSV files — whether you're migrating from another email platform or uploading a list from a spreadsheet.
Importing from the Dashboard¶
- Go to Subscribers in your app's dashboard
- Click Import
- Choose your CSV file
- Select the provider format (or let MailJawn auto-detect it)
- Optionally check "Treat as new subscribers" to trigger welcome automations
- Click Import
Tip
Leave "Treat as new subscribers" unchecked for migrations. This prevents welcome emails from going out to people who already know your product.
Supported Formats¶
Sendy Export¶
If you're migrating from Sendy, export your subscriber list and upload the CSV as-is. MailJawn recognizes Sendy's column format automatically.
| Sendy Column | MailJawn Field | Notes |
|---|---|---|
Email |
email |
Required |
Name |
name |
Display name |
Optin Time |
subscribed_at / first_seen |
Original signup date. Format: YYYY/MM/DD, HH:MMAM/PM |
Status |
status |
Mapped: active, unsubscribed, bounced, complained |
Last activity |
last_seen |
Most recent engagement |
Country |
custom_fields.country |
Stored as custom field |
Country code |
custom_fields.country_code |
Stored as custom field |
Confirm Time |
custom_fields.confirm_time |
Stored as custom field |
The Joined column is also accepted as an alias for Optin Time.
Generic CSV¶
For any other source, use these column names:
| Column | MailJawn Field | Required |
|---|---|---|
email |
email |
Yes |
name |
name |
No |
subscribed_at |
subscribed_at / first_seen |
No |
Note
Column matching is case-insensitive, so Email, email, and EMAIL all work.
Auto-Detection¶
MailJawn inspects your CSV headers and automatically selects the right provider format. If it finds Sendy's signature columns (Email, Name, Optin Time, Status), it uses the Sendy mapping. Otherwise, it falls back to the generic format.
Import Results¶
After import, you'll see a summary:
| Stat | Meaning |
|---|---|
| Created | New subscribers added |
| Updated | Existing subscribers whose data was refreshed |
| Skipped | Rows with missing or invalid email addresses |
| Suppressed | Emails on your suppression list — these are not imported |
How Updates Work¶
When a CSV row matches an existing subscriber (same email), MailJawn merges the data:
- Name is overwritten if the CSV provides one
- Dates use smart merging:
first_seenkeeps the earliest date,last_seenkeeps the latest - Status is overwritten if the CSV provides one
- Custom fields are merged additively (new keys are added, existing keys are updated, unmentioned keys are preserved)
Welcome Automation Control¶
By default, CSV imports do not trigger welcome automations — this prevents sending welcome emails to subscribers you're migrating from another platform.
To enable automations for an import:
- Check the "Treat as new subscribers" checkbox before importing
- Only newly created subscribers receive the welcome series (updates are always silent)
Warning
If you're migrating a large list, import first with automations off, then enable your welcome automation afterward. This ensures the backfill guard prevents old subscribers from receiving welcome emails.
API Bulk Import¶
You can also import subscribers programmatically:
Send a JSON array of subscriber objects:
This endpoint requires an API key with subscribers:write scope. Welcome automations are never triggered for API bulk imports.
See also: Integrations > REST API for the full API reference.