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.
User Identity
To manage user profiles and identifiers, review the following questions:
The unique user identifier setting determines whether the mobile number or email is used as the primary key to identify each user on the MoEngage dashboard. When the same user visits your store from multiple devices, MoEngage merges their activity into a single profile if the same unique identifier is present across all their devices and browsers.
By default, Shopify uses email to identify users. The right choice depends on your business: use the identifier your customers most likely provide at checkout, and whichever aligns with how you identify users across your other systems.
If you already use MoEngage, select the same unique identifier you currently use. If neither email nor mobile number matches your current setup, contact the support team or your account executive for help.
No, currently the setting is limited to mobile number or email. You must select one at the time of installation .
| info |
Selection is permanent after installation The identifier you select at setup applies permanently to your workspace. If you change the identifier later, you must reinstall the integration, which affects all existing user profiles. Choose the identifier that will most reliably be present for your customers at checkout. |
Not at the individual identifier setting level—you must select one at installation. However, when you enable Identity Resolution for your workspace, MoEngage recognizes the same user via multiple identifiers simultaneously. See the Identity Resolution section below for details.
Before you select the mobile number as your UID, 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 UID to users who have not provided a mobile number.
No. If you use a shipping mobile number as the UID, 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 with UID SM1. Bob then places another order with shipping number SM2—MoEngage creates a second profile with UID 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".
To avoid this miscommunication and data discrepancy, do not use the shipping mobile number as the UID.
MoEngage merges profiles only when their UID values match. If the same user visits your store from multiple devices but does not provide the UID attribute at each touchpoint, MoEngage cannot merge those sessions and creates a separate profile for each.
For example, if email is set as UID 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 UID to trigger a merge.
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 UID, 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.
Identity Resolution requires enablement by the MoEngage team before you can configure it. You cannot activate it from within the Shopify app or the MoEngage dashboard.
To request enablement, contact your Customer Success Manager or raise a support ticket. 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.
| warning |
Review before you activate Before 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:
- UID not present on user profiles: If you selected mobile number as the UID 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.
| warning |
Set event retention before you sync beyond 60 days Contact 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.
| warning |
Set event retention before syncing beyond 60 days Contact 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.
| info |
Enable Basic Recommendations Catalog 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. |
The catalog refreshes automatically once daily, between 8–10 AM IST.
| info |
Impact on time-sensitive campaigns Price changes, flash sales, or inventory updates made in Shopify do not reflect in MoEngage until the next daily sync. For campaigns where accuracy is critical, schedule sends after the 8–10 AM IST sync window completes. |
Each product variation ID is treated as a unique product identifier. Synced product attributes are Variation ID, product ID, Product title, image_link, Vendor Name, SKU, Variation Title, Currency, Price, Quantity, Status, Description, created_at, and updated_at. Product metafields and custom fields from third-party Shopify apps are not included in the default sync.
This occurs when a catalog field contains inconsistent data types across products. For example, if the "variation_title" field has 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.
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 variation_title, SKU, and price. Correct the inconsistencies and re-trigger the sync.
The product attributes are currently fixed. To request additional attributes, raise a feature request with your Customer Success Manager. You can also create a separate custom feed with the attributes you need and a sync frequency that suits your use case.
The list of synchronized product attributes is fixed. Product links are not available in the automated product feed. Catalog metafields are also not synced by default.
Additionally, each catalog item's unique identifier is the variation ID and cannot be customized to use SKU or another product field.
Event Tracking
To monitor automated events, review the following questions:
Based on your app settings, MoEngage automatically tracks the events you enabled. 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).
| info |
Which event version to use in campaigns For 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.
Fulfillment events (Order Delivered, Out for Delivery) are available via the Shopify webhook setup but are not enabled by default. Enablement requires a configuration step by the MoEngage team. Contact your Customer Success Manager or raise a support ticket to request this.
The Product Viewed event is tracked only via the default Shopify product page template. If your store uses custom product page templates, the event does not get triggered on those pages by default. Additional implementation is required to extend track to non-default templates.
Shopify customer metafields do not sync to user profiles and do not appear in event attributes by default. To pass metafield data to MoEngage, configure the metafields in Shopify:
- Public storefront access: If the metafield has public storefront access enabled, read it server-side in Shopify Liquid and pass it to MoEngage by using a user attribute call in your theme.
- No storefront access: If a third-party app creates the metafield, a server-side integration is required. Subscribe to the Shopify customers/update webhook, read the metafield value by using the Shopify Admin API, and then call the MoEngage Data API to update the user attribute.
| info |
For implementation details See the "Shopify customer metafields" section in the Events and User Data Tracking article for step-by-step guidance on both paths, and along with a liquid code example. |
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, check that the events are enabled for automated track in your app settings. 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:
- Open your event tracking settings in the MoEngage Shopify app.
- Uncheck a few events and save, and then re-check all events and save again.
- Wait 5 minutes, and then perform the events in your store.
Link Multiple Stores to a Single MoEngage Account
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 identifier 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.