Skip to main content
This article answers common questions about the installation, configuration, and use of the MoEngage Shopify integration—covering setup, identity, data sync, catalog, and event tracking.

Installation

To troubleshoot your account authentication, review the following question:
Newly generated API keys take up to 10 minutes to activate. Wait 10 minutes after you generate the key, and then retry authentication for the Shopify app. If the error persists, verify that you copied the full key with no leading or trailing spaces.
When you uninstall the Shopify public app, MoEngage schedules the deletion of your data and configuration, which can take up to 48 hours to complete. If you reinstall the app within that window, the Save Configuration button can remain disabled and the configuration stays stuck, so the webhook subscription is not recreated and events do not flow.To resolve this, either wait for the deletion to complete before reinstalling, or reset the configuration as follows:
  1. Uncheck all events and attributes.
  2. Click Save Configuration.
  3. Re-check all the events and attributes.
  4. Click Save Configuration again.

User Identity

To manage user profiles and identifiers, review the following questions:
User identifiers determine how MoEngage recognizes each user. You can select up to four identifiers, such as Shopify ID, email, and mobile number. When the same user visits your store from multiple devices, or when their Shopify customer record is updated, MoEngage merges their activity into a single profile if any of their identifier values match.
MoEngage always selects Shopify ID and selects Email and Mobile number by default. We recommend that you keep all three. Your selection must include at least one of Email or Mobile number.If you already use MoEngage with other systems, also consider the identifiers you use in those systems. For help, contact the support team or your account executive.
Yes. In addition to Shopify ID, email, and mobile number, you can select a custom property that uses a Shopify customer metafield of type single-line text, URL, ID, integer, or decimal. Select a metafield whose value is different for every customer.
Identifiers are locked after setupAfter you save the configuration, you cannot change your user identifiers. To change them later, contact the support team. Profile merges cannot be reversed.
Yes. You can select both, along with Shopify ID and up to one more identifier.
MoEngage sets up Identity Resolution for your workspace when you save the configuration for the first time. Identity Resolution can only be set up on a workspace with 1,000 users or fewer. Raise a support ticket, and then save the configuration again after the support team resolves it.
Stores that were integrated before multiple identifiers were available keep the identifier they selected during setup. You can save the configuration again to select additional user attributes and customer metafields without changing your identifier. To add Shopify ID or other identifiers, or to enable Identity Resolution for your workspace, contact the support team. For more information, refer to Existing Stores.
Before you select the mobile number as an identifier, you must make the following changes to your Shopify store:
  • The Shopify checkout flow does not collect a mobile number by default. Enable this from your store checkout settings before installation.
  • The default user signup and login flow also does not collect the mobile number. Implement custom login and signup flows to capture the user mobile number at these touchpoints.
If these changes are not made before you go live, you will see a high volume of anonymous profiles because MoEngage cannot assign a mobile number identifier to users who have not provided one.
No. MoEngage does not allow the shipping mobile number as an identifier. If a shipping mobile number were used as an identifier, data corruption occurs. A single user can place multiple orders with different shipping mobile numbers—each creates a separate profile in MoEngage, which breaks the single customer view and causes attribution errors.For example, a user Bob places an order with shipping number SM1—MoEngage creates a profile identified by SM1. Bob then places another order with shipping number SM2—MoEngage creates a second profile identified by SM2. On Shopify, you see one user with two orders. On MoEngage, you see two users with one order each. Abandoned cart campaigns fire incorrectly because SM1 fulfills the “Add to Cart” criteria but not “Order Placed”.The Mobile number attribute is populated only from the phone number on the customer’s Shopify account, never from the address.
MoEngage merges profiles only when the value of one of your user identifiers matches. If the same user visits your store from multiple devices but does not provide any of your identifiers at each touchpoint, MoEngage cannot merge those sessions and creates a separate profile for each.For example, if email is your only identifier and a user places two orders from different devices without entering their email during either checkout—by using only a mobile number—two separate profiles appear in MoEngage, both with the same mobile number but no matching identifier to trigger a merge. To reduce such duplicates, select both Email and Mobile number as identifiers.
This applies to stores that were integrated with a single identifier. This happens when the mobile number is not present in the user Shopify profile at the time the track event occurs. When MoEngage cannot find the selected identifier, it may fall back to the next available identifier. The most common cause is customers completing checkout without entering a phone number.To resolve this consistently, contact your Customer Success Manager or raise a support ticket requesting Identity Resolution enablement. With Identity Resolution enabled, MoEngage tracks users across multiple identifiers simultaneously, which prevents this fallback behavior.
When a user adds items to their cart without identified data (no email or phone number available), MoEngage uses the Shopify cart token as a temporary identifier to preserve abandoned cart event data.If you see a high volume of cart-token profiles, Identity Resolution is the recommended solution. Once enabled, MoEngage can merge these anonymous profiles with the identified profile when the user provides an email or phone number. Contact your Customer Success Manager or raise a support ticket to request enablement.

