Outrank AI

The usual advice for choosing a Shopify migration app starts with supported platforms, record counts, and a promise of an easy transfer. That's the wrong starting point. An importer can finish successfully while customers receive the wrong marketing status, subscription renewals stop, or your fulfillment system rejects new orders.
Judge the tool by operational parity and revenue continuity instead. Can your team prove that the new store runs the business correctly, and that customers can still find, buy, and receive products after launch? Import coverage matters, but it's only the entry requirement.
Table of Contents
What Shopify Migration Apps Move, Object by Object
A Shopify migration app moves store data from another platform or an old Shopify store into a new one through Shopify's import paths and APIs. The important distinction is between data Shopify can import natively and records that require a specialized migration workflow.
Shopify's migration guidance identifies products and customers as suitable for CSV imports, while other records generally require migration apps or custom API solutions. A product spreadsheet isn't a container for your entire business history.
Shopify data types and their migration route
Data type | Standard CSV import? | Typical route |
|---|---|---|
Products and variants | Yes | Native import; app for large or complex catalogs |
Customers | Yes | Native import; check consent fields separately |
Historical orders | No | App-mediated or API-based migration |
Transactions | No | App-mediated or API-based migration |
Gift cards | No | App-mediated or API-based migration |
Blog posts and pages | No | App-mediated or API-based migration |
Redirects, metadata and canonical tags | No, not handled by Shopify's migration app | Manual SEO work after import |
Products need more scrutiny than a successful upload message suggests. Check variant options, images, inventory references, and the relationships between parent products and sellable variants. For customers, importing an email address doesn't prove that marketing consent has retained its original meaning.
Historical orders, transactions, and gift cards need separate handling because they carry financial relationships, not just descriptive fields. Blog posts and pages also need their own route rather than being treated as catalog attachments.
What a credible importer does behind the button
Shopify APIs impose limits, so an importer should paginate reads, use bounded batches, and retry failed requests with backoff. It should checkpoint progress and make repeat writes safe, allowing an interrupted job to resume without creating duplicate records.
A source-to-target ID mapping is equally important. Keep the original identifier alongside the new Shopify identifier so your team can trace an imported order or update a product deterministically.
For stores connected to back-office systems, document the ownership rules through an ERP and ecommerce integration plan. Otherwise, a valid import can be overwritten by the next integration run.
Quick test: List every data type your current store holds, then assign each one an import route and a validation owner.
The table also exposes work outside the import itself. Treat redirects, metadata, and canonical behavior as a separate SEO deliverable, not an assumed benefit of moving content.
Choosing the Right Migration Path
Use an app when the migration is mostly standard data transfer and your team can own testing. Use an agency when the job includes custom sources, interconnected systems, or business logic that must be rebuilt.
Catalog size alone isn't the deciding factor. A straightforward catalog with clean identifiers can be easier to migrate than a smaller store with subscription rules, regional pricing, and an ERP controlling inventory.

Migration app versus agency migration
Factor | Migration app | Agency migration |
|---|---|---|
Best fit | Single store, standard data types, modest catalog | Complex stack, several systems, custom logic |
Cost model | Subscription plus internal staff time | Project fee, usually scoped by phase |
Validation | Self-run dashboards and reports | Partner-run parity audit and sign-off |
Custom data sources | Limited to supported connectors | Custom connectors, such as Salesforce |
Post-launch support | Vendor support channels | Ongoing development retainer when contracted |
Compare the work you retain, not just the invoice
An app subscription buys access to software. Your team still has to prepare exports, resolve malformed records, interpret errors, test integrations, and reconcile results.
A scoped agency project can assign those responsibilities to a delivery partner, but only if the agreement includes them. An import-only engagement doesn't automatically include analytics validation, SEO implementation, or launch support.
Ask for costs to be separated into data preparation, transfer, validation, cutover, and stabilization. That makes competing proposals comparable and exposes tasks that someone has left with your team.
At Presidio, we've managed over 25 migrations from Salesforce Commerce Cloud to Shopify Plus. A Salesforce Commerce Cloud store using a custom connector needs explicit field mapping and acceptance checks because its custom fields won't necessarily match a standard importer's schema.
We can also build a custom app that migrates up to 10 million XML product and variant records into Shopify programmatically. That's a capacity statement, not a reason to skip validation or assume every source structure is equivalent.
When specialist review earns its place
Subscriptions deserve particular attention because the migration affects future transactions, not just historical records. Eco baby brand HealthyBaby partnered with us to migrate from headless to Shopify and scale subscriptions, illustrating why the platform move and recurring-commerce requirements belong in the same scope.
An app can execute the transfer while a specialist owns the mapping, acceptance tests, and launch decision. Those aren't competing approaches.
I'd budget for an agency review whenever the scope includes a custom source, subscriptions, or ERP feeds, even if an app performs the import.
Put these actions on the calendar:
Inventory the work: Mark each data type with its transfer route and responsible owner.
Reduce the shortlist: Reject tools that can't demonstrate required coverage or usable validation.
Scope before importing: Bring the stack diagram and inventory to a planning call. Our project inquiry options include Migration to Shopify 2.0 and Platform Migration.
Before committing, require written rollback criteria and name the business owner who can approve cutover. Neither decision should be left to whoever happens to be watching the import dashboard.
Vetting a Migration App or Partner Before You Commit
Turn vendor claims into questions that require evidence. A polished demo doesn't establish that a tool can handle your source data, recover from interruptions, or produce a useful acceptance report.

