← All guides9 min read

Shopify migration checklist: what to verify before go-live

The pre-launch checklist for a Graftport-managed Shopify migration: redirect verification, customer data checks, product count validation, Search Console setup, and the DNS flip sequence.

The go-live moment of a Shopify migration is irreversible in one direction: once DNS flips, your customers start hitting the destination. The checklist below is not a general "Shopify launch guide" — it is specifically the set of things to verify after a Graftport migration run and before flipping DNS. Work through it in order; the later items depend on the earlier ones being clean.

Two weeks out: data and credential readiness

☐ Source credentials are current. If the source store admin password was rotated since you entered it in Graftport, update it in the migration's Settings tab now. A stale credential surfaces as a 401 Unauthorized error on the extract phase — not a fun discovery on go-live morning.

☐ Destination credentials have the right scopes. Run an extract-only run on the destination to confirm the Shopify Admin API token works. Check that the token has read and write scopes for every resource you plan to load: Products, Collections, Customers, Orders, Inventory, Online Store (for redirects, blogs, and pages).

☐ All resource mappings are saved. Open each resource in the Resources tab of your migration and confirm the mapping version shown is the version you last edited. A common mistake: editing a mapping and closing the tab before clicking Save. The mapping reverts to the last saved version silently.

☐ A full dry-run has been completed. At least one Full + dry-run should be in the run history showing succeeded. If the last dry-run shows completed with errors, open the run item and triage the errors before proceeding.

One week out: staging verification

☐ Run the migration on a staging destination. Use a Shopify development store — free under a Shopify Partner account. Run a full (extract + transform + load) against the staging store with dry-run off. This is your dress rehearsal.

☐ Product count matches. Compare the product count on the source platform with the count on the staging Shopify store. A gap of more than a few records means errors in the run item that need investigating. Filter by errored in the run item to see which records failed and why.

☐ Redirect table is complete. In the source Search Console property, go to Performance → Pages → sort by clicks descending → Export as CSV. Take the top 200 URLs. Sample 50 at random. Hit each of those 50 on the staging Shopify store. Every one should 301 to a real product, collection, or page. Log any that 404 — these are your manual fix queue.

☐ Collections are intact. Browse a sample of collections on the staging store. Check that rule-based collections fire correctly and that parent/child nesting is preserved. For Magento sources, check that category-prefix URLs are redirecting to the new collection paths.

☐ Customer data is correct. Pick five customer accounts at random and open them on both the source and the staging Shopify store. Confirm name, email, billing address, and shipping address landed correctly. Check that order history is attached to the correct customer.

☐ Orders are intact. Pick five orders — including at least one refunded order and one from more than 12 months ago — and compare them side by side across source and destination. Line items, quantities, totals, and shipping lines should match. Tax lines may differ in format but should be equivalent in total.

☐ Images are loading. Browse a sample of product pages on the staging store. Confirm product images are loading from Shopify's CDN, not from the source store's domain. Graftport uploads images to Shopify's Files during the load phase; if images are still pointing at the source domain, the products mapping has an image URL issue.

☐ SEO spot-check. Open five product pages on the staging store. Confirm that the page title and meta description are populated and that they match the source records you configured in the mapping.

48 hours out: final dry-run and rollback readiness

☐ Run Extract only. Pull the latest source data one more time to capture any products, customers, or orders added in the past week. This gives you a fresh baseline for the go-live load.

☐ Run Transform only + dry-run. Apply the current mapping to the latest extract. Open the Data tab and confirm record counts and a sample of outputs look right. If anything looks wrong, edit the mapping and re-run transform + dry-run until the output is correct.

☐ Confirm the rollback path. Know in advance what you will do if the load fails mid-run. Graftport is idempotent — you can re-run safely — but have the source store's staging URL ready to flip traffic back to if something structural goes wrong on the destination. Brief the team on the signal for aborting and reverting DNS before you start.

☐ Search Console property is ready. Set up a domain-type Search Console property for the destination store's domain now. Verify ownership via DNS before go-live so you are not doing DNS changes in two directions at once on launch night.

