> ## Documentation Index
> Fetch the complete documentation index at: https://partner-integrations.voyado.com/llms.txt
> Use this file to discover all available pages before exploring further.

# New customer accounts

Shopify is deprecating *Legacy customer accounts* and replacing them with *New customer accounts*.

With this change, Shopify will no longer expose via the API whether a customer has an account.

This means:

* The `hasShopifyAccount` flag is no longer reliable or available
* It is *not possible* to distinguish account holders from guests in Voyado Engage
* You can no longer use account status to control **contact types** or segmentation

<Warning>
  This change is due to a platform limitation on Shopify's side, as account login is now handled via one-time codes and is not exposed externally.
</Warning>

## Recommended setup

To ensure consistency and maintain loyalty functionality, Voyado recommends the following setup:

<Steps>
  <Step title="Create all customers as Member">
    Configure the app to create all customers as type "Member":

    **Voyado Engage app → Settings → Customer Contact Type → “Create everyone as Member”**

    This ensures all customers can be included in loyalty programs and avoids incorrect contact type classification.
  </Step>

  <Step title="Use a consent to define loyalty membership">
    Since Shopify no longer provides account status, loyalty membership needs to be defined explicitly. Voyado recommends using a *consent field in Engage* to mark when a customer joins your loyalty program. This provides several key benefits:

    * **Traceability** - Track when a customer joined the loyalty program, including date and time
    * **Automation** - Trigger welcome flows, onboarding journeys, and personalized communication
    * **Structured data** - Store membership status in a consistent and reliable way
  </Step>
</Steps>

## Collecting loyalty membership

Since loyalty membership is defined using a consent in Engage, the next step is to decide how customers sign up. Here are the recommended options for collecting loyalty membership.

<AccordionGroup>
  <Accordion title="Using separate loyalty sign-up form">
    Create a **dedicated loyalty registration flow** outside of Shopify's native account system.

    How it works:

    * Create a custom sign-up form for loyalty membership
    * Collect required fields (e.g. name, email, marketing preferences)
    * Include a consent field to define loyalty membership
    * Send the data directly to Engage

    Benefits:

    * Full control over the registration experience
    * Clean and reliable data collection
    * Works independently of Shopify limitations
  </Accordion>

  <Accordion title="Using Onsite messaging (pop-ups & embedded forms)">
    If you are using the **Engage Onsite Messaging add-on**, you can capture loyalty members directly on-site.

    How it works:

    * Create pop-ups or embed minimized forms in Shopify
    * Trigger them based on behavior (e.g. time on site, login to My account page)
    * Collect:
      * Membership data
      * Consent for loyalty membership
    * Automatically mark users as loyalty members in Engage

    Benefits:

    * No dependency on Shopify account system
    * No coding required
    * Contextual and dynamic targeting
  </Accordion>

  <Accordion title="Not distinguishing between customer types">
    If you do not need to distinguish between different customer types, the integration can be used *as is*. This applies if:

    * You treat all customers equally, regardless of whether they have actively signed up for a loyalty program
    * You define loyalty based on other factors, such as newsletter subscription or purchase behavior (number of orders, spend)
    * Other engagement data available in Engage

    In these cases, there is no need to introduce a separate loyalty identifier, as segmentation can be handled using existing data in Engage.
  </Accordion>
</AccordionGroup>

## Showing loyalty data

Due to Shopify limitations, the **Engage theme app block** used to display loyalty data such as point balance, member level, promotions, and vouchers is not supported on the **New customer account** page. This is consistent with the current Shopify app documentation, which notes that the theme app block is not applicable for new customer accounts.

The block can still be used on other supported storefront pages outside of checkout and the customer account page. The **Checkout extension for promotions and vouchers** is not affected by this change.

### Customer account UI extensions

If you want to display loyalty data within Shopify's new customer account experience, one possible direction is to build a **Customer Account UI extension** in Shopify. Shopify supports extensions on customer account pages such as **Order index**, **Order status**, and **Profile** pages, which makes this a relevant path for merchants who want a more tailored account experience.

At a high level, this means:

* Creating a customer account extension in Shopify
* Connecting that extension to Engage APIs
* Fetching enriched customer and loyalty data
* Presenting that data in a way that fits your brand and account experience

A key benefit of this approach is flexibility. It gives merchants more control over the *design, content, and overall look and feel*, while still allowing loyalty data to be surfaced in the account experience.

Shopify's customer account extensions are designed for custom functionality in the account area, and Engage's "Get enriched profile" endpoint is specifically described as suitable for populating an e-commerce “My Pages” or other landing page with full customer profile data.

<Card title="Learn about customer account UI extensions" icon="right" horizontal href="https://shopify.dev/docs/api/customer-account-ui-extensions/latest/" />

### Which data can be shown

Using Engage's enriched profile API, merchants can retrieve a customer's profile data in a single request. For real-time updates of specific entities like promotions or reward points, merchants may need to use the corresponding entity endpoints directly.

<Card title="Learn about the enriched profile endpoint" icon="https://mintcdn.com/voyado-partners/0IxEIB2Y6a--gNYY/icons/developer-link.png?fit=max&auto=format&n=0IxEIB2Y6a--gNYY&q=85&s=36f1df27b0269657d842f3301d440083" horizontal href="https://developer.voyado.com/docs/contacts/identify-contact/get-enriched-profile" width="128" height="128" data-path="icons/developer-link.png" />

```text theme={null}
+-----------------------------+
|     Shopify Storefront      |
|  (Customer Account Pages)   |
+-------------+---------------+
              |
              | Customer Account UI Extension
              v
+-----------------------------+
|   Custom Account Extension  |
|  (UI + Logic controlled by  |
|         merchant)           |
+-------------+---------------+
              |
              | API request (customer identifier)
              v
+-----------------------------+
|     Voyado Engage API       |
|   (Enriched Profile API)    |
+-------------+---------------+
              |
              | Loyalty + profile data
              v
+-----------------------------+
|   Custom Account Extension  |
|  (renders loyalty data:     |
|   points, vouchers, etc.)   |
+-------------+---------------+
              |
              v
+-----------------------------+
|   Customer Account UI       |
| (Branded loyalty experience)|
+-----------------------------+
```

Here, loyalty data is fetched from Engage via API and rendered through a custom Shopify Customer Account UI extension, giving full control over the account experience.