Coverage and execution
Does the coverage list include every data type we hold? Request explicit answers for orders, gift cards, content, and custom fields, including the transfer route. A no means you need a documented secondary method before shortlisting.
Can an interrupted import resume safely? Request a demonstration of batches, retries, checkpoints, and duplicate prevention. Without it, don't approve an unattended production run.
Can we export the source-to-target ID mapping? A no makes troubleshooting and selective updates harder. Require an alternative traceability report or remove the tool from consideration.
Does validation go beyond completed-job counts? Expect monetary totals, inventory quantities, variant relationships, and consent-field comparisons. If those reports aren't available, assign and cost the reconciliation separately.
Accountability and commercial limits
Does the scope state what won't move? Exclusions should name SEO work and unsupported app data. An answer that claims everything transfers without qualifications needs a sample migration, not trust.
Is there a tested reversal procedure? Establish whether imported records can be removed or restored, what dependencies block reversal, and how long recovery takes. No procedure means no launch approval.
Is there evidence from the same source platform at comparable complexity? Review the actual mapping and validation approach, not just a logo. Without relevant evidence, require a representative pilot.
Are pricing limits explicit? Confirm how products, variants, customers, orders, reruns, and support affect the bill. If the vendor can't explain the billing unit, don't approve the purchase.
Our ecommerce migration case study is a useful starting point for evaluating delivery evidence. Apply the same standard to every candidate: identify the source, the difficult requirements, and how the team established acceptance.
A one-click interface isn't itself a red flag. A promise that one click resolves every data, integration, and SEO requirement is.
Keep the answers in a decision log with evidence attached. A verbal assurance is difficult to use when launch pressure arrives and the vendor's definition of completion differs from yours.
Proving the New Store Matches the Old One
The import report says success, but the store behaves differently. That's the failure a migration parity audit must catch before customers encounter it.
Matching record counts prove presence, not meaning. A customer can exist with incorrect consent, an order can have the right total but wrong line-item allocations, and inventory can appear under the wrong fulfillment location.
Shopify's enterprise migration guidance identifies risks including data corruption, incomplete app logic, integration failures, analytics gaps, and checkout edge cases. Those require operational testing, not another export count.

Check records and business behavior together
Parity audit checks by area
Area | Check before cutover |
|---|---|
Product counts, variants and options | Compare sampled products and variant structures record by record |
Customer consent and marketing status | Reconcile consent fields against source records |
Historical orders and line items | Reconcile totals and line-item sums for each order |
Discounts and gift card balances | Compare balances and discount rules on replayed orders |
Subscriptions and renewal schedules | Check next billing dates and plan mappings |
Tax behavior by market | Replay orders in each market and compare tax lines |
Fulfillment and inventory ownership | Confirm stock locations and fulfillment rules match |
Webhooks and analytics events | Confirm events fire and reach the analytics tool |
Third-party integrations such as ERP, PIM and OMS | Confirm each system reads and writes the same order data |
Choose samples deliberately. Include products with complex options, customers with different consent states, partially fulfilled orders, discounted purchases, and subscriptions with upcoming renewals.
For financial records, compare at record level rather than accepting a matching grand total. An overstatement on one order can cancel an understatement on another while both remain operationally wrong.
Test custom mappings on their own terms
We use a custom Salesforce connector to migrate all historical customer records to Shopify. That requires reconciliation against the connector's mapped fields, including fields a standard importer wouldn't recognize.
Say a source customer record includes a custom identifier used by the service team. If the customer imports but that identifier disappears, the migration hasn't preserved the support workflow. Test how staff retrieve the record, not just whether Shopify lists the customer.
The same principle applies to systems sharing ownership. Confirm which system controls stock, which can update customer details, and which receives fulfillment changes, then watch those exchanges during replayed orders.
Acceptance standard: Every unresolved difference needs an owner, a business impact assessment, and an explicit decision about whether it blocks launch.
Require a cutover evidence pack containing sampling results, record-level reconciliation, replayed order outcomes, and integration monitoring. Include written rollback criteria and business-owner sign-off.
The importer's completion report belongs in that pack. It shouldn't substitute for the pack.
How to Cut Over Without Losing Orders
Cutover is a controlled handoff between trading systems. The dangerous interval is when customers can still create records in the old store while your team treats an earlier export as final.
Assign a launch lead, an order-reconciliation owner, and an integration owner. Keep the old platform accessible until the team has accounted for activity around the switch.

