Guide

Salesforce Marketing Cloud migration checklist: what to inventory, rebuild and test

By Forefront Industries•Updated •9 min read

Short answer

A Salesforce Marketing Cloud migration succeeds or fails on the inventory. List every data extension, automation, journey, template, script and integration first, decide what to keep, rebuild or retire, then migrate in stages with both systems running in parallel. Treat sending domains and IP warm-up as a project of their own, and do not cut over until QA and a rollback plan are signed off.

Before you touch anything: define the migration

"Migrate to SFMC" and "migrate off SFMC" and "move between business units" are three different projects. Write down which one this is, who owns each decision, and the date that matters most (a contract renewal, a campaign season, a platform sunset). Migrations drift when nobody can say what "done" means.

  1. Scope: channels in scope (email only, or SMS, push, CloudPages too).
  2. Owner: one person who can approve scope changes.
  3. Freeze: a date after which no new automations are built in the old system without being logged.
  4. Success test: what must be true for cutover, for example "all transactional triggers firing from the new system, verified by seed list".

1. Inventory everything

Build a spreadsheet with one row per asset. Most migrations underestimate how much is hidden in the account.

  • Data Extensions: name, folder, sendable or not, primary key, retention policy, row count, and which automations read or write it.
  • Automations (Automation Studio): schedule, every activity (SQL Query, Import File, Data Extract, File Transfer, Script, Send Email), and the data they touch.
  • Journeys (Journey Builder): entry source, activities, goals, exit criteria, re-entry setting, and whether they are live.
  • Content: email templates, Content Builder content blocks, landing pages and CloudPages, and any AMPscript or SSJS in them.
  • Triggered sends: transactional and triggered send definitions, plus the systems that call them via API.
  • Integrations: Marketing Cloud Connect, web forms, SFTP drops, API users, webhooks.
  • Sender setup: send classifications, delivery profiles, sender profiles, reply mail management, sender authentication.
  • Subscriber state: unsubscribes, bounces, holds, suppression and global exclusion lists.

Then mark each row keep, rebuild, or retire. Expect a large share of old automations to be retired. Do not rebuild things nobody can explain.

2. Map the data

Data is where migrations stall. For each data extension, decide where that data lives in the target.

  • Identify the unique key. Mismatched Subscriber Keys cause duplicate contacts and broken suppression.
  • Decide what is master data (lives in CRM or warehouse) and what is marketing-only (can be rebuilt).
  • Check field types, lengths, and date formats. Time zones in particular are a common silent error.
  • Move consent and unsubscribe history first. Sending to someone who unsubscribed in the old system is the most expensive mistake available.

If the target is Braze, data extensions become attributes, custom events, or Catalogs depending on how the data is used. Our Braze implementation checklist covers that mapping.

3. Rebuild personalization logic

AMPscript and SSJS do not translate mechanically. For each template, list what the code does (lookup, format, conditional content, API call), then rewrite it in the target's language and data model. Common traps:

  • Nested Lookup and LookupRows calls that depended on a data extension that no longer exists.
  • Default values for blank fields, which are easy to lose.
  • Date and currency formatting that differs by locale.
  • Hard-coded links, tracking parameters and preference-center URLs.

This is the work most teams should hand to a specialist. If you are an agency, this is the kind of work we take on white-label. See agency partners.

4. Journeys and automations

Rebuild by function, not by screenshot. A journey that does five things for historical reasons may be better as two cleaner ones. Decide for each whether it is event-driven (Journey Builder) or schedule-driven (Automation Studio). That split is explained in Journey Builder vs Automation Studio.

Document entry criteria, wait times, exit conditions and re-entry rules explicitly. They are the usual source of "why did this person get that email twice" after launch.

5. Sender authentication and warm-up

Sending reputation does not move with your templates. Plan for:

  • SPF, DKIM and DMARC aligned on the sending domain, and a private domain or branded sending setup if you use one.
  • A dedicated IP decision. High, steady volume may justify one; low or spiky volume often does not.
  • A warm-up schedule that starts with your most engaged subscribers and ramps volume gradually.
  • Seed-list and inbox-placement monitoring during ramp-up.

Start this early. It has the longest lead time and cannot be rushed at the end.

6. QA before cutover

  • Render every template in the clients your audience uses (Outlook desktop, Gmail, Apple Mail, mobile, dark mode). Our responsive email QA checklist lists the checks.
  • Send to a seed list with edge-case records: blank fields, long names, non-English characters, missing images.
  • Test every link, unsubscribe, and preference-center path.
  • Confirm each triggered send fires from the real upstream system, not only from a manual test.
  • Verify suppression: unsubscribed and bounced contacts must not receive anything.

7. Cutover and rollback

Cut over in waves: lowest-risk programs first, transactional and revenue-critical last. Keep the old system able to send for a defined period. Write the rollback plan before you need it: who decides, what flips back, how queued sends are handled.

After cutover, watch deliverability, unsubscribe and complaint rates daily for the first weeks, and compare performance against the old program's baseline before declaring victory.

The short checklist

  1. Define scope, owner, freeze date, success test.
  2. Inventory data extensions, automations, journeys, content, integrations, sender setup.
  3. Classify each asset: keep, rebuild, retire.
  4. Map data and keys; move consent first.
  5. Rewrite personalization and rebuild journeys by function.
  6. Authenticate domains; plan IP and warm-up.
  7. QA across clients, data edge cases and triggers.
  8. Cut over in waves with a rollback plan.
  9. Monitor and compare against baseline.

Comparing platforms first? Read Braze vs Salesforce Marketing Cloud.

Frequently asked questions

How long does an SFMC migration take?

It depends on the number of assets and how clean the account is. A small account with a handful of templates and automations can move in weeks. A large account with years of accumulated journeys and data extensions takes months, mostly because of the inventory, data mapping and warm-up.

What is the most common cause of migration problems?

Undocumented dependencies: an automation that quietly feeds another one, a data extension that a script reads, or an integration nobody remembers. A full inventory before any rebuild prevents most of them.

Do we need to warm up IPs when migrating?

If you are moving to a new dedicated IP or new sending domain, yes. Warm up gradually, starting with engaged subscribers. If you stay on shared infrastructure, follow the provider's guidance and still ramp carefully.

Can an agency hand this work off to Forefront?

Yes. We rebuild templates, AMPscript, SSJS and journeys white-label for agencies, scoped per project.

Salesforce Marketing Cloud development

AMPscript, SSJS, Content Builder and Journey Builder work for brands, and white-label for agencies.

Want this built, not just explained?

Send the brief. You get a written scope back before any work starts.