In this article
  1. Classic customer accounts: how they worked
  2. New customer accounts: what changed
  3. What stays the same in the theme
  4. What to check before switching
  5. Custom data on the account page
  6. Should you switch now?
  7. The order status page

Shopify now has two versions of customer accounts: the classic accounts that themes have used for years, and the newer customer accounts that Shopify hosts itself. They look similar to a shopper, but for a store owner and a theme developer they work very differently. I build and migrate Shopify themes for a living as a freelance Shopify developer, and this is the summary I give clients who ask what changed and what they need to do.

This is a rewritten version of a tutorial that used to live on my old blog, updated for how accounts work today.

Classic customer accounts: how they worked

With classic accounts (Shopify now calls them legacy customer accounts), customers sign up with an email and a password. The login, registration, account, order and address pages are all part of your theme, built from Liquid templates in the customers/ folder: login, register, account, order, addresses, activate_account and reset_password.

Because those pages live in the theme, developers could change anything: the layout, extra fields, loyalty points on the account page, custom order history. Apps often injected code into these templates too. The downside was the same freedom: every theme handled accounts slightly differently, password resets were a common support issue, and features like B2B were hard to build on top.

New customer accounts: what changed

With new customer accounts, the account area is no longer part of the theme. Shopify hosts it and keeps it consistent across stores. The main differences:

  • No passwords. Customers enter their email and receive a one-time code to sign in. No more forgotten passwords.
  • Hosted by Shopify. The account and order pages are served by Shopify, not by your theme's customers/ templates. Those templates are simply not used when new accounts are on.
  • Branding in the editor, not in Liquid. You set the logo, colours and fonts in the checkout and accounts editor, so the account area matches the checkout.
  • Extensions instead of template edits. Extra content, such as loyalty points, a returns form or custom fields from metafields, is added with customer account UI extensions, which are built as apps.
  • Self-serve features. Customers can see orders, reorder, manage their profile and addresses, and, depending on your setup, request returns.
  • Required for some features. Shopify's B2B features and some newer account features only work with new customer accounts.

What stays the same in the theme

Most of the storefront still works the same way. The customer Liquid object is still available when a customer is signed in, so you can show a greeting or customer-specific content. The routes object still gives you the right URLs, and Shopify sends them to whichever account version the store uses. A header account link written like this works with both:

{%- if shop.customer_accounts_enabled -%}
  {%- if customer -%}
    <a href="{{ routes.account_url }}">{{ 'customer.account.title' | t }}</a>
  {%- else -%}
    <a href="{{ routes.account_login_url }}">{{ 'customer.log_in' | t }}</a>
  {%- endif -%}
{%- endif -%}

And a simple greeting still works anywhere on the storefront:

{%- if customer -%}
  <p class="welcome">Welcome back, {{ customer.first_name | escape }}</p>
{%- endif -%}

What no longer applies with new accounts are the customer_login and create_customer forms and anything built inside the customers/ templates, because those pages are never shown.

What to check before switching

Switching is done in the admin under Settings → Customer accounts. Before you change it on a live store, go through this list:

  1. Theme customisations. Open the customers/ templates and list anything custom: extra fields, loyalty widgets, custom order tables, tracking links. Each one needs a new home, usually an app extension or the order status page.
  2. Apps. Check every app that touched account pages (loyalty, wishlists, subscriptions, returns). Most popular apps now support new accounts through extensions, but confirm it and switch on their extension.
  3. Hard-coded links. Search the theme for /account and /account/login written as plain text, and replace them with the routes variables above.
  4. Branding. Set the logo, colours and fonts in the checkout and accounts editor so the account area doesn't look like a different shop.
  5. Notifications. Review the customer emails, because the sign-in flow no longer uses passwords and invitation emails read differently.
  6. Translations. If you sell in several languages, check the account pages in each one.
  7. Test. Sign in as a customer with a real past order. Check order history, addresses, reorder and any extension you added.

Custom data on the account page

The most common question I get is "where do my custom fields go now?". With classic accounts, developers often stored extra customer information in metafields and printed it in account.liquid. With new accounts, the customer data still lives in metafields, but it's shown and edited through a customer account UI extension. For a headless storefront, the Customer Account API gives secure access to the signed-in customer's orders and profile.

If the custom data was only decoration, it's often simpler to move it to the storefront itself, using the customer object on a normal theme page, and keep the account area standard.

Should you switch now?

For most stores, yes. Shopify treats classic accounts as legacy and is putting new account features into the new version, so it's better to move on your own schedule than in a hurry later. If your account pages are heavily customised, plan the move as a small project: audit, rebuild the custom parts as extensions or storefront sections, test on a development store or with the setting switched during a quiet period, then switch.

If you are also moving an old theme to Online Store 2.0, it's a good moment to handle both together. I did a similar 1.0 to 2.0 theme migration for OROS, which you can read about on my work page.

The order status page

With new customer accounts, the order status page that customers see after checkout is linked to their account, so they can move from one order to their full order history without signing in again. If you used to add tracking widgets or post-purchase content to the old order status page with scripts, check how your apps handle it now; Shopify has moved this to checkout and customer account extensions as well.