Run the handoff in a fixed sequence
Freeze catalog, price, and discount edits before cutover. Set an agreed freeze window so the dataset your team tests remains stable through launch. The common mistake is allowing a merchandising edit in the source without recording that it needs another transfer.
Complete a dry-run import into a staging store. Use representative source data and save the mapping configuration that passes testing. Don't change transformations for production without rerunning the affected checks.
Load the approved dataset, then reconcile the delta. Import catalog and customer records, then transfer orders and customers created since the last full pass, along with relevant updates to existing records. Define the extraction boundary and duplicate-handling rules explicitly, because overlapping or missing windows create reconciliation problems.
Replay the checkout scenarios that matter to your business. Cover full-price, discounted, tax-exempt, multi-currency, and subscription purchases where applicable, following each through fulfillment. Stopping at the payment confirmation page misses downstream routing and inventory errors.
Write the rollback triggers before switching. Specify the order-failure threshold, missing-data threshold, and integration errors that justify reversal, with a named decision-maker. Also document how orders accepted by the new store would be handled during rollback, because reversing traffic doesn't reverse transactions.
Switch the domain connection and monitor live trading. Watch incoming orders, payment outcomes, webhooks, fulfillment acknowledgments, and checkout errors during the initial trading period. Don't treat a successful homepage load as proof that the buying journey works.
Close the handoff only after reconciliation
Keep a cutover log with timestamps, completed checks, exceptions, and decisions. It should let the support and operations teams distinguish an old-platform order from a new-platform order without guessing.
Watch for silent failures as well as visible errors. An order may reach Shopify while a warehouse acknowledgment never returns, leaving the customer with a confirmation but no fulfillment progress.
A clean cutover means orders are flowing, the monitored checkout paths have no unresolved errors, and integrations are reporting normally. Close the launch incident only when the responsible teams have reconciled the transition window and accepted any remaining exceptions.
Protecting SEO, Feeds and Tracking Through the Switch
A store can return no broken-page errors and still lose revenue. Paid ads can land on an unsuitable replacement page, shopping feeds can reference stale product URLs, and analytics can stop attributing purchases correctly.
Shopify's migration app doesn't handle redirects, metadata, or canonical tags; Shopify's store migration guidance describes separate SEO work, monitoring for 60 to 90 days, and keeping redirects active for at least a year. Build that work into launch acceptance rather than leaving it for cleanup.
Post-migration SEO and tracking timeline
Phase | Timing | Action |
|---|---|---|
Before import | Before cutover | Export a complete old-URL inventory |
Launch | Day of switch | Put one-to-one permanent redirects live |
Early checks | First weeks | Update sitemap and Search Console |
Ongoing monitoring | 60 to 90 days | Track traffic, feeds and conversions |
Redirect retention | At least 1 year | Keep permanent redirects active |
Test destinations and attribution before traffic moves
Map old URLs to relevant new destinations, not indiscriminately to the homepage. Use a Shopify redirect implementation plan to separate mapping decisions from technical deployment and catch unnecessary redirect chains.
Check Merchant Center product destinations and approval status, advertising landing pages, UTM parameters, email links, and affiliate deep links. Then place test purchases through tracked journeys and confirm the expected conversion events reach the correct analytics and advertising accounts.
For international stores, inspect market paths, hreflang, and canonical behavior on product and collection pages. A page resolving successfully doesn't establish that customers or search engines receive the intended regional version.
Measure revenue continuity, not just crawl health
Compare qualified traffic, feed approval, attributed revenue, and conversion reporting by channel and major market. Feed and paid-destination failures can affect sales before organic-search reports make the problem obvious, so don't wait for an SEO trend to investigate.
If your discovery reporting also includes AI-generated answers, Riff Analytics' guide to brand visibility in AI search offers a complementary monitoring resource. Keep that separate from the transactional checks that establish whether customers can buy.
Before approving the switch, complete this practical test list:
Crawl the inventory: Check old URLs against their intended new destinations.
Validate feeds: Confirm current URLs, product identifiers, and approval status.
Test tracked purchases: Verify events and attribution through each acquisition channel.
Inspect market paths: Confirm the intended regional pages and canonical signals resolve.
Presidio offers Shopify migration planning, data modeling, integration work, analytics validation, and launch support. Visit Presidio with your source platform, data inventory, and integration list to scope a migration around operational parity and post-launch revenue continuity, not just a completed import.









