The vast majority of the work I’ve done over the last few years has been focused on migrating to Magento or Shopify Plus. At Vervaunt we tend to work with these more than any other platform because of the types of businesses we work with, as a result of our team’s experience and their general popularity. I personally have spent the majority of my career working in and around Magento and, more recently, that focus has shifted to be between these two platforms.
Having been involved in around 10 Magento – Shopify projects, I decided to write a broader guide on what needs to be considered and how the migration itself should be managed, with a focus on configuration, testing, general best practices for data structure, apps & third parties, payments and store structure (multi-store).
I’m using screenshots from Magento 2 implementations, however this guide is focused on migrating from Magento 1 or Magento 2 to Shopify Plus (or to Shopify, but some of the functionality will be based on Plus). If you have any questions on any of the areas covered, please feel free to email me ([email protected]) or contribute to the comments section at the end of this article. Liam Quinn, who recently joined Vervaunt as a Solution Architect, has also contributed to this piece – focusing on data migration and how Shopify Plus differs from a development perspective.
Over the last 2-3 years, there has been a huge increase in the number of retailers moving from Magento to Shopify and Shopify Plus, largely for the following reasons:
- The Magento 1 end of life caused users to review their options
- The Magento 2 platform has moved up-market
- Magento becoming more expensive
- Shopify’s low cost of ownership for a lot of relatively simple B2C brands and retailers
- Improvements to the Shopify Plus platform
- More businesses wanting to move to a SaaS platform
Magento is still a really powerful eCommerce platform (in fact more so than before), but it’s not suited to all levels of users anymore. Platforms such as Shopify Plus and BigCommerce now encompass a large portion of the market due to their compelling SaaS products, ideally suited mid-market retailers.
If you’re choosing between the two and are looking for a broader comparison piece, I wrote this Magento vs Shopify Plus guide.
Gymshark were one of the first reference cases for high volume merchants moving from Magento to Shopify Plus – which was marketed heavily by Shopify. Lots of others then followed including The NY Times, Finisterre, Chubbies, Bulletproof, Rebecca Minkoff, Victoria Beckham and lots more.
Very different platforms
As already mentioned, both of these platforms are scalable, have excellent eco-systems and countless case studies across most verticals – but they are essentially very different. Magento is provided either as a PaaS (platform-as-a-service – their cloud solution) or on-premise software, whereas Shopify is provided as a SaaS (software-as-a-service) solution.
Magento’s core offering is geared towards providing lots of native functionality that can be extended, whereas Shopify is focused on creating a more simple platform that can be extended via an eco-system of technology partners, but only in certain ways and places. In most cases, both represent good options – it’s just a case of doing due-diligence on where the change and compromise is, and then making a decision on whether that still works for your business, in both the short-term and long-term.
This guide covers some of the main differences from a functional perspective and how Shopify will work for some of these areas.
Approach & planning
As with any replatforming or migration project, moving from Magento to Shopify represents an opportunity to optimise and improve front-end elements, integrations and also data. I’m an advocate of migrating without redesigning generally, to simplify the scope and avoid deviation etc, but I know there are many reasons to combine projects (cost being a big one). In an ideal world, you should avoid changing too much in order to reduce SEO risk and keep the scope lean, but again, I know that there may be different priorities for different types of businesses.
Most Magento to Shopify migration projects take between three and six months, inclusive of discovery and UAT. I would recommend not rushing it and allowing time for proper planning and UAT, unless circumstances make that less viable. I have been involved in projects with~2 month timelines, but there’s always been compromise.
Prior to starting the project, I’d suggest building a good set of requirements, bringing onboard all key stakeholders, conducting due-diligence on agency partners and finalising a shortlist based on your requirements (beyond just price). Lastly, ensure you allocate sufficient time and resources within your business to manage the migration and guarantee its success. Content migration, signing off designs, testing, managing the agency etc, all require a big investment in time – so it’s important to think about this from the outset.
Our recommended approach to starting the project would be:
- Create a set of critical features / functionality you need
- Work with a carefully selected small number of Shopify Plus partners (or a consultant) to understand how these requirements will be met with Shopify / Shopify Plus
- Continue to do due-diligence on the partners you like the most
- Work with the one or two to better understand their approach and the specifics of the project, and then select one.
- Go into discovery with a good idea of cost (that you’re comfortable with)
Although Shopify is generally a relatively simple platform, migrating from Magento opens up many complexities and room for issues – don’t see this as a simple project, because it is unlikely to be. It’s also important to remember that Shopify isn’t a silver bullet, so there will be compromise along the way and you’ll generally uncover additional work and limitations throughout the project.
Data migration – Orders and customers
Before initiating the migration, determining exactly what data is relevant and necessary to carry over is really important.
As part of that initial plan, work with your SI to get a data-map produced of how all data is going to be stored against orders, customers and product. Shopify has a default set of fields, but anything custom aside from those (e.g. ‘date of birth’ for a customer) may need to be stored as tags / metafields, and dictated by naming conventions that are relevant to the site build. It’s important to know that the process of migrating data really isn’t so much technical as it is labour intensive. There’s a commonly used phrase of “garbage in – garbage out”, which in this case is so true. Ensure that you have dedicated manpower to checking and cleaning the data, ideally someone that has context; it always makes a big difference.
Migrating customer accounts from Magento to Shopify
The first step would be to export the existing Customer data from Magento, and then I’d recommend using the Shopify App ‘Excelify’ to help reformat it as required. At this point, you would want to refer back to that data-map documentation from the planning stage. The core Shopify fields will all be populated fine, but if you’ve any custom fields, they would need to be imported in a specific way, according to the initial plan.
One common area where I see issues appear is due to Shopify using email as a unique identifier per customer – which means a single customer account per email address. If you have any instances of multiple customers with the same email address (that tie-up with different names for example), this is where the manual labour comes in. You will need to make a decision as to which name will belong with that account. All data relating to the email address will belong with this account in Shopify. Luckily, Excelify allows what it calls a ‘dry run’ to test the data – and returns any errors or warnings before actually carrying out the import so you will see these instances occur, and whether you have rectified them successfully.
A final point to touch on is applicable if you are migrating to Shopify Plus and are using multi-store functionality to achieve internationalization. Depending on how your existing store has been set up, you may be looking to split your customer base by location, to populate a US store and an EU store for example. A separate import of the split customer-base into the relevant stores would be required here – but you could also consider Shopify Multipass, as a method to allow a single account to access (and have an order history across) multiple stores. This would be worth discussing with your SI, as it may require some work directly through the Shopify API to achieve.
Customer account activation
When you’re migrating customers to Shopify, it’s really important to remember that, because you’re not going to be able to migrate passwords, customers are going to have to reactivate their accounts. We recommend doing two things to ensure this is managed as well as it can be for the customer:
- Sending two activation emails post-migration – sending an email to customers with a reactivation link is the best option, which essentially means resetting their password. We recommend sending via ESP so you can send a second email to those customers who haven’t read the first email (as well as also having visibility around other metrics).
- Adding a reactivation link on the login page – we’d also recommend adding comms and a link to re-activate from the login page, as customers who haven’t re-activated won’t be able to login with their existing account details.
Migrating Orders from Magento to Shopify
It’s important to have successfully imported all of the customer data first, because the order data can then map to the accounts that they belong to. So be sure that has been checked over and verified before starting this stage.
For migrating orders, I’d recommend another Shopify App “E-Z Importer” which is completely dedicated to migrating & importing order data in bulk. The cost correlates to the number of order lines you are importing, so do your maths on this in advance – and also bear it in mind when making that very first business decision on how much of the legacy data it is worth carrying across. Once you have configured this app, it should very much be just a few clicks to map the correct fields together and then sit back while it does its thing. Again, while it’s not an exciting task – have that person with context of the data at hand to check over things and sanity check that they look right.
Product data structure – product attributes vs tags & metafields
One of the biggest differences between Shopify / Shopify Plus and Magento is how product data is structured; with Magento using product attributes (and attribute sets) with the ability to define the different scope and store different types of data; and Shopify primarily using a flat tagging structure. Shopify does also use metafields to bridge the gap, but it’s a very different way of working to Magento.
Overall, Shopify seems very basic in this area (and it is really), however, once you get used to it, it’s actually quite a nice way of working, and both agile and efficient. There’s just a big initial learning curve to moving from such a structured way of managing data to flat tagging. You also need to ensure you’re vigilant with tagging structures and someone enforces it, so it doesn’t get messy.
Tags are used across the Shopify platform (products, customers, orders etc) and they’re universally supported across the platform, apps and third parties – whereas metafields are used where tags don’t quite meet the need; an app and a browser extension are required in order to use them. I’ll come onto metafields shortly.
If you take a product for the average fashion retailer, you might have the following attributes and values:
- Ralph Lauren selected for brand
- Red selected for colour
- Jumper selected for product type
- Mens selected for gender
- Cashmere selected for material
- Polo Ralph Lauren selected for collection
In Shopify, these would need to be added manually as tags. The tags would look something like:
- Brand: ralph lauren
- Colour: red
- Product_type: jumper
- Gender: mens
- Material: cashmere
- Collection: polo ralph lauren
The example here would likely be a configurable product, and sizing would be assigned via simple products in Magento – this would be the same in Shopify with sizes added as variants. The above tags would then be used for filtering (prefix assigned to filter options), any on-page references, assignment to collections, data feeds etc. Here’s an example screenshot from Boost, which we generally suggest for filtering (very good app that has a lot of options and can be styled as needed etc).
You’re then able to set the tag configuration, to pull in values after the prefix (e.g. gender:).
Another area that could rely on tags would be any product recommendations. Most of our projects use NOSTO as a solution, however many simply add product IDs of related products as tags to add recommendations – whereas in Magento you’d simply select the products you want to use within the related products (or up-sells / cross-sells) section.
Tags could also be used for the following:
- Liquid logic to determine blocks and different forms of content shown on the front-end (e.g. Instagram carousel, related blog posts or a brand text block)
- Whether a product is used as a featured product
- Whether a product should be hidden from third parties
- Whether a product should be eligible for subscriptions
Metafields are used when the data being stored is more complex, as a key value pair, assets, a selection of pre-set options etc. Metafields are accessed via API and represent a good option for managing more complex data (they are able to store over 65,000 characters of text, whereas a tag is limited to a maximum of 255 characters) – although they don’t work as universally with third parties and apps and are often slower to work with generally.
In the screenshot above, we’re using metafields to store the fixed breadcrumb, the meta title and the meta description – allowing us to import these as part of a broader product import.
Configurable products vs variants in Shopify
Most Magento stores use configurable products to allow for different options to display on a single product page to a user, while still being stock manageable etc. A configurable product would be created and enriched as normal, but instead of adding pricing etc directly, you’d associate simple products as options (each with pricing etc) – e.g. size and colour.
The image above shows how variants are displayed in the back end. When you’re creating additional variants there are many additional fields that make them similar to products generally.
This is a nice and easy way of managing products and it allows for things like separate images, stock management, separate content, variant-specific promotions etc. This, along with some of the other product types we’ll come onto, are widely considered to be a strength for Magento.
In Shopify, this would be managed via variants. So you’d create the equivalent of the configurable product as a normal product (e.g. Ralph Lauren jumper) and then add size and colour variants within that product, as per the below screenshot.
These differences need to be factored in when determining the data migration strategy, and also how different things are managed, but ultimately it’s a good way to manage variants and it’s pretty scalable. Most things can be managed against variants (e.g. stock, SKU, images etc) and even things like shipping logic can allow for variant-specific rules.
Other product types – different ways of working
Magento natively offers support for a number of core product types, other commonly used ones being bundled products, grouped products and gift cards (these are the ones we’re going to focus on here). If you’re migrating these types of products from Magento to Shopify, they’re going to again work differently.
Grouped products can be replicated, but they’ll essentially be via a single product or page with content and buying options pulled through from other products. You’re essentially re-creating the parent-child option. I’ve done this with a client and it can actually work really well, as long as you don’t have too many products, making it harder to manage and more messy. In this scenario, you may want to consider a PIM or another system to support the management of the products.
Bundled products in Magento is a native feature, which works in a similar way to grouped products. Using Magento’s bundled products, you’re able to combine a series of simple products and sell as a bundle, with the option of providing a discount. You’re able to include configuration options in a bundle – allowing for things like size and colour of included items. In Shopify, you could choose to either create a new product and setup a BOM SKU in your ERP / OMS, or you could again create a workaround in the theme, as per this excellent example from Outdoor Voices. This would result in two items being added to cart, in this instance.
Shopify’s gift card product offering is fairly strong and operates like a normal product. One limitation for Shopify gift cards is that they aren’t delivered directly to the recipient, rather to the purchaser – which can be a bit annoying. That said, this can be fixed via development work or using an app (such as rise.ai).
SEO – losing flexibility in some areas
One of the most widely criticised areas of Shopify is how URL structure, which is locked down and cannot be changed unless you go down the headless route. The resulting changes and affects on SEO is worth understanding and planning for upfront.
Shopify’s products, collections and pages are all fixed to:
There are positives to this approach, but can cause frustration when migrating from another platform, as there’s definitely going to be many changes, meaning higher SEO risk. The same applies to separate stores too, so for example if your Magento store’s domain is website.com/uk/, website.com/us/, website.com/fr/ etc – you’re going to need to move these to:
- website.com (this would be the best option for the primary store)
With Magento, you have complete freedom over URL structure, including creating parent / child structures, so it’s quite a change when moving to Shopify.
Other frustrating things about SEO with Shopify include:
- Keeping things the same across different stores is harder, as they’re essentially completely independent
- Creating an optimal hreflang setup across the different stores is harder, for the same reason
- You’re unable to edit the robots.txt file
- Less control over dynamic pages from an SEO perspective
Overall, this can be managed, but prepare for compromise.
Payments – likely needing to move to Shopify Payments (at least in part)
Another big thing that’s going to change when moving from Magento to Shopify is around payments – with you likely moving from an existing payment provider like Sage Pay, Braintree or Adyen to Shopify Payments (assuming you’re eligible).
Shopify Payments is either a big pro or a big con, depending on eligibility and requirements. Shopify’s own payment option will inegrate seamlessly to your store and provides many built-in payment options – however, if ineligible, options for alternative gateways (that function optimally) are limited, and will cost you an additional 0.15% transaction fee.
If you have multiple stores, you’ll need to have a local bank and registered business in order to use Shopify Payments in those territories, otherwise, Stripe is a pretty good alternative (with additional transaction fees). Shopify is quite flexible with fees, if you can demonstrate that you’ll be losing money by moving to Shopify Payments (based on their default rates).
There’s no real difference in how things like refunds are managed – you have the option of using the API or giving people access to Shopify. Fraud handling may be slightly different – as there is no Kount or Third Man equivalent that Braintree and Sage Pay have, however you can create flows using Shopify’s fraud flagging or use a third party to support this. You now have the option of enabling and relying on 3d secure. In the US, merchants have the option of using Shopify’s new Fraud Protect solution.
International setup – moving away from multi-store
This is another pretty major difference between the two platforms – with Magento providing a very clean, platform-wide multi-store setup that allows for parent <> child setting of values in different areas. This makes managing the store far easier, with anything from shipping & tax to product data being able to use store-specific or global values.
With Shopify, currently, the stores operate independently, meaning you need to rely on cross-site syncing, third party systems or cloning of stores to manage data. This does sound worse than it is and it can be quite manageable, but it’s still a weakness of Shopify. Our average client would have 3-5 stores and use a combination of import / export (via something like Excelify), syncing (particularly across themes), third parties (e.g. NOSTO and Shogun which support publishing across multiple stores) and possibly a PIM (which is becoming more common). You can also use your ERP or OMS more effectively and look at data syncing solutions.
I wrote this piece on international with Shopify which covers this topic in a lot more detail.
Wholesale and B2B
If you’re looking at moving across a very basic wholesale function from your existing Magento store, you could look at the Shopify wholesale channel (available in Shopify Plus only). This channel allows for customer-level product availability, discounts and price lists – as well as things like draft orders and bulk ordering discounts. It’s not a bad thing to have to prove a concept, but it’s very basic and features a stripped-back theme that can’t be edited.
If you have more complex B2B functionality, Shopify in its current form isn’t likely to be the best solution – although you do have the option of using a separate store and replicating functionality via scripts, apps, liquid logic etc. I’ve seen this done and there is a lot you can do, but it’s not going to compete with Magento’s B2B suite, which is really powerful and natively supports relevant functions such as quoting, customer roles, purchasing limits etc. In my view this area is a weakness of Shopify, however, they are currently working on it (following the acquisition of Handshake).
If you’re migrating a B2B store / function, just be prepared to lose certain pieces of functionality (which may or may not be an issue).
Development with Shopify and Magento
Development between Magento and Shopify is quite a stark contrast and another area that will see a major difference. In terms of front-end work, Shopify, in its architecture and Liquid templating language, offers a much lower barrier to entry and a shorter time frame for developers to make changes. There are pros and cons to this of course, it means there are more low-level developers’ working on Shopify stores, which used to be the case with Magento, but not as much anymore. However, there are also positives, such as:
- More agility to move quickly with a new idea, or react to change the way a piece of functionality is working.
- Less coding hours spent on a project due to the more streamlined approach, so generally more cost-effective.
- More options to change the developers or development teams that you are working with – and more potential to grow an internal team for this.
In terms of back-end development, there’s a stigma with Shopify, that as a SaaS platform you either live with native functionality or install apps to provide necessary functions. But this really isn’t the case. Shopify have a really robust and well documented set of API’s that can be utilised to move & manipulate data. Using a custom-built piece of middleware, these API’s can be harnessed to move in/out of Shopify and connect that data to pretty much anything else that allows it.
Overall, Magento is far more extensible from a back-end perspective and there are very few limitations when it comes to customisation, but Shopify can surprise a lot of people on what can be achieved.
The hope for retailers moving to Shopify is that you won’t need a maintenance retainer and the time you spend on maintaining a Magento implementation will be significantly reduced. For your average implementation, this will be between £3k and £7k per month (in terms of fixing bugs, applying patches etc), with upgrades on top of that.
This is generally seen as one of the biggest wins for Shopify – assuming you’re sticking with the traditional approach, rather than going headless, which would then likely add some level of maintenance for the front-end systems.
If you have any questions around moving from Magento to Shopify or Shopify Plus feel free to email me or add to the comments below.