Identity Resolution

To unify user profiles from multiple sources, review the following questions:
Identity Resolution is a MoEngage feature that links user profiles from multiple sources into a single unified profile. Once it is enabled, MoEngage can recognize the same user using multiple identifiers—for example, both email and mobile number—rather than relying on a single value at every touchpoint. You can configure up to five identifiers per workspace.Without Identity Resolution, each user is tracked by a single identifier. When that identifier is absent, MoEngage creates a separate anonymous profile. Identity Resolution prevents duplicate profiles, resolves identity gaps from guest checkouts, and ensures campaign triggers fire correctly across your full user base.
For new integrations, MoEngage sets up Identity Resolution for your workspace when you save the configuration of the MoEngage app for the first time, using the user identifiers you selected.For stores that were integrated with a single identifier, contact your Customer Success Manager or raise a support ticket to request enablement. Once it is enabled, go to Settings > Data > Identity Resolution in your MoEngage dashboard to configure your identifiers and merge rules.
No. Profile merges are irreversible—once two profiles merge, you cannot unmerge them.
Review before you activateBefore you enable Identity Resolution, review your identifier configuration and merge rules carefully. You can request a merge report from the support team before activation—this documents every user merge action.

User and Order Backfill

To sync historical store data, review the following questions:
The historical data sync brings two types of data into MoEngage:
  • User profiles: All registered users available in your Shopify store at the time you run the synchronization, regardless of when those users were created.
  • Order data: Orders placed during the date range you select, ingested as individual Shopify—Order Placed events. Each event carries the original order date from Shopify as its timestamp.
Two common causes occur:
  • Identifier not present on user profiles: If the historical sync uses mobile number as the identifier and some existing user profiles on Shopify do not have a mobile number, those users and their order data cannot sync automatically. Contact our support team to arrange a manual upload.
  • The event retention period is shorter than the sync window: If your MoEngage event retention policy is shorter than the date range you try to sync, the sync is partial. You must increase the retention period for the Shopify—Order Placed event first, and then retry the sync.
Set event retention before you sync beyond 60 daysContact your Customer Success Manager or support to increase your event retention period before you start the sync. This cannot apply retroactively to a sync that has already run.
A standard sync for the last 60 days typically completes within 24 hours. An extended 2-year sync can take up to 48 hours.To confirm the sync completed correctly: wait at least a few hours after you start, and then open a user profile in MoEngage for a user you know who placed an order within your sync window. Check that the Shopify—Order Placed event appears with the correct original order date.
Check two things before you run the sync:
  • Make sure your MoEngage account does not have existing duplicate data. If user and event data are already present, the sync creates duplicates and causes data corruption.
  • Use a date range before your app install date. After installation, MoEngage automatically tracks new order data via webhooks and should already be available in your account.
If you request a synchronization window that is longer than your workspace’s event retention period, MoEngage syncs only the orders that fall within the retention window. MoEngage does not store orders outside that window, even if the system successfully retrieves them from Shopify.
Set event retention before syncing beyond 60 daysContact your Customer Success Manager or the MoEngage Support team to increase your event retention period before starting the synchronization. You cannot apply this change retroactively to a synchronization that has already run.

Catalog Sync

To synchronize your product catalog, review the following questions:
MoEngage fetches your full Shopify product catalog and syncs it into a new MoEngage catalog. This catalog is automatically created when you enable catalog sync in the app settings. The catalog is then available as a data source for product recommendation blocks, dynamic content in messages, and segmentation filters.
Enable Basic RecommendationsCatalog sync makes your product data available in MoEngage, but using it for personalization and product recommendations requires that you enable Basic Recommendations on your account.
After the first sync completes, MoEngage keeps the catalog up to date in real time. Price changes, flash sales, and inventory updates made in Shopify reflect in MoEngage without waiting for a scheduled refresh.
Real-time catalog sync is in early access.
MoEngage syncs only the products whose Shopify status is Active. If a product’s status changes from Active to any other value, MoEngage removes it from the catalog.
You define the catalog schema yourself on the Sync product catalog tab. MoEngage prefills a default mapping that covers Variation ID, Product ID, Link, Image Link, Vendor Name, SKU, Variation Title, Currency, Price, Quantity, Description, Created At, and Updated At.You can change the data type and Shopify source of any prefilled attribute, remove the ones you do not need, and map your own attributes, including your Shopify metafields. For more information, refer to Sync Your Product Catalog.
There are three common causes:
  • A catalog field contains inconsistent data types across products. For example, if the variant name field holds string values for some products and numeric values for others, MoEngage rejects the products with non-conforming field types. The sync completes without an error, but the products are silently excluded.
  • The products are not Active in Shopify. MoEngage syncs only Active products.
  • The attribute you marked as unique holds the same value for more than one item. MoEngage treats those items as one and keeps only the most recent values it receives for that identifier, so the earlier item does not appear.
