Guide

Leave any outreach tool without losing the memory that protects you

We wrote twenty-two guides on cancelling specific outreach tools, and every one of them arrived at the same finding: the hard part of leaving is not the Cancel button. It is keeping the contact history, the list logic and, above all, the people who said no. Vendors document billing. Almost none of them document a safe migration. This is that document, for any tool.

Free download

Outreach tool migration worksheet

The export checklist, the four kinds of 'do not contact' and a suppression-list template that works in any tool.

One email with the file. Untick the box and that is the only one you get.

01 · What cancelling does not do

The account ends. The obligations do not.

Cancelling stops the billing and, some weeks later, deletes the workspace. Nothing about the people in it changes. A new tool with an empty database knows none of this, and the first list you import into it is the first time you find out what the old tool was quietly protecting you from.

Still withdrawn

The person who unsubscribed in March still withdrew consent.

Still dead

The address that bounced still does not exist.

Still asked

The prospect who asked to be deleted still asked.

So the job is not to export data. It is to export memory, and memory in outreach is mostly the record of who not to contact and why. Everything below serves that.
02 · Export checklist

Twelve things to take with you

Run these while the plan is paid: several exports only exist on the paid tier, and support only answers while you are a customer. The first six are the outreach; the last six are the memory.

Lead lists
Lists, audiences, saved searches

With the tag or field that says why each person was added

Companies
Accounts, organisations

Name, domain, LinkedIn company URL

Campaign history
Campaign or sequence reports

Per person: campaign, step, dates, replied, meeting, outcome

Conversations
Inbox, unibox, replies

Thread text with dates and direction

Templates and sequences
Sequence builder

Every step, its delay, the A/B names with their reply rates

Attachments and images
Media library

The files. Template exports link to them and the links die

Hard bounces
Deliverability report

Address, date, bounce type, kept apart from soft bounces

Unsubscribes
Opt-out list

Address, date, the campaign they opted out from

Blocklists
Workspace settings

Blocked domains and addresses nobody remembers adding

Data-removal requests
Support inbox, legal folder

Who asked, when, what you confirmed back

Pending LinkedIn invitations
LinkedIn itself, not the tool

Withdraw the stale ones before the new tool starts counting

Integrations and webhooks
Settings, API, Zapier or n8n

Every URL that posts into or out of this tool

03 · Four kinds of no

One CSV, four obligations

Most tools export all of these as one file, and most migrations import that file as a blocklist and call it done. They are different obligations, they go to different places, and each gets its own reason code in the suppression list.

Unsubscribeunsubscribe

The person withdrew consent from you as a sender.

You owe: No more marketing from you, on any channel you control. Not per campaign.

Goes to: Suppression list, scope person.

Hard bouncehard_bounce

The address does not exist. Nobody said anything.

You owe: Nothing to the person, everything to your domain: send again and the domain gets flagged.

Goes to: Suppression list. Fine to re-verify the person elsewhere.

Data-removal requestremoval_request

They asked you to delete what you hold on them.

You owe: Delete the record, confirm it, keep only the key that stops them coming back in.

Goes to: Suppression list with personal fields blanked.

Workspace exclusionexclusion

Your own rule: clients, competitors, colleagues.

You owe: Nothing legal. It is the one that vanishes, because it lived in a setting.

Goes to: Suppression list, often scope domain, then a rule in the new tool.

Rule of thumb. If you cannot say which of the four a row is, treat it as an unsubscribe. Over-suppressing costs one prospect. Under-suppressing costs a complaint with your domain on it.
04 · Identity

The same person under another key

A suppression list protects you only if the person is recognised on the way back in, and people change jobs, addresses and vanity URLs. Match on every key you hold, in this order of trust.

  1. 1
    LinkedIn member idIdentity

    The ACoAA string in a URN-style profile URL. Stable for life.

  2. 2
    Email addressStrong

    Lower-cased, trimmed. Strip plus tags only when matching, never in the stored key.

  3. 3
    LinkedIn vanity URLHint

    Reassignable, so a match is a strong hint, not proof. Never merge two records on it alone.

  4. 4
    DomainScope

    For domain-scoped rows only. Matches everyone at the company.

  5. 5
    Name + companyFlag only

    Never a key on its own. Flags a row for a human, never auto-suppresses.

