Shopify by Littledata Source
Littledata’s Shopify to Segment connection uses a combination of client-side (browser) and server-side tracking to ensure 100% accurate data about your Shopify store in Segment. Littledata automatically integrates with Shopify and Shopify Plus sites to capture every customer touchpoint, including sales, marketing, customer and product performance data.
Littledata is available as an independent Shopify App.
Client-side (device mode) tracking
After the installation process:
- Segment’s Analytics.js 2.0 library loads on all pages, except for the checkout.
- All pages include a LittledataLayer data layer.
- Pages Load a minified tracking script, hosted on a content delivery network (CDN)
- Device-mode e-commerce events can send to all Segment destinations
- Segment’s anonymous ID and Google Analytics’ client ID passes to Littledata’s servers to ensure consistent user journey tracking
Server-side (cloud mode) tracking
During the Segment connection setup, Littledata also adds a set of webhooks to your Shopify store. When a customer interacts with your store these changes are relayed server-side from Shopify to Littledata to Segment. The advantages to this approach are:
- 100% event capture for adds to cart, checkout steps, sales and refunds/returns
- Customer data (for example, email) securely relayed server-side
- No extra scripts on the sensitive and secure checkout pages
- Accurate marketing attribution, even when customers use ad-blockers or cookie opt-outs
- Supports cloud-mode destinations such as Facebook Conversions API
Here’s an architecture diagram that shows how the Littledata app mediates data flow between Shopify and Segment.
This integration is maintained by Littledata and isn’t supported by Segment directly. The Littledata app has been reviewed by the Segment team for conformance with Segment’s E-Commerce Spec, and is the recommended way of using Segment with Shopify. However, it does require a paid subscription with Littledata, who mediates the connection between Shopify and Segment. Contact the Littledata Support team with any questions.
- Log in to your Shopify Store account.
- Go the Shopify app store listing for Segment.com by Littledata.
- Click Add app to begin the installation process.
- Choose a Littledata subscription suitable for your store’s volume of monthly orders.
- Add the Segment write key for the source that is going to send data in the input field.
- Choose either an Automatic, a Manual, or a Headless install. Automatic installs work in most instances, but if you choose to do a manual install, just follow this guide.
- Segment’s Analytics.js library, Littledata tracking script and webhooks automatically apply to the store and the installation process will then be complete.
This source has a full tracking plan and event schema in Google Sheets, which is ready to upload into Protocols.
Below is a table of events that Shopify by Littledata sends to Segment through the analytics.js library. These events will show up as tables in your warehouse, and as regular events in your other Destinations supporting device-mode.
|Cart Viewed||A user has viewed the /cart page|
|Page Viewed||A user has viewed any page|
|Product Clicked||A user has clicked a product within a product list|
|Product Image Clicked||A user has clicked a product image|
|Product List Viewed||A user has viewed a product as they scroll down the collection page|
|Product Shared||A user has shared a product through social links|
|Product Viewed||A user has viewed a product page|
|Products Searched||A user has searched for products (with search
|Registration Viewed||A user has viewed the /account/register page|
|Thank you Page Viewed||A user has viewed the thank you page after completing an order*|
*This is less reliable than the de-duplicated
Order Completed event sent from the Littledata servers, but you can use it in device-mode destinations to trigger a conversion. The
shipping_method properties are not available with this event.
You can opt out of device-mode pageviews or events by setting
disableClientSideEvents: true or
disablePageviews: true in the
The source also respects GDPR-compliant cookie consent via Shopify’s cookie banner, or popular consent management platforms such as OneTrust and TrustArc.
Below is a table of events that Shopify by Littledata sends to Segment from Littledata’s servers. These events appear as tables in your warehouse, and as regular events in your other Destinations that support cloud-mode. They include the
anonymousId that links them to the device-mode events where the event was part of a previous user session, or associated with a
userId that was previously linked with an
anonymousId. See Littledata’s troubleshooting guide on attribution for more details.
|Checkout Started||A user has started checkout|
|Checkout Step Completed||A user has completed a step in the checkout|
|Coupon Applied||Sent with Checkout Step Completed or Order Completed when user has applied a coupon|
|Customer Created||User added as a customer|
|Customer Enabled (v2)||A user has confirmed their email address and created a Shopify customer account with verified_email set as true|
|Fulfillment Created (v2)||An order fulfillment status has changed (including status, tracking_numbers and tracking_urls where the shipping integration allows)|
|Fulfillment Updated (v2)||An order fulfillment status has changed (including status, tracking_numbers and tracking_urls where the shipping integration allows)|
|Order Cancelled (v2)||An admin has cancelled an order (including the cancel_reason)|
|Order Completed||A prospect has completed an order|
|Order Refunded||An order has been refunded|
|POS Order Placed (v2)||A user has placed an order through Shopify POS|
|Payment Failure (v2)||A user completed checkout step 3 but the payment method failed (for example, the card details were valid but the charge did not succeed)|
|Payment Info Entered||A user has entered payment info|
|Product Added||A user has added a product to the cart, and left it in the cart for more than 10 seconds|
|Product Removed||A user has removed a product from the cart|
In the Littledata application you can choose which of the following fields you want to send as the
userId for known customers:
- Shopify customer ID (default) - Recommended if you have a simple Shopify setup with minimal integrations.
- Hashed email - The MD5 email hash is useful if you have other marketing platforms sending traffic where you know the email of the visitor (for example, email marketing like Bronto or Marketo), but not their Shopify customer ID. Littledata uses an unsalted MD5 hash (`createHash` method) to match your other sources.
- Email - The email identifier is recommended when other platforms use the email and can’t hash it, and you are comfortable with the privacy implications.
- None (no identifier) - Choose “none” if user identity is already handled by your Segment implementation and you only need the extra events powered by Littledata’s Shopify source.
For Engage, Littledata also sends
shopify_customer_id as an externalID for advanced matching.
For every event where there is an identifiable Shopify customer (from both the device-mode and cloud-mode) Littledata also sends an Identify call. This happens when the customer logs into the storefront, on the last step of the checkout, with the order, and also after purchase with any customer update in Shopify admin.
The following traits are included with an Identify call:
|Property Name||Description||Property Type|
||Whether the customer has accepted marketing||Boolean|
||The date customer record was created||Date|
||The total spend of customer on the Shopify store||Double|
||The customer’s default street address||String|
||The customer’s city address||String|
||The customer’s ZIP / post code||String|
||The customer’s state address||String|
||The customer’s country||String|
||The customer notes||String|
|The customer’s email address||String|
||The customer’s first name||String|
||The customer’s last name||String|
||The customer’s phone number||String|
||The number of orders by this customer||Integer|
||The Shopify customer state. This can be
||The custom tags applied to the customer||String|
||Chosen user identifier, defaulting to Shopify Customer ID||Double|
||Whether the customer has verified their email||Boolean|
Support for Google Analytics destination
All events (device-mode and cloud-mode) contain the Google Analytics
clientId field where known. This allows the Google Analytics destination to be configured in cloud-mode only, so all client side events are relayed via Segment’s servers - reducing the scripts needed on your website.
Support for email marketing destinations
Email marketing platforms such as Klaviyo, Iterable and Hubspot require an email property with any server-side event in order to associate events with a customer (they cannot use an
anonymousId). Littledata adds that
traits() object (in device-mode) or from the Shopify customer record (in cloud-mode). Iterable can also receive cookie values with the Order Completed event.
To support seamless customer tracking the Mixpanel, Vero and KISSMetrics destinations, Littledata ensures the pre-checkout
anonymousId is added as an alias of the
userId (used from checkout step 2 onwards).
All recurring orders in the Shopify checkout, from any subscription app, are tracked as Order Completed events.
Additional subscription lifecycle events through Littledata’s ReCharge connection are available in cloud-mode destinations. See the Track (custom) tab of the event schema.
|Charge Failed||A recurring charge failed (with
|Charge Max Tries Reached||The maximum tries to charge customer is reached|
|Order Processed||A recurring order is processed|
|Payment Method Updated||A customer has updated the payment method|
|Subscription Cancelled||A customer has cancelled a subscription (with
|Subscription Created||A customer has created a subscription (with
|Subscription Updated||A customer has updated a subscription (with
The list below outlines the properties included in most events. See the ‘Track (eCommerce)’ tab of the event schema for exactly which properties are sent with which events.
||A comma-seperated list of order tags. Untagged orders use
||The ID of the Shopify cart||String|
||The ID of the checkout session||String|
||The user’s IP address||String|
||The user’s Google Analytics Client ID||String|
||The user’s location||String|
||Comma-separated string of discount coupons used, if applicable||String|
||The currency of the order||String|
||The discounted amount||Float|
|Shopify email address, or email submitted on a storefront form||String|
||The ID of the order||String|
||The payment method chosen for checkout||String|
||The user’s local currency||String|
||The order total in local currency||String|
||A list of all the product at that step of the funnel||Array|
||Product revenue (excluding discounts, shipping and tax) *||Float|
||A unique property to identify events sent by Littledata||String|
||The shipping method chosen for checkout||String|
||The shipping cost||Float|
||The source of the order or checkout (e.g.
||The checkout step number||Integer|
||The revenue associated with a Subscription Event||Float|
||Order total after discounts but before taxes and shipping||Float|
||The amount of tax on the order||Float|
||The total value of the order||Float|
||Chosen user identifier, defaulting to Shopify Customer ID||String|
note “” *
revenueis available only with the Order Completed event, and only if the store opts in via the Littledata application. Revenue is a reserved property in many Segment destinations. Opting in will override the
totalproperty sent to Google Analytics.
Each item in the
products array, or Product Viewed and Product Added events, will have the following properties
||The brand of the product (Shopify
||The category of the product (defaults to
||The product price before any discount||String|
||Coupon code associated with the product||String|
||The currency displayed to the user||String|
||The URL of the first product image||String|
||The ID of the product collection (for List Views and Clicks)||String|
||The product position in the collection (for List Views and Clicks)||Integer|
||The product name||String|
||The product price as displayed to the user||String|
||The currency displayed to the user||String|
||The product price at the time of the event, in the store currency||Float|
||The Shopify product ID||String|
||The quantity of products||Integer|
||Also Shopify product ID||String|
||The Shopify variant ID||String|
||The product SKU||String|
||The URL of the product page||String|
||The product variant name||String|
Import all orders
With an annual Littledata Plus plan you can import all Shopify orders and refunds from before you started using Segment, to sync with destinations that support timestamped events (for example, a data warehouse). This enables you to build a complete customer history in your chosen destination.
This data import includse all the event properties usually sent with an
Order Completed event, including the customer traits.
You can customize Littledata’s Shopify source from the data pipeline settings in the Littledata admin. The general settings affect how Littledata handles details such as orders, products and pageviews. The more advanced settings include:
You can send any cookie set on a landing page (for example, a session identifier or marketing campaign name) to Segment with an Identify call. A common use is to set the array as
['iterableEmailCampaignId', 'iterableTemplateId'] to pass Iterable
templateId through to the Order Completed event.
If you have a proxy CDN setup to load Segment’s AnalyticsJS library from your own domain, you can specify it here.
This page was last modified: 21 Apr 2023
Questions? Problems? Need more info? Contact Segment Support for assistance!