The Migration Center, added in MailerPress 2.1.0, brings your audience over from another newsletter tool: contacts, lists, tags and custom fields. Use it when you switch from a WordPress newsletter plugin (MailPoet or Newsletter) or from an email marketing platform (Brevo, Emailit, Mailchimp, MailerLite, Mailjet, Resend or SendGrid).
Migrating from MailPoet or Newsletter is free. Migrating from an email platform requires MailerPress Pro.
Open the Migration Center
Go to MailerPress > Tools > Migrations. You need the permission to manage MailerPress settings (see MailerPress capabilities). The toggle at the top of the page sets the type of source:
- Plugins: newsletter plugins whose data is on this WordPress site.
- Platforms: external email marketing accounts, connected with an API key.
If MailerPress finds MailPoet or Newsletter data during the setup wizard, it also offers a Migrate existing data step. You can skip it and use Tools > Migrations later.
Migrate from MailPoet or Newsletter
- Select Plugins, then choose the plugin in Import from plugin. It is marked โ(not detected)โ when its data is not found on your site.
- Under Data to migrate, check the data you want. Each line shows the number of records found.
- Click Start migration.
Keep the old pluginโs data until the migration is complete: do not uninstall it with its data.
Step-by-step guides: Import MailPoet contacts into MailerPress and Import Newsletter contacts into MailerPress.
| Data | MailPoet | Newsletter |
|---|---|---|
| Lists | Lists become MailerPress lists. Dynamic segments are not imported. | Lists from the Newsletter settings become MailerPress lists. |
| Tags | Tags become MailerPress tags. | Not available. |
| Custom fields | Custom fields and their values. | Profile fields and their values. |
| Contacts | Subscribers, with their lists (where they are subscribed), tags and custom field values. Deleted subscribers are skipped. | Subscribers, with their lists and profile field values. |
Statuses are converted as follows:
| Source status | MailerPress status |
|---|---|
| MailPoet: Subscribed / Newsletter: Confirmed | Subscribed |
| MailPoet: Unconfirmed / Newsletter: Not confirmed | Pending |
| MailPoet: Unsubscribed or Bounced / Newsletter: Unsubscribed, Bounced or Complained | Unsubscribed |
| MailPoet: Inactive | Inactive |
Extra custom fields keep a copy of the original data (for example MailPoet subscriber ID, MailPoet status, MailPoet engagement score, Newsletter language, Newsletter country). From MailPoet, the engagement history (last engagement, open, click and sending dates, emails sent) also feeds inactive contact detection.
Migrate from an email platform (MailerPress Pro)
MailerPress connects to the platform with an API key: a secret code you create in your platform account that lets MailerPress read your data. Give it read access to your contacts and lists.
- Select Platforms, then choose the platform in Import from platform. It shows โ(not connected)โ until MailerPress has its credentials.
- In the Connect form, paste your API key. For Mailjet, also paste the API secret (Mailjetโs secret key).
- Check Include unsubscribed contacts to also bring over contacts who unsubscribed or were blocked on the platform. They are imported as Unsubscribed. Otherwise they are skipped.
- Click Save API key (or Save credentials for Mailjet). The record counts appear under Data to migrate.
- Check the data you want and click Start migration.
If the platform is already your sending provider in MailerPress, its saved API key is reused: the platform is connected right away, the form is not shown, and unsubscribed contacts are not included.
What each platform imports
Click a platform name to open its step-by-step guide.
| Platform | Credentials | Imported data |
|---|---|---|
| Brevo | API key | Lists, contact attributes as custom fields, contacts with their lists. Tags are not imported. Blocklisted contacts count as unsubscribed. |
| Emailit | API key | Audiences as lists, custom fields, contacts. No tags. |
| Mailchimp | API key (including its data center suffix, such as -us21) | Audiences as lists, tags, merge fields as custom fields, subscribed members (plus unsubscribed members if you included them). Other members, such as pending or cleaned ones, are not imported. |
| MailerLite | API key | Groups as lists, fields as custom fields, subscribers. Segment names are created as tags, but subscribers are not tagged with them. Unsubscribed, bounced and junk subscribers count as unsubscribed. Unconfirmed subscribers are imported as Pending. |
| Mailjet | API key and API secret | Contact lists, contact properties as custom fields, contacts. Contacts excluded from campaigns count as unsubscribed. Contacts outside any list are not imported. No tags. |
| Resend | API key | Segments as lists, custom fields, contacts. If you have segments, contacts outside them are not imported. No tags. |
| SendGrid | API key | Marketing Campaigns lists, custom fields, contacts. Contacts in no list are not imported. No tags. SendGrid first prepares a contact export, so the contact step can take a little longer to start. |
Active contacts are imported as Subscribed. Platform contacts that belong to no list go to your MailerPress default list, except with Mailjet, SendGrid and Resend (when you have segments): there, they are not imported. Campaigns, templates, automations, forms and statistics are not migrated, whatever the source.
Follow, cancel or restart a migration
Lists are imported first, then tags, custom fields and contacts. A progress bar shows the records processed, skipped and in error, and each data type goes from Waiting to Completed. The migration runs in the background: you can leave the page and find the latest run when you come back.
- Cancel stops a running migration. Records already imported stay in MailerPress.
- If a run ends as Failed, the last error appears under the progress bar. Fix the cause (for example an invalid API key), then click Start migration again. A new run processes everything from the start, and the matching rules below prevent duplicates.
- Refresh reloads the sources and record counts.
Background processing relies on WordPress scheduled tasks (cron), which only run when your site gets visits. If a migration does not progress on a low-traffic site, set up a server cron job.
How existing data and duplicates are handled
- Lists and tags are matched by exact name. An existing list or tag with the same name is reused.
- Custom fields are matched by field key, so a second run does not create the same field twice.
- Contacts are matched by email address. An existing contact gets the sourceโs first name, last name, status and custom field values. Lists and tags from the source are added to the contactโs current ones.
The source status replaces the MailerPress status: a contact who unsubscribed in MailerPress but is still subscribed in your old tool becomes Subscribed again. Review your unsubscribed contacts before migrating into a MailerPress audience already in use.
Migrated contacts are created like any new contact:
- New contacts with the Pending status receive your sign-up confirmation email.
- Automations that start with the Contact Subscribed trigger can run for new contacts. Pause them before a large migration if you donโt want that.
Their opt-in source shows the origin (for example mailpoet_migration). To import a simple spreadsheet instead, see Import and export contacts with a CSV file.