Heads Up, Store Owners! Shopify's New Customer Accounts Are Changing How You Handle Sign-Ins and Welcome Flows

Hey there, fellow store owners! Let's talk about something important that's been buzzing in the Shopify community. If you're running a store on Shopify and using their new customer accounts (which, let's be honest, is most of us these days!), there's a recent change that you absolutely need to be aware of. It affects how customer accounts are activated and, more importantly, how your apps and custom logic react to those activations.

I saw a really insightful discussion kick off recently from a community member, Adab01, and another expert, Daniel_Jude, chimed in with some crucial details. It highlighted a subtle but significant shift in how Shopify handles new customer sign-ins, especially concerning the Customer.state and the customers/enable webhook. This isn't just developer talk; it has real implications for things like your welcome email sequences, loyalty program enrollments, and CRM syncs.

The Big Shift: What's Changed with New Customer Accounts?

Before October 28th, 2026 (yes, that date is key!), if a customer signed up through the new customer accounts flow, their Customer.state often remained DISABLED. Even if they had an account, the customer.has_account Liquid field might have returned false, and crucially, the customers/enable webhook wasn't always triggered. This meant that any automated workflows you had set up to welcome new customers or enroll them in loyalty programs after they "enabled" their account might not have fired as expected.

Here's the deal now: Shopify has made a significant update. A customer's first sign-in to a new customer account will now automatically:

  • Set their Customer.state to ENABLED.
  • Send both the customers/enable and customers/update webhooks.

This applies to every authentication method – whether they sign in with an email one-time code, Shop, Google, Facebook, Apple, or any third-party identity provider. This is a much more consistent and intuitive flow, making sure that a customer's first interaction correctly signals their account's active status.

The "Backfill" Situation: Why You Can't Just Rely on Webhooks

This is where it gets a little tricky, and it's something Adab01 specifically highlighted. Shopify performed a one-time update to catch up existing customers. Any customer who had signed in at least once between May 27, 2024, and October 28, 2026, was silently updated to ENABLED. The key word here is silently. This means:

  • No customers/enable webhook was fired for these specific backfilled customers.
  • The updated_at timestamp wasn't reliably changed for all of them.

So, if your app or custom integration relies solely on receiving the customers/enable webhook to trigger actions (like sending that first welcome email or enrolling them in your loyalty program), those backfilled customers might have slipped through the cracks. They're enabled now, but your system never got the signal!

Customers who haven't signed in since before May 27, 2024, are still DISABLED. Their next sign-in will trigger the full new behavior – state transition, enable webhook, and update webhook – so those should be fine going forward.

What You Need to Check in Your Store (Actionable Steps!)

Given these changes, it's a really good idea to take a moment and review your customer-facing logic. Here's what the community discussion suggests you should look into:

1. Review Your Welcome & Loyalty Automation Triggers

If your app or custom code sends welcome emails, enrolls customers in loyalty programs, or performs CRM syncs based on the customers/enable webhook, ask yourself: Is the first sign-in the appropriate moment to trigger this? For many, it absolutely is, as it signifies active engagement. However, for some legacy setups, the "activation moment" might have been tied to a different event under classic accounts. Confirm this aligns with your desired customer journey.

2. Inspect Liquid Logic Using customer.has_account

If you have any Liquid code in your theme that uses the customer.has_account condition to display or hide content, you need to walk through those scenarios. Previously, for new customer accounts, this might have returned false even for customers who had technically created an account. Now, it will correctly evaluate to true once they've signed in. Make sure any conditional content that relied on the old behavior still makes sense or is updated.

3. Query Customer.state Directly for Accuracy

This is perhaps the most critical takeaway for developers and those integrating with Shopify's API. Daniel_Jude specifically pointed out that the state:ENABLED search filter on the customers query is only valid when Classic Customer Accounts are active. For new customer accounts, that filter won't work as you might expect.

Instead, the recommended approach is to query the Customer.state field directly. This ensures you're getting the most accurate, up-to-date status for your customers, especially for those backfilled accounts that didn't fire webhooks. Here's how you might do it with a bulk GraphQL query, as suggested:

{
  customers {
    edges {
      node {
        id
        state
      }
    }
  }
}

By querying the state field directly, you can reliably identify all ENABLED customers, regardless of whether a webhook was fired during the backfill period. This is crucial for ensuring your customer data is consistent and your automated processes are working for everyone.

Staying on top of these platform changes is just part of running a smooth e-commerce operation. Shopify is constantly evolving to improve the merchant and customer experience, and sometimes that means we need to adjust our own systems. Taking a few minutes to review your app integrations and Liquid logic around customer accounts will save you headaches down the road and ensure all your customers get the welcome they deserve!

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools