HelpContacts

Importing contacts

Import a CSV, review activations and preserve existing subscription restrictions.

Unified-audience accounts import into a selected newsletter from the Subscribers catalog. A new simple CSV import adds or finds the subscriber and activates eligible subscriptions when the owner approves the reviewed import. It sends no messages and starts no sequences. The preview remains read-only. Use Import from CSV for a simple group import, or Migrate from MailerLite Classic for the advanced migration wizard below.

Import a CSV into a group

Choose Import from CSV in Subscribers or open a group and use the same button. Select the newsletter and target group, then choose one UTF-8 CSV. The group is already selected when you start inside it.

The separator and common email, first-name and status columns are suggested automatically. Check or change the mapping; unusual or ambiguous headers need your choice. Unmapped columns are ignored. Files may use commas, semicolons or tabs, up to 10 MiB and 100,000 rows, with at most 25,000 distinct addresses.

Choose Review import to check the counts, then Import and activate. The import saves progress in batches. Pause or retry an interrupted step to continue; after leaving the page, the existing import history in the migration tool also contains the saved run. The preview shows how many subscriptions will activate; the completed import shows how many actually activated. Valid rows with a blank or active status can activate new or pending subscriptions. Existing active evidence, withdrawals, deletion, erased profiles, delivery blocks and paused subscriptions are preserved. Explicit unconfirmed rows and conflicting or unknown statuses do not activate. The grant records the owner's import approval, rather than recipient confirmation. Group membership alone remains organizational, and no welcome message or sequence starts. Imports saved before this behavior was introduced keep their original rules; completed imports are not replayed.

Migrate a MailerLite Classic CSV

In Subscribers, choose Migrate from MailerLite Classic. Select one target newsletter and a UTF-8 profiles CSV, optionally with statuses and memberships files. Match your export columns and statuses before continuing; suggested mappings must be checked against your file. The wizard reads CSV. An operator can also produce these files with the separate read-only Classic API exporter; the wizard never needs your Classic API key.

Confirm the delimiter, email and optional name, source ID, status and group columns before upload. IDs remain text. Map the exact source values for active, unconfirmed, unsubscribed, bounced and junk. Unknown values are reported, never treated as active. Other columns are ignored. The default policy does not import guessed historical dates or infer consent from signup, confirmation or group dates.

Add everyone to one existing or new group, or map exact source group IDs or names to groups in the selected newsletter. If a cell contains several groups, explicitly set its separator. Group membership never grants newsletter consent.

For retained original consent evidence, select the reviewed evidence policy, map the original identity and consent/confirmation/evidence fields, identify the source newsletter and original artifact SHA-256, and review the exact plan and evidence digests. A confirmation timestamp alone is not proof of double opt-in. Missing or conflicting evidence remains unproven. Each run allows at most 25,000 distinct identities and 1,000 source records per identity, within 100,000 total rows and 10 MiB per file / 20 MiB combined. If duplicate records for one identity exceed the limit, the current chunk is rejected without writes; consolidate the source records before starting a new run. The default consent policy preserves valid local consent and leaves new subscriptions without proven consent. Active source status alone cannot grant or restore consent. Existing withdrawals and erasure win; imported withdrawals stop future sequence steps only for the target newsletter. Import sends no welcome or confirmation messages and starts no sequence.

Enter your source account and newsletter references and an explicit UTC export cutoff. These are retained source assertions, not independent verification of the Classic API or double opt-in. Review the staged counts and issues, approve the fixed plan, then continue the import in saved batches. Before approval, uploading and previewing do not change subscribers.

Closing pauses future work. Reopen the same run from Import history to refresh, continue or cancel remaining work. For an unfinished upload, reselect the original files with the original delimiter. Cancellation keeps changes already committed; it is not undo. Download report pages until no continuation remains. CSV cells are escaped for spreadsheet safety. Unfinished uploads expire after 24 hours, retained row data after 7 days and aggregate history after 90 days.

Optional Classic API export