To diagnose this, compare the total product count in MoEngage against your active product count in Shopify. If significantly fewer products appear, review your Shopify product data for fields with mixed data types—particularly variant name, SKU, and price. Correct the inconsistencies and re-trigger the sync.
Add the attribute on the Sync product catalog tab before you request the first sync. Under Add custom attributes, enter a name, select a data type, and click Add attribute, then map it to a Shopify source. Your Shopify metafields are available as sources.
You can add new custom attributes at any time, and MoEngage includes them in the next sync.The attributes already in the table, their data types, their Shopify sources, the unique identifier, and the catalog currency are fixed once the first sync completes successfully. Review your mapping before you request the first sync.

Event Tracking

To monitor automated events, review the following questions:
MoEngage automatically tracks all standard Shopify events for every store. Events are captured through a combination of the MoEngage Web SDK (for browser-side actions such as Product Viewed and Add to Cart) and Shopify Webhooks (for server-side signals such as Order Placed and Order Fulfilled).
Which event version to use in campaignsFor any event tracked by both the Web SDK and a Shopify Webhook—such as Add to Cart and Checkout Started—always use the Webhook version when you build segments or trigger campaigns. Webhook events are received directly from Shopify’s backend and are the more reliable signal. Using both versions of the same event in a single campaign causes conflicts.
Discrepancies often have several causes:
  • Count is lower in MoEngage: Shopify webhook delivery is not guaranteed. Webhook requests can occasionally be missed.
  • Count is higher in MoEngage: Shopify can send duplicate webhook events for the same order. MoEngage applies deduplication, but some duplicates may still be tracked.
Differences with other analytics tools are expected because each platform uses a different counting methodology. Shopify is the source of truth for MoEngage data.
Shopify counts Add to Cart as the number of sessions that result in cart creation. MoEngage counts the number of times the Add to Cart event fired, which includes multiple adds within a single session. Use the MoEngage count for campaign triggers and the Shopify count for conversion funnel benchmarking.
Product URL and image URL are not included in Shopify webhook payloads, so they are absent from webhook-based events, including Shopify — Add to Cart, Shopify — Checkout Started, and Shopify — Order Placed.To use product images or URLs in campaign personalization, use catalog enrichment at send time: set up your product catalog synchronization and reference catalog attributes in your message template. Alternatively, you can track these attributes directly by using custom SDK events.
All Web SDK based events are tracked automatically on the default Shopify themes. If your store uses custom store theme, or you have customised the default theme, such customisation may hinder in automatic tracking of default webSDK events on those pages/stores. Additional custom event tracking is required to track those events or you can continue to use the webhook based alternatives.
Shopify customer metafields can sync to user profiles. In the Configuration tab of the MoEngage app, add a custom user property and select the metafield as its Shopify source. The property name you enter is the name of the user attribute in the MoEngage dashboard. MoEngage updates the value when the customer is created or updated in Shopify.Customer metafields do not appear in event attributes. For more information, refer to Customer Metafields.
MoEngage syncs the total spend that Shopify reports for the customer. Shopify updates this value when an order is fully refunded. Partial refunds are not reflected until Shopify recalculates the total, and test orders are never included. For more information, refer to Shopify LTV.
For pre-checkout events, add the MoEngage Chrome plugin to your browser, and then perform the events again. If the plugin shows the events as tracked, then the track works—check that you look at the correct user profile.For checkout and post-checkout events, verify whether the event is tracked against a different profile by filtering on event attributes with your order ID, email, or mobile number.
First, use the MoEngage Chrome plugin to check whether the MoEngage SDK loads on your store. If the SDK is not detected:
  • Go to your Shopify admin, open the MoEngage app embed settings, and then un-save and re-save the app embed block. This re-triggers SDK injection.
  • If the SDK still does not load, check your browser console for JavaScript errors on the page.
If the SDK is loading correctly, events are still not flowing, perform the following steps:
  1. Open your event tracking settings in the MoEngage Shopify app.
  2. Uncheck a few events and save, and then re-check all events and save again.
  3. Wait 5 minutes, and then perform the events in your store.
To understand the setup and limitations of linking multiple storefronts, review the following question:
Yes, although MoEngage does not recommend this approach. If you want to link multiple stores, use the same authentication keys during installation across your different stores to link them to the same MoEngage account.Review the following implications before you proceed:
  • Web Push
    • The same user is prompted for separate web push permission on each store.
    • Users who subscribe to web push on multiple stores receive duplicate notifications if campaigns are not scoped to a specific store.
  • OSM (On-site Messaging)
    • Specify a target URL for each campaign. Without it, all stores display the same campaign including to users who visit multiple stores.
  • Data and Profiles
    • Use the same user identifiers across all stores to maintain a single customer view. Different identifiers per store result in multiple profiles for the same user.
  • Segmentation
    • Use either URL or store ID filters in the event attributes to identify the events for each store to isolate them when you build segments.