Go-live hour: the run sequence

Follow this sequence exactly. Do not skip steps.

T −2 hours — Extract only (live source). Pull the source store's final state. This is the dataset your load will push to Shopify.

T −1 hour — Transform only + dry-run. Apply the mapping to the fresh extract. Confirm counts in the run item. No destination writes.

T 0 — Load only (no dry-run). Push the transformed records to the destination Shopify store. Most records are skipped (already loaded from the staging rehearsal); new orders and inventory changes since staging are first-loaded. A typical delta load on a prepared store takes a few minutes.

T +5 min — Verify the run. Open the run page. Every resource should show succeeded. If a resource shows completed with errors, open it, check whether the errored records are business-critical, and decide whether to fix and re-run or proceed and patch manually after launch.

T +10 min — Flip DNS. Point the domain to the destination Shopify store. The 301 redirects loaded during staging are already in place from the moment DNS resolves. Customers arriving at old URLs land on the right pages immediately.

T +30 min — Verify live store. Place a test order on the destination store. Complete it end to end: add to cart, enter shipping, use a test payment method, confirm order confirmation. Check that the order appears in Shopify Admin.

T +60 min — Submit the sitemap. In Search Console, go to Sitemaps and submit https://<your-domain.com>/sitemap.xml. Shopify generates a sitemap automatically. Submitting it on launch day shortens the re-crawl window.

First 48 hours: post-launch monitoring

☐ URL-inspect your top 20 ranking pages. In Search Console, open the URL Inspection tool, paste each of your top 20 organic URLs, and click Request indexing. This is the highest-leverage action you can take in week one — it tells Google to re-crawl these specific pages immediately rather than waiting for a scheduled crawl.

☐ Watch Coverage → Not found. Any URLs that 404 on the destination will show up here within 24–48 hours of DNS flip. Each one is a missed redirect. Add it manually in Shopify Admin → Online Store → Navigation → URL Redirects, or by editing the redirects mapping in Graftport and re-running the redirects resource.

☐ Watch Performance → Clicks and impressions. Most replatforms see a 10–20% click dip for the first week as Google re-processes the redirect chain, then recovery to baseline within two weeks. A larger or longer-lasting dip usually points to a redirect gap — go back to the Coverage report.

☐ Re-sync orders placed during DNS propagation. DNS propagation takes up to a few hours. Orders placed on the source store during this window are not in your pre-flip load. Run one more extract + load against the destination 24 hours after go-live to pick them up. Graftport's idempotency means the re-run touches only the new records.

What this checklist does not cover

Some items are outside Graftport's scope and need a separate workstream:

  • Shopify app reinstallation. Apps installed on the source store need reinstalling on the destination. Subscriptions, reviews, loyalty programmes, and any app that stored data separately from Shopify's native schema need their own migration.
  • Theme rebuild. Theme code is not migrated. The destination store needs a Shopify theme — either a fresh theme or a port of the source theme's customisations.
  • Payment provider setup. Payment providers need reconfiguring on the destination. For Shopify Payments, the merchant needs to connect their bank account on the destination store.
  • Email flows and automations. Post-purchase sequences, abandoned cart flows, and any email automation that references Shopify events need reconnecting on the destination.

Related reading

If the checklist is green across the board, you are ready to flip DNS. Sign in at app.graftport.com to start your migration and run your first dry-run at no cost.

Ready to migrate?

Connect a source store, dry-run a migration, see the exact Shopify result before a single record lands. The same platform your team will use on go-live night.

Get started See the calculator
Related guides
Using the Graftport CLI with Claude Code: install to first publish
Set up the Graftport CLI and migration-engineer skill in Claude Code, then drive a real Shopify migration through the validate and publish l
Human approval gates for AI Shopify migrations: the Graftport contract
Why an AI coding agent should never push to Shopify on its own, and how Graftport's two-tier CLI contract enforces a human gate on every cos
Automating JSONata Shopify mapping with an AI coding agent
How the Graftport CLI lets an AI agent investigate source rows, fix JSONata mapping errors against structured validation codes, and publish