The local operator tool scripts/mailerlite-classic-export.mjs reads all five subscriber statuses, groups, memberships and original custom-field values. Upload its profiles.csv and memberships.csv through the wizard and use groups.json to map IDs. Keep original exports private; custom fields are retained in a sidecar for review, not automatically stored in subscriber profiles. Check the export manifest for completion, source changes and importer limits before upload. The exporter does not modify Classic or this application.

For automation definitions and email HTML, use the separate sequence draft import. Classic’s public API does not document a workflow export. Existing participants and their positions are not copied or restarted.

Export from your current platform

Substack, beehiiv, Mailchimp, Kit, Buttondown and most other platforms export subscribers as a CSV file. Choose a target newsletter in Subscribers and use Import there; older accounts use Contacts.

Preview CSV files before importing

From the selected newsletter's Import dialog, choose Preview CSV files to inspect an export separately from Import contacts. Preview only. No contacts or consent were changed. The preview has no import or apply step and never sends email. Files stay in your browser; only normalized addresses are sent for read-only checks against your account.

Choose a profiles file and, optionally, one statuses file and one memberships file. Use UTF-8 CSV files and explicitly confirm the delimiter (comma, semicolon or tab), columns, status meanings and date format. The preview does not guess these mappings. An active or subscribed value in a file is not proof of marketing consent.

  • Each file can be up to 10 MiB, with 20 MiB across all files.
  • The combined limit is 100,000 nonempty data records and 25,000 unique valid addresses.
  • Group memberships support up to 1,000 distinct groups, 100 per address, with names up to 120 characters.
  • The complete diagnostic report can be up to 32 MiB. Exceeding a limit stops the preview; it never silently truncates the result.

The report reconciles duplicate addresses, combines group memberships and flags invalid values or unmapped statuses. Current account checks show existing consent and restrictions, including withdrawals, erasure, complaints, bounces and blocks. Previewing never overrides them or grants permission to send. Checks run in separate batches, so the report is not a single snapshot of the whole account and restrictions can change afterward.

Download the diagnostic CSV after all file and account checks finish. If a check fails, retry refreshes all account checks; an incomplete report cannot be downloaded. Closing the preview clears its files and results, so select the files again when reopening it.

This preview shows CSV changes without importing them. Use the migration wizard above to review consent evidence and import in saved batches. The existing importer below remains a separate operation.

What the import reads

  • Email: the only column it needs, under names like email, email address or subscriber.
  • Status: subscribed, unsubscribed, bounced or complained in the platform's own words. A status it doesn't know, like unconfirmed, makes the contact dormant.
  • Signup date, so your contacts keep the day they joined.
  • Open and click rates, when the platform exports them: your sends reach the most engaged first, so your best readers get your first issue first.

Other columns are skipped. Instead of the file's statuses, you can import everyone as dormant, for an old list you'd rather organize first. Imported statuses never grant or restore marketing consent.

Before importing, you tick “These people agreed to receive my emails”. Only import people who signed up for your newsletter: a bought or scraped list brings bounces and spam complaints, which pause your sends and can block your account.

What it leaves out

The import checks each address and leaves out, with a count for each reason:

  • invalid addresses, and misspelled domains like gmial.com;
  • spam traps, throwaway inboxes and role addresses like info@ or support@;
  • duplicates in the file, and addresses on domains that can't receive email;
  • people who unsubscribed, bounced or complained before, even if you deleted them since;
  • addresses ApresMail knows can't receive email, because they bounced or hit a spam trap for any sender.

In a unified audience, existing consent is never promoted by a file. New addresses have no confirmed consent, and a withdrawal in the target newsletter stays withdrawn. Another newsletter's consent is unchanged. Import never sends welcome or confirmation emails or starts sequences. Older accounts keep their legacy contact-status behavior. Existing-list consent requires a separate reviewed migration; the import checkbox does not replace it.

After the import

The first time you send to contacts who never got an email from you, a slice of them goes first and the rest follows 3 hours later if the slice looks clean. First sends in steps