The four decisions before you touch the files
Merging lists goes wrong in predictable ways: the same person appears twice, a reader who unsubscribed from one list gets mail again because they are active on the other, or a better value in one file is overwritten by a blank in the other. Decide four things up front: how you match addresses, which statuses you keep, whose field values win, and which list is the record of consent for each person.
Write the decisions down in the merge file's notes. If anyone later asks why a reader was suppressed or kept, that note is your answer.
Step 1: normalize addresses, carefully
Trim spaces and lowercase the whole address in a new match column, and keep the original column. RFC 5321 says the local part of a mailbox must be treated as case sensitive by mail software, but also that exploiting case sensitivity impedes interoperability and is discouraged; domains follow DNS rules and are not case sensitive. [4] In practice, matching case-insensitively is the safer choice for list merges.
Do not go further than that. Google says dots in a personal Gmail address do not matter, but for Gmail used through a work or school organization, dots do change the address. [5] Stripping dots or plus tags could join two different people into one record. Then remove duplicates within each file before comparing the two. MailerLite will also drop duplicate addresses within an import file, but doing it yourself lets you choose which row survives. [1]
- Match column: trimmed, lowercased address.
- Keep: original address, source list, status, status date.
- Remove: blank rows, rows without an @ and a domain.
- Do not: strip dots, remove +tags or rewrite domains.
Step 2: decide whose field values win
When the same person is in both lists, the fields will disagree. Pick a rule per field instead of letting the import decide. MailerLite's import has a setting for whether to update subscriber fields with empty data, which is the main way a blank in one file can wipe a good value. [1] Its API upsert is non-destructive: fields you leave out are not removed. [3]
| Field | Suggested rule | Why |
|---|---|---|
| Status | Most restrictive wins: unsubscribed, bounced or complained beats active | Protects people who opted out |
| Name | Non-blank wins; if both set, most recently updated | Avoids blanks overwriting |
| Signup date | Earliest date | Reflects first consent |
| Consent source | Keep both, in separate fields | Each list is its own evidence |
| Custom fields (plan, interest) | Choose a primary list per field | Stops values flipping each import |
| Groups or tags | Union of both | Membership is additive |
Step 3: carry suppression from both lists
Build one suppression file from every unsubscribed, bounced and complained address in either list, matched on the normalized column. An address on it stays suppressed even if it is active in the other list. The ICO says you may need to keep a record of withdrawals, such as a suppression list for direct marketing, and that you do not need consent for it as long as you tell people you keep it, why, and on what lawful basis. [7]
Then check how the destination treats it. MailerLite says imports fail for addresses already unsubscribed, bounced, unconfirmed or marked as spam complaints in the account. [1] That is a safety net only if those addresses are already there. On a new or partial account, import the suppression file into a dedicated group with automation triggering off, open the group, select the subscribers and use Actions, then Move to unsubscribed, which is the route MailerLite documents for importing unsubscribed contacts. [2] Do this before importing active subscribers. MailerLite also says contacts who were active at any point in the billing period count toward the plan limit until it resets, so the brief active state may count once. [2]
Worked example: two CSVs and a reconciliation table
Illustrative numbers. List A is an old shop list with 1,000 rows; List B is a webinar list with 600 rows. After normalizing, A loses 4 invalid rows and 6 duplicates, leaving 990 unique addresses; B loses 2 invalid rows and 3 duplicates, leaving 595. 145 addresses appear in both, so the merged set is 990 + 595 - 145 = 1,440 unique people.
Suppression: A has 70 unsubscribed addresses and B has 25, with 10 in both, so 85 unique unsubscribes. A further 15 addresses bounced or complained. That is 100 suppressed, imported first and moved to Unsubscribed. The remaining 1,340 are imported as active. Every row of the table must add up; if MailerLite's import report shows failures or duplicates you did not expect, find those addresses before sending. [1]
| Stage | List A | List B | Merged | Check |
|---|---|---|---|---|
| Raw rows | 1,000 | 600 | 1,600 | Row count of each file |
| Invalid removed | 4 | 2 | 6 | Logged in a rejects tab |
| Duplicates within file | 6 | 3 | 9 | Kept the most complete row |
| Unique after cleaning | 990 | 595 | 1,585 | 1,600 - 6 - 9 |
| In both lists | 145 | 145 | -145 | Counted once |
| Unique people | 1,440 | 990 + 595 - 145 | ||
| Unsubscribed (either list) | 70 | 25 | 85 | 10 overlap removed |
| Bounced or complained | 15 | Added to suppression | ||
| Imported to suppression | 100 | Moved to Unsubscribed [2] | ||
| Imported as active | 1,340 | 1,440 - 100 |
After the import: verify before you send
MailerLite cannot bulk re-activate unsubscribed contacts, so a mistake in the suppression direction is slow to undo; it is one profile at a time with documented permission, and contacts not emailed in two years may not be restorable. [2] Its API has a resubscribe option that, when set to true, resubscribes previously unsubscribed subscribers, so keep it off in any sync script. [3]
- Compare the active count in MailerLite with your Imported as active figure.
- Compare the Unsubscribed count with your suppression total.
- Search five addresses that were active in one list and unsubscribed in the other; all should be unsubscribed.
- Export the merged list once and keep it with your merge notes. [6]
- Retire both source files so nobody re-imports an old copy.
Questions before you decide
Should I lowercase email addresses before merging?
For matching, lowercasing is the usual practical choice. RFC 5321 says mail software must treat the local part as case sensitive, but that exploiting this impedes interoperability and is discouraged, and domains are not case sensitive. Keep the original address in a separate column.
Should I remove dots from Gmail addresses to find duplicates?
No. Google says dots do not matter for personal Gmail addresses, but for work or school accounts using Gmail, dots do change the address. Stripping dots could merge two different people.
What does MailerLite do if I import an address that is already unsubscribed?
Its import article says the import fails for addresses already unsubscribed, bounced, unconfirmed or marked as spam complaints in your account, and duplicates within the file are removed automatically.
Can I bulk re-subscribe people after a merge in MailerLite?
No. MailerLite says you cannot activate unsubscribed recipients in bulk; it is one at a time from the profile and only with documented permission, and unsubscribed contacts not emailed in two years may not be restorable.
Sources & verification
Product details and prices can change. Check the linked provider before buying.
- MailerLite: How to import subscribers Accessed 30 Oct 2026
- MailerLite: Everything about unsubscribed recipients Accessed 30 Oct 2026
- MailerLite API: Subscribers Accessed 30 Oct 2026
- RFC 5321: Simple Mail Transfer Protocol Accessed 30 Oct 2026
- Google Gmail Help: Dots in Gmail addresses Accessed 30 Oct 2026
- MailerLite: How to export subscribers Accessed 30 Oct 2026
- ICO: How should we obtain, record and manage consent? Accessed 30 Oct 2026
- ICO: How should we obtain, record and manage consent? Accessed 30 Oct 2026
Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.
