Shopify Customer Login Not Working? Here's Why It's Almost Never a Bug

By Milan Dhameliya · · 9 min read

When a shopper can't log in to your Shopify store, the cause is almost never Shopify being down — it's a verification code that never arrived, got blocked, or expired before they used it. Here's the actual list of causes for the passwordless customer accounts system, in the order to check them, and why Shopify's own troubleshooting guide won't help because it's written for your admin login, not your customers'.

When a customer tells you they can't log in to your Shopify store, the problem is almost never Shopify being down or your theme being broken — it's a verification code. New Shopify customer accounts don't use passwords anymore; they send a one-time code by email, and most "login not working" reports trace back to that code never arriving, landing in spam, or expiring before the customer typed it in. Check that before you touch a single setting.

You're probably reading the wrong troubleshooting guide

Search "shopify customer login not working" and most of what ranks is either Shopify's official login troubleshooting page or a third-party checklist that copies it. Both are written for your admin login — clearing browser cache, disabling extensions, checking for a VPN, resetting your own password. None of that applies to a shopper trying to sign in to their account on your storefront. Shopify's own guide says so directly: it scopes itself to store owner and staff sign-in, not customer accounts. If you've been telling frustrated customers to clear their cookies, that's advice for a different login system than the one they're actually stuck on.

How customer sign-in actually works now

Since Shopify deprecated legacy customer accounts on February 26, 2026 (covered in detail in our rebuild guide for stores still catching up on that migration), the default sign-in flow for every new store — and most migrated ones — is passwordless. A customer enters their email, Shopify emails them a one-time verification code, and they type it in to complete sign-in. There's no password to forget and no "forgot password" link, because there was never a password to begin with.

The code itself isn't fixed-length. Shopify sends a 6-digit code for a routine sign-in, but if it's been more than three months since the customer last signed in, it sends a 10-digit code instead — a detail that trips people up because they assume the longer code is an error and re-request a new one, which just restarts the same email-delivery problem rather than fixing it. If a customer says "the code Shopify sent me looks wrong," ask how long it's been since they last ordered before you assume anything is actually broken.

The real causes, in the order to check them

1. The code never arrived

This is the single most common report, and it's rarely your store's fault. Shopify has confirmed on its own support channels that some consumer and corporate email providers silently filter or block the automated verification email, with no bounce and no way for you to see it from your side. There's no delivery-log view for customer-account emails the way there is for order notifications, so you can't diagnose this from your admin — you can only tell the customer to check spam and promotions folders, and if they use a work email, ask their IT team whether transactional mail from Shopify's sending domain is being blocked.

2. The email or customer is flagged

Go to Customers in your admin and search for the customer by email. Merchants troubleshooting this on the Shopify Community have repeatedly traced repeated "no code arrived" reports back to the same pattern: several failed sign-in attempts in a row appear to get the email quietly flagged, after which Shopify keeps showing the "check your email" screen without actually sending another code. There's no banner or error that tells the customer this is happening — they just keep waiting for an email that isn't coming. If a customer has retried more than two or three times in a short window, that's worth ruling out before you blame their email provider.

3. The code expired, or they're using a stale one

Codes are single-use and time-limited. A customer who opens the email late, or who has two browser tabs open from two separate sign-in attempts, will often type in the code from the wrong (expired) email. The fix is always the same: close every open sign-in tab, request one fresh code, and use only that one.

4. A bookmarked or app-linked login page from before the migration

If your store still has a saved login link, a custom "sign in" button in an email flow, or a wishlist/loyalty app pointing at the old /account/login classic template, that link may no longer route where it used to after your accounts migration. This is the same breakage covered in our legacy customer accounts rebuild guide — anything that hardcoded the old login popup or template path needs to be re-pointed at the new accounts flow, not patched around.

5. The custom accounts domain isn't fully live

If you've set up a branded accounts domain (something like account.yourstore.com instead of the default accounts.shopify.com), check Settings > Domains for its status. A domain stuck in a pending or unverified state can produce an unstable or partially broken sign-in experience for some customers while working fine for others, depending on DNS propagation on their end. This is the one cause on this list that's actually a configuration issue rather than an email-delivery problem, and it's worth ruling out early if reports are inconsistent across customers rather than universal.

6. They originally signed up with Shop, Google, or Facebook — not email

New customer accounts supports more than the email-code flow: a customer can also create and sign back in using "Sign in with Shop" (automatic if they've ever used Shop Pay at checkout) or a connected Google or Facebook account, if you have those enabled. Telling a customer to "check your email for a code" when they originally signed up through one of those buttons sends them looking for something that was never going to arrive — they need to use the same sign-in method they started with, not switch to email mid-flow. If a customer insists they "never got an email" and also mentions Shop Pay, this is very often the actual answer, not a delivery failure.

How to reproduce it yourself before you reply to the ticket

Guessing which of the six causes above applies wastes a support reply. Instead, spend two minutes reproducing it with a spare inbox you control:

  1. Open your storefront in a private/incognito window and start the sign-in flow with an email address you can watch live (a Gmail address is fine — you're testing your store, not the customer's specific provider).
  2. Time how long the code email takes to arrive. Anything past two or three minutes is already unusual and worth noting in the ticket.
  3. Check whether it landed in the primary inbox, Promotions/Updates, or spam — this tells you what to actually tell the customer to search for, instead of a generic "check spam."
  4. Use the code once it arrives, then immediately try the flow a second time in another private window to see whether a second request behaves differently (this is how you catch cause #2 — a flagged account after repeated attempts — without waiting for a real customer to trigger it).

If your own test comes through clean and fast, the problem is very likely specific to the customer's email provider (cause #1) or account history (causes #2 and #6), not your store configuration — which changes what you tell them next.

What to actually check, in your admin, in order

When "requiring login" is itself the problem

Sometimes the right fix isn't fixing the login flow — it's not requiring login for a specific interaction in the first place. If you sell into the EU, Shopify's native self-serve returns run through Customer Accounts, which means a customer who can't sign in also can't exercise their statutory withdrawal rights. As covered in our breakdown of the EU withdrawal button requirement, EU consumer law requires a login-free way to cancel a purchase — so if login trouble is showing up specifically around returns or cancellations from EU customers, that's a compliance gap, not just a support ticket.

When this needs more than a support reply

Most of what's above is a five-minute admin check. It stops being that when the pattern is a custom accounts domain with intermittent DNS issues, a headless storefront still calling deprecated Storefront API customer mutations, or an SSO/Multipass integration built for the old password-based session model that was never re-validated against the current Customer Account API. Those are integration problems, not support-desk problems, and they tend to resurface for every new customer until someone actually rebuilds the connection rather than working around it case by case. If that's what you're looking at, this is the kind of Shopify implementation work we do — get in touch through our contact page and we'll tell you plainly whether it's a quick fix or a real project.

Most login reports, though, are simpler than they feel in the moment: a code stuck in spam, a customer on their third retry within a flagged window, or a stale tab with an expired code. Work through the list above before you assume anything is actually broken.