Zero matches is a bug, not a clean list. Normalise both files the same way, run the leads against the suppression list on every key, and count. Zero on a list of a few thousand means the normalisation is wrong. Keep the rejected rows with the reason; that file is what you show a client who asks whether you contacted someone.
05 · Cutover

Suppression list first, leads second, never the reverse

Eleven steps. The order exists because each one protects the next; reversing any pair is how a migration contacts someone who opted out.

  1. 1
    Pause every running campaign in the old tool

    Nothing sends while two tools overlap. A reply into a dead inbox is a lost meeting.

  2. 2
    Run the exports

    While the account is live and support still answers.

  3. 3
    Build the suppression list from bounces, unsubscribes, blocklists, removal requests and exclusions

    Four sources, one file, before the leads ever enter a tool with no memory.

  4. 4
    Import the suppression list into the new tool first

    An empty tool with a blocklist is safe. An empty tool with leads is a liability.

  5. 5
    Run the leads through the identity keys, import what survives

    The match count is your proof. Keep the rejects file.

  6. 6
    Recreate exclusions as rules, not just rows

    A row protects the people you know about today. A rule protects the ones a future list brings in.

  7. 7
    Import campaign history, mark the last 30 days as recently contacted

    Or the new tool re-opens with a cold opener to people mid-conversation.

  8. 8
    Rebuild sequences, send the first campaign in review mode

    Approving the first day by hand catches the merge field that did not map.

  9. 9
    Withdraw stale LinkedIn invitations on LinkedIn itself

    The pending count is per account, not per tool.

  10. 10
    Repoint every integration, then disable it in the old tool

    Or the CRM keeps writing into an account that stops existing at the end of the cycle.

  11. 11
    Cancel, and keep the exports for a year

    Someone will ask whether you contacted X in March. The exports are the only answer.

06 · Where CampaignStack fits

The worksheet works without us. Three things change with us.

Re-checked at every send

The suppression CSV imports as a workspace exclusion list, matched on member id, email and URL, and checked again at each send, not just at import.

Private by construction

Lead exports land as private lists that never cross into anyone else's workspace.

Review-gated first campaign

The outreach is rebuilt as workflows where a human approves the first sends after a migration.

Pick your tool

The vendor-specific steps

Where the Cancel button is, what each tool lets you export, and the gotchas that catch people. One guide per tool.

Frequently asked questions

Is an unsubscribe list the same as a blocklist?

No. An unsubscribe is a person withdrawing consent, and it follows them across every tool you use. A blocklist is your own rule about who you never contact, usually a domain. Both end up in the suppression list, but with different reasons, because you owe the person different things.

Someone asked to be deleted. How do I make sure they never come back in?

Keep only the matching key, such as the email or the LinkedIn member id, and the ticket reference, and delete everything else you held on them. That minimal row is what recognises the person the next time a list import contains them. Deleting the row entirely is how they get contacted again.

Do I need to withdraw pending LinkedIn invitations before switching tools?

Yes, and on LinkedIn itself, not in the tool. The pending count belongs to the account. A new tool starts against whatever backlog is already there, and an account near the cap sends nothing until it drains.

What does CampaignStack do with the worksheet?

The suppression-list CSV imports as a workspace exclusion list, matched on member id, email and URL, and the exclusion is re-checked at every send, not just at import. The lead exports import as private lists. Nothing here requires CampaignStack; the worksheet is built to work without it.

Why keep the exports for a year?

Because a client, a prospect or a regulator can ask whether you contacted a specific person in a specific month, and the old tool's account will not exist to answer. The exports are the only record you will have.

Get started

Start building your stack.

Your LinkedIn accounts will be safer with CampaignStack than doing it by hand. That's not a pitch. It's a measurable claim.