You can integrate your Shopify store with Emarsys by using our Shopify app, which does the hard work for you. Just a few mouse clicks, and it connects your store and automatically syncs customers, events and orders to Emarsys. Then you will be able to use your Shopify data in Emarsys for creating smart contact segments, personalizing your messages, building event-based programs and automating retention marketing.
After setting up the Emarsys plug-in, you can install our Web Extend data collection scripts on your store which will allow you to deliver personalized product recommendations in emails or to track revenue from your campaigns.
Please consider the following about product recommendations:
- Predict can calculate the recommendations by using the data coming from the Emarsys plug-in.
- The Emarsys plug-in does not have an editor with which you can modify the recommendation widgets.
- The Email Recommender is part of the Visual Content Editor. You can easily create your Email Recommender by following the instructions in Adding recommendation to your emails.
- If you would like to use the Web Recommender, then you need to add the Web Recommender template to your webshop manually.
Here you will find all the information you need to set up and work with the Emarsys for Shopify integration.
- Regular upload of all customer data fields from Shopify to Emarsys.
- Sync of contact opt-in data from Emarsys to Shopify (
accepts marketing
field in Shopify) in near real time. - Automated triggering of Shopify e-commerce events as external events in Emarsys.
- Automated upload of all product data from Shopify to Emarsys.
- Automated upload of all order data from Shopify to Emarsys.
- Automated installation of the Web Extend data collection scripts on your Shopify themes.
- The Emarsys Set contact data node can be used in any of your Shopify Flow programs.
Note that 3rd party plug-ins may change the default behavior of the store. Emarsys cannot guarantee compatibility with other plug-ins, such as a custom payment provider that tracks data differently, and may prevent purchase information from being synchronized. Before installing a new plug-in, we recommend contacting Emarsys support.
You can see in the following architecture overview how data is synchronized from Shopify to Emarsys via the Emarsys plug-in.
How often is data synchronized from Shopify to Emarsys?
Data is synced from Shopify to Emarsys in near real time similar to contact changes and updates.
Only the opt-in data is synced from Emarsys to Shopify. Opt-in data is synced in near real time unless there are connection-related issues. After an opt-in change, Emarsys triggers a Shopify webshop update instantly. In most cases, it takes 1-2 minutes. In case of a webshop outage or if your connection speed appears to be slow, the sync might take longer. If Emarsys cannot update the opt-in data on your end, then the following happens:
1. After a couple of retries (after a few minutes), the change request is put into the queue.
2. The change request stays in the queue for 60 minutes.
3. After 60 minutes, Emarsys initiates the update again.
4. This cycle is repeated for 24 hours (it starts when the opt-in change is received in Emarsys).
5. If Emarsys cannot update your webshop within 24 hours, then the opt-in change will be discarded.
Data is synchronized from Shopify to Emarsys as follows:
- The following data types are synced in real time:
- Customer data: Customer standard fields and metafields
- Order data
- Web behavior data
- The following data types are synced each hour:
- Product data
Emarsys may process different data types with a varying frequency (e.g. Smart Insight synchronizes the updates on a daily basis).
Webhooks
After installing the Emarsys plug-in, you will subscribe to all the webhooks. The webhooks are also required to use the Shopify Tactics. You can use the webhook event content to:
- Send transactional marketing messages,
- Personalize them and
- Build Interactions programs (alternatively, Automation Center programs).
- A Shopify or Shopify Plus store.
- A fully set up and working Emarsys Marketing Platform account, especially the following:
- An Emarsys merchant ID.
- Emarsys API credentials for authentication.
- All of the above should already have been set up as part of your standard Emarsys onboarding. If you are missing any of them, please contact Emarsys Support.
- You will only be able to track revenue from email campaigns if you have an enterprise-level Shopify Plus subscription, due to the limitations that come with the standard packages.
- If you have more than one Shopify store, you will need to map each one to a separate Emarsys account.
Before you start:
- When you enable customer data synchronization and set up contact field matching, then please consider the following: Our Shopify app will import your Shopify contact data to Emarsys and overwrite any existing values. If you already have contacts in your Emarsys account and you would like to make sure that the details of these contacts will not be lost, before installing the Shopify app, we recommend exporting your initial Emarsys contact database and importing it to Shopify. Please consult Emarsys Support or the Implementation Team before performing an initial contact import so that we can help you to protect any critical data that has been collected in Emarsys, such as opt-in status or contact details.
- If the app is already installed on your store, the installation will be cancelled and you will be redirected back to this page.
- You can exclude certain contacts from synchronization (at contact creation and update in Emarsys) by adding the
emarsys_ignore
tag to the specific contact in your Shopify store. Please consider the following:- Contacts with the
emarsys_ingore
tag will not be synchronized during the initial import. - If a contact already exists in your Emarsys account (e.g. the contact was created manually), then no further updates will take place.
- The contact’s opt-in data will still be synchronized from Emarsys to Shopify (e.g. if a historical contact unsubscribes from a newsletter).
- Emarsys will fetch all standard Shopify Flow events based on webhooks and contacts with the
emarsys_ignore
tag may be created with just an email address (without any opt-in data) in order to send transactional messages to them. - The
emarsys_ignore
tag does not affect order synchronisation. Orders made by contacts labeled with this tag will be processed and they will not be identified in Smart Insight.
- Contacts with the
1. To install the Emarsys module in Shopify, enter the URL of your webshop (without the http:// or https:// prefix) into the field below and click Go.
2. This will take you to your Shopify store.
3. Log in and click the Install unlisted app button in the bottom right corner.

4. You will now see the app listed on the Shopify Apps page.
1. Connecting your Shopify store to Emarsys
1. On the Apps page, click the app link to open the app dashboard.
Here you can see a number of boxes, each representing an integration step. The vertical alignment of the boxes indicates the recommended order of the steps you must complete, so you should ideally start with the top box and work your way down.
2. Click Connect in the topmost box, and then enter your Emarsys API username and Emarsys API secret, then click Connect.
- You should already have your API credentials as an API user should have been created as part of your standard Emarsys onboarding. Your technical specialist should know where you store this information.
- If you cannot find your existing API username and secret, or if you do not have any, create a new API user.

2. Uploading Shopify Customer data to Emarsys
1. In the Customers section, click Enable to turn on the regular upload of your Shopify customers to the Emarsys contact database. This will enable you to make use of your Shopify data in your marketing campaigns.
The progress of the initial upload is tracked in the Upload status pane. When it is finished a Live flag will be displayed on the left.
2. After the initial upload of your customer data, you will be able to modify the default field mapping. In the Field matching section you can choose which fields to map between Shopify and Emarsys:
- To modify the default field mapping, click Edit field matching.
- To check the default field mapping, click Show field matching.
In the Default matching section you can match each Shopify customer field with a field in your Emarsys contact database.
For more information on limitations related to field matching and data synchronization, see Field matching and data synchronization.
- When you enable customer sync for the first time, the app will pull all your Shopify customers and push them to your Emarsys account.
- By default, the
email
field will be used as the external key to match with your Emarsys contacts. Please note that theShopify ID
field is not supported. - If you already have contacts in your Emarsys account, make sure that the identification you are using is correct.
- Please consider the following regarding the
Created At
andUpdated At
Shopify standard date fields:- These fields are mapped and synced automatically to Emarsys:
-
Created At
->Shopify Created At
-
Updated At
->Shopify Updated At
-
- We do not recommend removing these fields from the Field matching page.
- If you started to synchronize customer data from Shopify to Emarsys before 7 September 2020, then you need to manually trigger the initial sync by editing and saving the Field matching settings, so that this date will be synced for those contacts who were created before 7 September 2020.
- We recommend using the field
Shopify Created At
instead of the fielddate of registration
(i.e. the date when contacts were created) especially in the Smart Insight Settings.
- These fields are mapped and synced automatically to Emarsys:

3. To match Shopify metafields to Emarsys custom fields, proceed to Matching Shopify metafields to Emarsys custom fields.
Matching Shopify metafields to Emarsys custom fields
In order to enhance segmentation and personalization, you can match the metafields in Shopify to Emarsys custom fields under Customizable matching.
For more information on limitations related to field matching and data synchronization, see Field matching and data synchronization.
A typical use case for using custom fields is, for example, when you would like to add customer preferences to your contact data, such as favorite color, size or favorite brand.
- If you need any further assistance, please either raise a Support ticket or contact your Client Success Manager.
- You have to wait until all your customers are uploaded to Emarsys before you can start uploading your Shopify events, products and orders, or install our web behavior tracking scripts. This may take up to a few hours, depending on the size of your customer database.
Here you can:
- Add a new field by clicking Add Field.
- Add a new metafield by clicking Add Metafield.
When you are ready, click Save & Close.
Please note that when you click Save & Close, this dialog will close and we will upload your customers to Emarsys. The time needed for the complete synchronization depends on the size of your customer database.
Field matching and data synchronization
Take the following into consideration when matching fields and synchronizing data from Shopify to Emarsys:
- You can match Shopify fields and metafields to Emarsys text fields without any limitations.
Please note that there are short text
and long text
fields in Emarsys, make sure you choose the right type when matching fields. For more information, see sections Emarsys System Fields and their IDs and E-commerce fields.
- The Emarsys Shopify plug-in supports synchronization of whole and decimal numbers (which are separated by a decimal point), for example:
10
or10.2
. Using other formats or characters may result in synchronization and segmentation issues. - You can only map Shopify date metafields to custom Emarsys date fields (please do not use the Emarsys
date of birth
orbirth date of partner
standard field in this case) by using the following formats:- YYYY-MM-DD
- YYYY-MM-DD hh:mm
- YYYY-MM-DD hh:mm:ss
- Currently, you cannot map Shopify fields and metafields to Emarsys single- or multiple-choice fields. In this case, match such fields to Emarsys text fields.
Please note that these fields are case sensitive when creating segments.
3. Synchronizing Shopify Events (webhooks) to Emarsys in real time
In the Events section, click Enable to make your Shopify events (i.e. user interactions in your store such as customer registration) available in the Emarsys Marketing Platform.
4. Uploading Shopify Product data to Emarsys
To turn on the regular upload of your product data to Emarsys, click Enable in the Products section.
With this information at your disposal, you will be able to target specific customer segments on the basis of which products they bought, viewed or left in their shopping carts, or send them tailor-made product recommendations.
If you need to have a preview of the Emarsys product feed, please contact Emarsys Support.
5. Uploading Shopify Orders to Emarsys
If Smart Insight is activated in your account, then you do not need to regularly upload your orders to Emarsys.
To turn on the regular upload of your orders to Emarsys, click Enable in the Orders section. This information is essential for Emarsys features such as revenue reporting or product affinity models.
- When you enable orders sync for the first time, the app will pull the full history of your orders and push it to Emarsys.
- By default, the
email
field will be used as the external key to match with your Emarsys contacts.
6. Setting up Web behavior tracking
Our Web Extend scripts track visitor interactions on your website and process this information to serve validated data to various Emarsys applications, such as Smart Insight, Predict, Interactions or the Automation Center. The app will install them automatically for you.
The Emarsys plug-in installs the Web Extend data collection scripts on your website once. After making changes, you have to install the scripts again.
If you are not a Shopify Plus customer, you will need to manually implement the Web Extend data collection scripts into the code of your checkout page as standard Shopify packages do not allow users to modify the template of the checkout page.
To add the script to the page, log in to your Shopify admin, go to Settings > Checkout > Additional Scripts, copy the following code and paste it into the text box:
- You can always test the data collection scripts on a test theme that is not live in your web store.
- Whenever you start using a new theme, make sure you add the scripts to it.
- Currently, the dashboard does not give any indication of whether the scripts are already installed on the listed themes. Please keep track of which theme already has them. But do not worry; you cannot break the integration if you add the scripts to a theme which already has them.
Code snippet
The placeholders in the code snippet below should be replaced as follows:
- #MERCHANT_ID# - Replace this placeholder with your Predict Merchant ID. You can find your Merchant ID on the Predict Data Sources page.
- #CONTACT_IDENTIFIER# - Replace this placeholder with email or in rare cases, with ID depending on whether you use the Shopify (customer) ID or the email address as the external identifier for contacts.
- #SET_CONTACT_IDENTIFIER# - Replace this placeholder with setEmail if the external ID (please see #CONTACT_IDENTIFIER#) is the email address or with setCustomerId if the external ID is Shopify (customer) ID.
<script type="text/javascript" id="scarab-queue">
var ScarabQueue = ScarabQueue || [];
(function(id) {
if (document.getElementById(id)) return;
var js = document.createElement('script'); js.id = id;
js.src = '//cdn.scarabresearch.com/js/#MERCHANT_ID#/scarab-v2.js';
var fs = document.getElementsByTagName('script')[0];
fs.parentNode.insertBefore(js, fs);
})('scarab-js-api');
</script>
<script id="scarab-cart">
var cartItems = [];
{% if checkout.line_items %}
if (Shopify && Shopify.Checkout && Shopify.Checkout.step !== 'thank_you') {
cartItems = [
{% for item in checkout.line_items %}
{item: '{{item.variant_id}}', price: {{ item.line_price | divided_by: 100.00 }}, quantity: {{item.quantity}}}{% if forloop.last == false %},{% endif %}
{% endfor %}
];
}
{% else %}
{% if cart.items %}
cartItems = [
{% for item in cart.items %}
{item: '{{item.variant_id}}', price: {{ item.line_price | divided_by: 100.00 }}, quantity: {{item.quantity}}}{% if forloop.last == false %},{% endif %}
{% endfor %}
];
{% endif %}
{% endif %}
ScarabQueue.push(['cart', cartItems]);
</script>
<script type="text/javascript" id="scarab-purchase">
{% if checkout.order.financial_status == 'paid' or checkout.order.financial_status == 'authorized' %}
(function() {
{% assign orderTotalNum = checkout.subtotal_price | plus: checkout.discounts_amount %}
{% assign orderTotalNumFloat = orderTotalNum | times: 1.0 %}
{% assign discountPerc = checkout.discounts_amount | divided_by: orderTotalNumFloat | times: 100.0 %}
{% assign orderCreatedAt = checkout.order.created_at | date: '%s' %}
{% assign nowTimestamp = 'now' | date: '%s' %}
{% assign orderAge = nowTimestamp | minus: orderCreatedAt %}
var orderStorageKey = "scarab_order_number";
var orderAgeTimeLimit = 20;
if ({{ orderAge }} < orderAgeTimeLimit && !hasOrderSent({{ checkout.order_number }})) {
ScarabQueue.push(['purchase', {
orderId: {{ checkout.order_id }},
items: [
{% for item in checkout.line_items %}
{% assign discountLineItem = item.line_price | times: discountPerc | divided_by: 100.0 | round: 2 %}
{item: {{item.variant_id}}, price: {{ item.line_price | minus: discountLineItem | divided_by: 100.0 }}, quantity: {{item.quantity}}}{% if forloop.last == false %},{% endif %}
{% endfor %}
]
}]);
setOrderSent({{checkout.order_number}});
}
function hasOrderSent(orderId) {
return localStorage.getItem(orderStorageKey) >= orderId;
};
function setOrderSent(orderId) {
localStorage.setItem(orderStorageKey, orderId);
}
})();
{% endif %}
</script>
<script id="scarab-go">
{% if customer.#CONTACT_IDENTIFIER# %}
ScarabQueue.push(['#SET_CONTACT_IDENTIFIER#','{{customer.#CONTACT_IDENTIFIER#}}']);
{%else%}
{% if checkout.customer.#CONTACT_IDENTIFIER# %}
ScarabQueue.push(['#SET_CONTACT_IDENTIFIER#','{{checkout.customer.#CONTACT_IDENTIFIER#}}']);
{%endif%}
{%endif%}
ScarabQueue.push(['go']);
</script>
Events
You can use your Shopify events that are available in Emarsys to:
- send transactional marketing messages,
- personalize your message content and
- build Interactions programs (alternatively, Automation Center programs).
Shopify events in Interactions
You can use all Shopify events that are available as External events in Emarsys in your Interactions programs. All Shopify events are automatically linked to Interactions.
Besides sending Triggered Emails (by using the Send email node), you can also leverage all your events and use all the available channels supported by Interactions (currently, email, SMS, Push notification, In-app, CRM Ads and Web Channel) with the Shopify event trigger.
You can set any Shopify event to trigger your program and all events will be available in the Decision, Decision splitter and Wait for event nodes.
For more information, see Creating an Interactions program using the Shopify trigger.
Webhooks
You can use the data included in the following webhook events:
To check the data included in a webhook response, visit the Webhook page and click View response under the specific event.
- Customer Registration
- Order
- Order by New Customer
- Order by Recurring Customer
- Fulfillments Created
- Fulfillments Updated
- Fulfillment Events Created
- Fulfillment Events Deleted
- Order Paid
- Order Cancelled
- Order Fulfilled
- Order Partially Fulfilled
- Order Updated
- Refund
Typical use cases
- Order confirmation: You can send various order status updates (depending on your available events).
- Marketing:
- You can combine any event and use them in your messages.
- Events (especially the order-related ones) contain valuable pieces of information that are also available for personalization.
- Order events: Besides sending transactional notifications, you can also use these events to trigger post-purchase messages in real time, so you do not need to wait until the
predict last purchase xyz
field is updated.
Shopify Flow support
You can use the Emarsys nodes in any of your Shopify Flow programs. With Shopify Flow programs, you can automate processes related to your store such as tagging your clients or sending reminders.
- For more information, see Emarsys nodes in Shopify Flow.
- For more information on Shopify Flow, see the following pages:
Shopify Tactics
The Shopify Tactics listed below are currently on Pilot release for a limited number of clients only. If you are interested in participating in the Pilot phase, please speak to your Success Manager.
You can find more information about the available Shopify Tactics here:
- Shopify: Welcome
- Shopify: Post-purchase Upsell
- Shopify: Post-purchase Cross-sell
- Shopify: Post-purchase Category Cross-sell
- Shopify: Post-purchase Feedback
- Shopify: Registration Confirmation - Transactional
- Shopify: Fulfillment Confirmation - Transactional
- Shopify: Order Confirmation - Transactional
- Shopify: Order Refund - Transactional
- Shopify: Order Cancellation - Transactional
You can find more information about the available Shopify Flow Tactics here:
- Shopify Flow: Wishlist price drop
- Shopify Flow: Wishlist back in stock
- Shopify Flow: Wishlist reminder
- Shopify Flow: Refer a friend
- Shopify Flow: Post-purchase good product review
- Shopify Flow: Post-purchase bad product review
The following Abandoned Tactics are available in your Emarsys account with Shopify:
You can make sure that your Shopify plug-in is working properly by following the instructions described in Quality check of the Emarsys plug-in for Shopify.
As a Shopify user, besides having all the data stored in Emarsys available for personalizing your messages, you can also use the content coming directly from Shopify. Specifically, each Shopify event that triggers an Emarsys external event has a set of information attached to it, which you can add to your emails or other messages.
For a complete list of variables individual Shopify events pass to Emarsys, see the Shopify documentation.
To add such Shopify content to your emails, use Emarsys Scripting Language (ESL) placeholders in the body of your message with the following syntax:
{{ event.variable_name }}
Where variable_name is the name of the variable passed in the Shopify event JSON. When the message is sent, the placeholder will be replaced with the respective value from the JSON.
For example, to add the total discount and subtotal price values to your email triggered by the Shopify Order event you have to add the following placeholders to the HTML of your email:
{{ event.line_items[0].total_discount }}
{{ event.subtotal_price }}
To create an Interactions program that is triggered by a Shopify event, proceed as follows:
1. Navigate to Automation > Interactions and click the Create Program button.
2. Select the trigger Shopify event.

3. Double-click the Shopify event node and select the event that will trigger your program.

4. Add the required nodes to your program, test it and activate it when you are ready.
You can only make limited changes to Active programs. For more information, see Program status.
You can use the following Emarsys nodes in your Shopify Flow programs to automate processes related to your store such as tagging your customers, sending reminders or most importantly increase customer engagement.
Main objectives:
You can use the Emarsys nodes in Shopify Flow programs, for example, to:
- Identify your promoters and detractors on post-purchase product reviews to evaluate customer satisfaction and to drive repeat purchases.
- Notify your customers that the price of the item they put on their wishlist has dropped.
- Notify your customers that previously unavailable items they put on their wishlist are back in stock.
- Remind your customers that items they put on their wishlist are waiting for them.
- Reward your customers with Loyalty points if they successfully refer a friend.
To add an Emarsys node to a Shopify workflow, proceed as follows:
1. In Shopify, click Apps in the menu on the left, then select Shopify Flow.

2. Choose an Emarsys node that you would like to add to your Shopify workflow.
Choose a node from the list below and follow the instructions in the corresponding section.
If you have any questions or need further assistance, please contact Emarsys Support.
The Emarsys Post-purchase good feedback node triggers an event in Emarsys when a contact writes a review for a product in your store to improve customer satisfaction and drive repeat purchase.
To use it in a Shopify workflow, proceed as follows:
1. In Emarsys, navigate to Automation > Tactics and proceed as follows:
- Choose the Post-purchase feedback good product review Shopify Flow Tactic, then click Review Tactic and select Create Tactic.
- Choose the Post-purchase feedback bad product review Shopify Flow Tactic, then click Review Tactic and select Create Tactic.
If you don’t want to use the Post-purchase feedback bad product review (Shopify Flow) Tactic, then do not create that Tactic. In this case, don’t forget to remove the Post-purchase bad feedback node from your Shopify workflow.
2. In Shopify, click the Templates tab and search for the keyword Identify promoters and detractors after they post product reviews and select it from the drop-down.
3. Click Create workflow from template in the bottom right corner.

4. Click Edit workflow.

5. Copy the IDs of the Emarsys Post-purchase good feedback and Post-purchase bad feedback External events, then select the corresponding nodes in the Shopify workflow and paste their IDs into the respective External Event ID fields.
In Emarsys, you can check the ID of the External event on the Management > External Events page.

To create contacts who do not exist in Emarsys, check the Create contact if not exists in Emarsys checkbox. Consider the following:
- Emarsys cannot ensure that contacts will be created in Shopify first because the third-party app you are using affects this process. So, if you want to handle contacts (including customers and leads) in Emarsys regardless of whether they are processed in your Shopify store or not, check this checkbox.
- Emarsys cannot process External events for not existing users.
- Contacts will be created with only email addresses without opt-in data.

6. When you are ready click Save and activate your program by turning the toggle switch to On.

7. Swap the campaigns in your Tactic with your marketing materials, set the nodes as required and activate the program.
The Emarsys Post-purchase bad feedback node triggers an event in Emarsys when a contact writes a review for a product in your store to turn a negative experience into a positive one and to drive a repeat purchase.
To use it in a Shopify workflow, proceed as follows:
1. In Emarsys, navigate to Automation > Tactics, select the Post-purchase bad product review Shopify Flow Tactic, then click Review Tactic and select Create Tactic.
2. Follow Steps 2-7 described in Using the Emarsys Post-purchase good feedback node in a Shopify Flow program.
The Emarsys Wishlist Price Drop node triggers an event in Emarsys to notify your customers that the price of some products they put on their wishlist has dropped.
To use it in a Shopify workflow, proceed as follows:
1. In Emarsys, navigate to Automation > Tactics, select the Wishlist price drop Shopify Flow Tactic, then click Review Tactic and select Create Tactic.
2. In Shopify, click the Templates tab and search for the keyword Notify customers that wishlist items are on sale and select it from the drop-down.
3. Click Create workflow from template in the bottom right corner.

4. Click Edit workflow.

5. Copy the ID of the Emarsys Wishlist Price Drop External event, then select the corresponding node in the Shopify workflow and paste the ID into the External Event ID field.
In Emarsys, you can check the ID of the External event on the Management > External Events page.

To create contacts who do not exist in Emarsys, check the Create contact if not exists in Emarsys checkbox. Consider the following:
- Emarsys cannot ensure that contacts will be created in Shopify first because the third-party app you are using affects this process. So, if you want to handle contacts (including customers and leads) in Emarsys regardless of whether they are processed in your Shopify store or not, check this checkbox.
- Emarsys cannot process External events for not existing users.
- Contacts will be created with only email addresses without opt-in data.

6. When you are ready click Save and activate your program by turning the toggle switch to On.

7. Swap the campaigns in your Tactic with your marketing materials, set the nodes as required and activate the program.
The Emarsys Wishlist Back in Stock node triggers an event in Emarsys to notify your customers that some of the products they put on their wishlist are back in stock.
To use it in a Shopify workflow, proceed as follows:
1. In Emarsys, navigate to Automation > Tactics, select the Wishlist back in stock Shopify Flow Tactic, then click Review Tactic and select Create Tactic.
2. In Shopify, click the Templates tab and search for the keyword Notify customers that loved items are back in stock and select it from the drop-down.
3. Click Create workflow from template in the bottom right corner.

4. Click Edit workflow.

5. Copy the ID of the Emarsys Wishlist Back in Stock External event, then select the corresponding node in the Shopify workflow and paste the ID into the External Event ID field.
In Emarsys, you can check the ID of the External event on the Management > External Events page.

To create contacts who do not exist in Emarsys, check the Create contact if not exists in Emarsys checkbox. Consider the following:
- Emarsys cannot ensure that contacts will be created in Shopify first because the third-party app you are using affects this process. So, if you want to handle contacts (including customers and leads) in Emarsys regardless of whether they are processed in your Shopify store or not, check this checkbox.
- Emarsys cannot process External events for not existing users.
- Contacts will be created with only email addresses without opt-in data.

6. When you are ready click Save and activate your program by turning the toggle switch to On.

7. Swap the campaigns in your Tactic with your marketing materials, set the nodes as required and activate the program.
The Emarsys Wishlist Reminder node triggers an event in Emarsys to remind your customers that they put products on their wishlist.
To use it in a Shopify workflow, proceed as follows:
1. In Emarsys, navigate to Automation > Tactics, select the Wishlist reminder Shopify Flow Tactic, then click Review Tactic and select Create Tactic.
2. In Shopify, click the Templates tab and search for the keyword Remind customers that their wishlist items are waiting and select it from the drop-down.
3. Click Create workflow from template in the bottom right corner.

4. Click Edit workflow.

5. Copy the ID of the Emarsys Wishlist Reminder External event, then select the corresponding node in the Shopify workflow and paste the ID into the External Event ID field.
In Emarsys, you can check the ID of the External event on the Management > External Events page.

To create contacts who do not exist in Emarsys, check the Create contact if not exists in Emarsys checkbox. Consider the following:
- Emarsys cannot ensure that contacts will be created in Shopify first because the third-party app you are using affects this process. So, if you want to handle contacts (including customers and leads) in Emarsys regardless of whether they are processed in your Shopify store or not, check this checkbox.
- Emarsys cannot process External events for not existing users.
- Contacts will be created with only email addresses without opt-in data.

6. When you are ready click Save and activate your program by turning the toggle switch to On.

7. Swap the campaigns in your Tactic with your marketing materials, set the nodes as required and activate the program.
The Emarsys Refer a friend (Loyalty) node triggers an event in Emarsys after a friend orders a product by redeeming their discount and rewards the contact with Emarsys Loyalty points in return.
To use it in a Shopify workflow, proceed as follows:
1. In Emarsys, navigate to Automation > Tactics, select the Refer a friend Shopify Flow Tactic, then click Review Tactic and select Create Tactic.
2. In Shopify, click the Templates tab and search for the keyword Reward loyalty points after successfully referring a friend and select it from the drop-down.
3. Click Create workflow from template in the bottom right corner.

4. Click Edit workflow.

5. Copy the ID of the Emarsys Refer a friend External event, then select the corresponding event in the Shopify workflow and paste the ID into the External Event ID field.
In Emarsys, you can check the ID of the External event on the Management > External Events page.

To create contacts who do not exist in Emarsys, check the Create contact if not exists in Emarsys checkbox. Consider the following:
- Emarsys cannot ensure that contacts will be created in Shopify first because the third-party app you are using affects this process. So, if you want to handle contacts (including customers and leads) in Emarsys regardless of whether they are processed in your Shopify store or not, check this checkbox.
- Emarsys cannot process External events for not existing users.
- Contacts will be created with only email addresses without opt-in data.

6. When you are ready click Save and activate your program by turning the toggle switch toOn.

7. In Emarsys, swap the campaigns in your Tactic with your marketing materials, configure the nodes as required and activate the program.
By using the Emarsys Set contact data node, you can set the selected contact data field to a specific value.
Typical use cases
- Tagging premium customers:
- You can transfer your tags to Emarsys in real time. By using these tags, you can trigger Automation Center programs that provide these customers with special treatment. For example, you can send “Thanks for choosing us” emails or vouchers for the next purchase to these customers.
- You can also make special offers to your premium customers (e.g. by tagging the field
Customer Category: Premium
). For instance, you can use block targeting to provide them with extra offers or discounts that are visible only for that segment.
- Identifying fraud: You can tag a suspicious contact immediately as a fraudster (e.g. by tagging the field
Customer Risk: Fraud
) and by using exclude segments, these contacts will be excluded from all your campaigns. - You can also synchronize all customer-level tags with a single Emarsys field by using Field mapping. For more information, see Customers.
To create a completely new program that uses the Emarsys Set contact data node, proceed as follows:
1. On the Shopify Flow page, click the Create workflow button in the top right corner.
3. Select an action that will be performed when the chosen trigger is called.
4. Configure the values of the corresponding action as required:
-
Customer Email - The email address of the contact. It is accessible through a template variable such as
{{ customer.email }}
. - Emarsys Contact Field ID - The ID of the contact field in Emarsys.
To find the ID of the contact field in Emarsys, proceed as follows:
- In Emarsys, navigate to the Management > Field Editor page.
- Search for the required field.
For more information on contact data fields, see Contact data fields - Overview.
- Value - The contact field will be set to the specified value.
For example:

5. When you are ready, click Save in the top right corner and activate your workflow by switching the toggle to On.

The Emarsys Shopify plug-in supports flexible events triggered by Shopify Flow. The Emarsys Trigger External Event node triggers the selected External event in Emarsys.
To use flexible events in Emarsys, proceed as follows:
1. Create an event first in Emarsys, copy its ID and paste it into the External Event ID field of the Trigger External Event in Shopify Flow.

2. Set the email field (ideally from the template) as an identifier in the Email (optional) field.
3. To create contacts in the Emarsys contact database who were not part of your Shopify customer database, check the Create contact if not exists in Emarsys checkbox.
If you need further assistance, please contact Emarsys Support.
Shopify Create Contact node
This feature is currently on Pilot release. If you are interested in participating in the Pilot phase, please speak to your Success Manager.
You can create contacts in Shopify with the Shopify Create Contact node. This node is available in the Automation Center.
A typical use case
You can create contacts registering through Emarsys forms in your Web Channel campaigns in Shopify by using the Shopify Create Contact node.
Prerequisites
To use the Shopify Create Contact node, you need to:
- create a single or multiple Emarsys forms,
- embed it into your Web Channel campaign or Shopify Theme and
- activate your campaign.
Using the Shopify Create Contact node
To use the Shopify Create Contact node, proceed as follows:
1. Create an Automation Center program starting with the Form entry node or use the Lead Acquisition (Shopify) Tactic.
2. Double-click the Form node and select the required form.
3. Add the Shopify Create Contact node to your program.
This node is designed for ad hoc transactional contact creation only. If you use it with entry nodes processing large amount of contacts (e.g. On auto-import or Recurring filter node), then it might cause errors or even block synchronization or your Plug-in.
Notes:
- The node will create contacts only if they have not existed in Shopify.
- Emarsys synchronizes the contact’s email address, first name, last name and opt-in data (these pieces of data are synced between Emarsys and Shopify and backwards in near real time.
- If you need further contact data, then you have to create the contact in Shopify first (e.g. profile update or specifying the date of birth, etc.).
You can test your program by registering new contacts manually.
This is how a simple program including the Shopify Create Contact node looks like:

The following test procedures help you validate that your Shopify plug-in is working properly:
- Checking that synchronization is running without any issues and alerts
- Checking that contact Opt-in subscription works properly
- Checking that customers are properly created during checkout
- Checking that the purchase process works properly for registered customers
- Checking that the Abandoned Cart automation (Tactic) works properly
If the test result does not meet your expectations, then proceed as follows:
1. Open a Zendesk ticket including the following details:
- Your Emarsys account login name,
- The plug-in you are using (i.e. Shopify or ShopifyPlus),
- The name of your test segment (e.g. Shopify - Subscription Test),
- The email address or name of the product that you have used during the test and
- The time when you performed the test.
2. Attach the whole test procedure (including all the steps, for example, Checking that contact Opt-in subscription works properly) to the ticket.
3. Make sure that you also describe if the result of a step was OK and include your additional comments related to the steps (e.g. if something did not work according to your expectations) so that we can investigate the issue you encountered carefully.
Checking that synchronization is running without any issues and alerts
To check that synchronization is working properly without any issues and alerts, proceed as follows:
1. Make sure that contacts are created by manual entry (i.e. the API plug-in works properly) as follows:
a. To check that, navigate to Analytics > Registrations, click the Per Contact Source tab and set the Source of database entry to Manual registration.
b. Go to Contacts > Segments and click Create Segment.
c. Name your segment as follows: Shopify - Data Flow Test - registration date.
d. Select the Date of first registration contact criteria and set it to Was in the last 2 day(s).
2. Create another segment as follows:
a. Name your segment as follows: Shopify - Data Flow Test - predict last session date.
b. Select the predict last session date contact criteria and set it to Was in the last 2 day(s).
Checking that contact Opt-in subscription works properly
To check that subscription works properly, proceed as follows:
Before performing the test, make sure that the following prerequisites are fulfilled:
Emarsys prerequisites:
- The customer import has to be activated and
- The customer data field mapping has to be configured as described in Customers.
1. Subscribe to marketing campaigns by using your test email address.
2. Check that the contact was created in the Emarsys contact database by searching for their email address.
3. Check if the contact's Opt-In status is True by clicking the Unified Customer Profile icon.
After subscribing to your marketing campaigns, the contact's Opt-In status must be True.
4. Create a segment as follows:
a. Go to Contacts > Segments and click Create Segment.
b. Name your segment as follows: Shopify - Subscription Test.
c. Select the following fields:
- predict last session date contact criteria and set it to Was in the last 2 day(s).
- Opt-in and set it to EqualTrue.
Checking that customers are properly created during checkout
To check that contacts are properly created during checkout, proceed as follows:
Before performing the test, make sure that the following prerequisites are fulfilled:
Emarsys prerequisites:
- The customer import has to be activated,
- The customer field mapping has to be configured,
- The product upload has to be activated and if you have any custom product, then the product data field mapping has to be configured, too and
- The order upload has to be activated.
For more information on the Emarsys prerequisites, see Prerequisites.
Guest visitors will only be created during checkout if order sync is activated.
1. Make a test purchase as a guest with your test email address and do not check the Consent to receive marketing materials checkbox.
- Follow the web shop's guidelines on how to make test purchases (e.g. purchase a test product for 1 or $1 by using a 99% discount etc.).
- The name of the checkbox may differ.
2. Check if the contact has been created in the Emarsys contact database by searching for their email address.
3. Check if the contact's Opt-In status is empty by clicking the Unified Customer Profile icon.
4. Create a segment as follows:
a. Go to Contacts > Segments and click Create Segment.
b. Name your segment as follows: Shopify - Contact Creation Test.
c. Select the following fields:
- Date of first registration and set it to Was in the last 2 day(s).
- Opt-in and choose the filter Is empty.
Checking that the purchase process works properly for registered customers
To check that the purchase process works appropriately for registered customers, proceed as follows:
This test case is only relevant for clients with the Advanced Package who are using Smart Insight.
Before performing the test, make sure that the following prerequisites are fulfilled:
Emarsys prerequisites:
- The customer import has to be activated,
- The customer data field mapping has to be configured,
- The product upload has to be activated and if you have any custom product, then the product field mapping has to be configured too,
- The order upload has to be activated.
- You need to have an up and running Smart Insight.
- For more information on the Emarsys prerequisites, see Prerequisites.
1. Make a test purchase as a registered customer.
Follow the web shop's guidelines on how to make test purchases (e.g. purchase a test product for 1 or $1 by using a 99% discount etc.).
2. Create a Smart Insight segment by using the corresponding filters:
a. Go to Contacts > Segments and click Create Segment.
b. Name your segment as follows: Shopify - SI Test.
c. Select the corresponding filters.
For example:
- Days since last purchase 1-1
- Price 1-1
3. Check if this segment contains your test email address.
Checking that the Abandoned Cart automation (Tactic) works properly
To check that the Abandoned Cart automation (Tactic) works properly, proceed as follows:
1. Register and log in to the client's website with your test email address.
2. Create a segment that contains only your test email address as follows:
a. Go to Contacts > Segments and click Create Segment.
b. Name your segment as follows: Shopify - testing mails.
c. Select the Email contact criteria, choose the Is Equal operator and specify your test email address.
3. Create an Abandoned Cart automation by choosing one from the following options:
- If you are using Tactics, then select the Abandoned cart tactic.
- If you do not use Tactics, then create an Automation Center program.
Make sure that the Tactic or Automation Center program only includes the test segment that contains just your test email address.
4. Abandon a product and check the contact's Predict fields as follows:
a. Put a product in your cart and abandon it by closing the tab in your browser.
b. Check if the corresponding email is delivered next day.
If the email was not delivered, please describe the steps you have performed in the ticket.
c. Check the content of the email, the recommendations must be logically related to the specific product that you have abandoned.
If the content of the email is different than expected, please attach it to the ticket.
I have multiple Shopify stores. Can I map each one to the same Emarsys account?
No, if you have more than one Shopify store, you need to map each one to a separate Emarsys account.
How can I check that my Emarsys plug-in works properly?
To ensure that your Emarsys plug-in works as expected, follow the instructions in Quality check of the Emarsys plug-in for Shopify.
Can go commands called multiple times cause problems?
The "Multiple calls of go command" error message is not relevant to the Shopify extension snippet. However, please always make sure that only one Web Extend implementation is present.
Custom Web Extend implementations
If you are using a custom Web Extend implementation in your Shopify shop, then please do not turn on the Web behavior tracking for the plug-in.
The following can indicate that custom implementations are used in your Shopify shop:
- Multiple views or user identification is displayed in the Predict Inspector and
- Duplicate Web Extend events are shown on the Live Events page.
- In this case, we recommend that you remove the custom implementation from your shop because the plug-in sends the product catalog as described in Product catalog and Web Extend events and it will recognize this format automatically. However, the custom implementation needs to be changed according to the product catalog upload data.
Product Catalog and Web Extend events
After turning on Product upload on the UI, our service sets up the customer's Predict account so that the upload configuration will be hidden (catalog URL, scheduling). In this case, the service handles catalog submission by uploading the CSV catalogs to a given address, then by triggering the Emarsys Platform to process the catalog.
Also, the grouped_catalog
option is enabled in the Predict configuration, so it can handle parent/child relations between product entities (i.e. parent products and their variants in Shopify).
In the case of parent products:
- the
item
field contains the ID/SKU preceded by theg/
prefix and - the
group_id
field contains the ID/SKU in the product catalog. - For example:
-
item
: g/PRODUCT-SKU -
group_id
: PRODUCT-SKU
-
In the case of child products:
- the
item
field contains the ID/SKU and - the
group_id
field contains the ID/SKU of the parent product in the product catalog. - For example:
-
item
: PRODUCT-SKU -
group_id
: PARENT-PRODUCT-SKU
-
The following output example shows you an example catalog that contains parent-child and single products:
Product in webshop (SKU) Lines in CSV

Please note that this structure is validated by Predict and it should comply with it. The Recommender can be configured to display simple products, groups or both.
As a result of this, tracking events contain products in the following format:
- View event: g/PARENT-PRODUCT-SKU - As customers usually view parent products, view events are sent with the g/ prefix.
- Cart event: PRODUCT-SKU - Customers put configured products or variants into their cart, so cart events contain child product identifiers.
- Purchase event: PRODUCT-SKU - Customers purchase configured products or variants, so purchase events contain child product identifiers.
Product catalog from other sources
Each catalog upload will replace the entire catalog in Predict, so if the customer previously uploaded the catalog from another source, then decides to use the connector "middleware", then as a result, the previous catalog will be overridden by the one coming from the plug-in.
Sample Shopify order CSV
In the following example, you can see how a sample order CSV file from Shopify looks like:
item,price,order,timestamp,email,quantity
10604114575403,150.52,336347136043,2018-02-16T10:33:00Z,first@customer.com,3
10604114608171,143.75,336347136043,2018-02-16T10:33:00Z,first@customer.com,2
10604114640939,137,336347136043,2018-02-16T10:33:00Z,first@customer.com,1
10604114640940,100,336347136042,2018-02-17T10:33:00Z,second@customer.com,1
Sample Shopify product CSV
In the following example, you can see how a sample product catalog CSV file from Shopify looks like:
item,group_id,link,title,image,price,available,brand,description,zoom_image,category,msrp
g/1245168861226,1245168861226,https://lifestyle-labels-production.myshopify.com/products/aback-pull-flagrant-drum-37860,AbackPull Flagrant Drum 37860,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,952.00,true,America,<p>Aback Pull Flagrant Drum 37860 L-Aquamarine</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,900
11785312731178,1245168861226,https://lifestyle-labels-production.myshopify.com/products/aback-pull-flagrant-drum-37860?variant=11785312731178,AbackPull Flagrant Drum 37860 L-Aquamarine,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,952.00,true,America,<p>Aback Pull Flagrant Drum 37860 L-Aquamarine</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,
g/1243273134122,1243273134122,https://lifestyle-labels-production.myshopify.com/products/abaft-dress-changeable-wool-4675,AbaftDress Changeable Wool 4675,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,714.00,true,Porsche,<p>Abaft Dress Changeable Wool 4675 XL-LawnGreen</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,
11778836856874,1243273134122,https://lifestyle-labels-production.myshopify.com/products/abaft-dress-changeable-wool-4675?variant=11778836856874,AbaftDress Changeable Wool 4675 XL-LawnGreen,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,714.00,true,Porsche,<p>Abaft Dress Changeable Wool 4675 XL-LawnGreen</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,
g/1243415576618,1243415576618,https://lifestyle-labels-production.myshopify.com/products/abandoned-convert-sedate-children-7825,AbandonedConvert Sedate Children 7825,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,414.00,true,Panasonic,<p>Abandoned Convert Sedate Children 7825 XXL-Plum</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,
11779434741802,1243415576618,https://lifestyle-labels-production.myshopify.com/products/abandoned-convert-sedate-children-7825?variant=11779434741802,AbandonedConvert Sedate Children 7825 XXL-Plum,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,414.00,true,Panasonic,<p>Abandoned Convert Sedate Children 7825 XXL-Plum</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,
g/1244939780138,1244939780138,https://lifestyle-labels-production.myshopify.com/products/abandoned-graduate-straight-rule-33425,AbandonedGraduate Straight Rule 33425,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,543.00,true,Red,<p>Abandoned Graduate Straight Rule 33425 XXL-Sienna</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,
11784535900202,1244939780138,https://lifestyle-labels-production.myshopify.com/products/abandoned-graduate-straight-rule-33425?variant=11784535900202,AbandonedGraduate Straight Rule 33425 XXL-Sienna,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,543.00,true,Red,<p>Abandoned Graduate Straight Rule 33425 XXL-Sienna</p>,https://lifestyle-labels-production.myshopify.com/products/image/random.jpg,Over$100 | More than 100 left,
Field matching in Shopify
For more information on limitations related to field matching and data synchronization, see Field matching and data synchronization.