Shopify Segment integration

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.

Client-side (device mode) tracking

During the installation process, Littledata adds a LittledataLayer.liquid snippet to all pages (included in theme.liquid) to your Shopify store, except for the checkout steps:

  • Segment's analytics.js library is loaded on all pages
  • Includes a LittledataLayer data layer for all pages
  • Loads a minified tracking script, hosted on a content delivery network (CDN)
  • Enables sending of client-side events to all Segment destinations
  • Segment's anonymous ID and Google Analytics' client ID is passed to our servers to ensure consistent user journey tracking

Server-side (cloud mode) tracking

During the Segment connection setup flow in the app, Littledata also applies a set of webhooks to your Shopify store. This means that each time Shopify pings us back and confirms the user action we know which event has to be sent by our servers, ensuring 100% accuracy of data collection. There are other advantages to this approach:

  • Smaller script in the browser = faster page load
  • No extra scripts on the sensitive and secure checkout pages
  • Complete event capture for checkout flow, including sales and refunds/returns
  • Accurate marketing attribution (sessions stitched together)

Note: Using a headless Shopify setup? Follow the setup steps for headless Shopify tracking with Littledata.

What can you track

These are the events that Littledata sends from Shopify to Segment. These events will show up as tables in your warehouse, and as regular events in your other Segment destinations.

Tip: This connection has a full tracking plan in Google Sheets which you can upload into Segment Protocols

Client-side events

Client-side events tracked by Littledata, via Segment's analytics.js library, and passed on to any destination enabled in device mode.

Event NameDescription
Cart ViewedUser has viewed the /cart page
Page ViewedUser has viewed a page
Product List Viewed
User has viewed a product link as they scroll down the page
Product ClickedUser has clicked a product within a product list
Product ViewedUser has viewed a product page
Product Image ClickedUser has clicked a product image
Product SharedUser has shared a product via social links
Products SearchedUser has searched for products (with search query)
Registration ViewedUser has viewed the /account/register page
Thankyou Page Viewed
User has viewed the thank you page after completing an order *

* This is less reliable than the de-duplicated Order Completed event sent from Littledata's servers, but you can use it in device-mode destinations to trigger a conversion. payment_method and 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 LittledataLayer settings.
The source also respects GDPR-compliant cookie consent via Shopify's cookie banner, or popular consent management platforms such as OneTrust and TrustArc.

Server-side events

Server-side events are tracked by Littledata servers from Shopify and passed onto any destination in cloud mode.

Event NameDescription
Product AddedUser has added a product to the cart, and left it in the cart for more than 10 seconds
Product RemovedUser has removed a product from the cart
Checkout StartedUser has started checkout
Checkout Step ViewedUser has viewed a step in the checkout
Checkout Step CompletedUser has completed a step in the checkout
Customer CreatedUser added as a customer
Payment Info EnteredUser has entered payment info
Coupon AppliedSent with Checkout Step Completed or Order Completed when user has applied a coupon
Order CompletedCustomer has completed an web order (excluding iOS, Android, POS and draft orders)
Order RefundedWeb order has been refunded
Order Cancelled (v2)Admin has cancelled an order (including the cancel_reason)
POS Order Placed (v2)User has placed an order via Shopify POS
Payment Failure (v2)User completed checkout step 3 but the payment method failed (i.e. the card details were valid but the charge did not succeed)
Customer Enabled (v2)User has confirmed their email address and created a Shopify customer account with verified_email set as true
Fulfillment Created (v2)Order fulfillment is created (including status, tracking_numbers and tracking_urls where the shipping integration allows)
Fulfillment Updated (v2)Order fulfillment status has changed (including status, tracking_numbers and tracking_urls where the shipping integration allows)

User identity

In Littledata's app 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 (e.g. email marketing like Bronto or Marketo), but not their Shopify customer ID.
  • 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 Segment Personas we also send shopify_customer_id as an externalID for advanced matching.

Identify calls

For every event where there is an identifiable Shopify customer (from both the client and the server) we also send an Identify call to trigger updates in CRM systems connected to Segment. 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 NameDescriptionProperty Type
userIdChosen user identifier, defaulting to Shopify Customer IDDouble
createdAtDate customer record was createdDate
customerLifetimeValueTotal spend of customer on the Shopify storeDouble
default_address.street
The customer's default street address
String
default_address.postalCode
The customer's ZIP / post code
String
default_address.state
The customer's state address
String
default_adress.country
The customer's country
String
descriptionCustomer notesString
emailCustomer's email addressString
firstNameCustomer's first nameString
lastNameCustomer's last nameString
marketingOptInmarketing_opt_in field from Shopify customerString
phoneCustomer's phone numberString
purchaseCountNumber of orders by this customerInteger
stateWhether the customer account is enabled or disabledString
tagsCustom tags applied to the customerString
verified_email (v2)Whether the customer has verified their emailBoolean

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 then with a customer (they cannot use an anonymous ID). Littledata's adds that email property whenever an email address is set in the user traits() object (in device-mode) or from the Shopify customer record (in cloud-mode).

Alias calls

To support seamless customer tracking in analytics destinations such as Mixpanel, Vero and Kissmetrics, Littledata ensures the pre-checkout anonymousId is added as an alias of the userId (used from checkout step 2 onwards).

Event properties

These are the properties which may be included in the events listed above. See the Track (eCommerce) tab of the event schema for exactly which properties are sent with which events.

PropertyDescriptionProperty Type
affiliation
A comma-seperated list of order tags. Untagged orders use `Shopify`
String
cart_id
The ID of the Shopify cart
String
checkout_id
The ID of the checkout session
String
context['Google Analytics'].clientId
The user's Google Analytics Client ID
String
context['Google Analytics'].geoid
The user's location
String
context.ip
The user's IP address
String
couponComma-separated string of discount coupons used, if applicableString
currency
The currency of the order
String
discountThe discounted amountFloat
emailShopify email address (after checkout step 2), or email submitted on a storefront formString
order_id
The ID of the order
String
payment_method
The payment method chosen for checkout
String
presentment_currency
The user's local currency
String
presentment_total
The order total in local currency
String
products
A list of all the product at that step of the funnel
Array
revenueProduct revenue (excluding discounts, shipping and tax) *Float
sent_fromUnique property to identify events sent by LittledataString
shippingShipping costFloat
shipping_methodShipping method chosen for checkoutString
source_nameThe source of the order (e.g. `web`, `android`, `pos`)String
stepCheckout stepInteger
subscription_revenueThe revenue associated with a Subscription EventFloat
subtotalTotal after discounts but before taxes and shippingFloat
tax
The amount of tax on the order
Float
totalTotal value of the orderFloat
userIdChosen user identifier, defaulting to Shopify Customer IDString
* revenue is 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 total property sent to Google Analytics.

Product properties

Each product in the products array, or Product Viewed and Product Added events, will have the following properties

PropertyDescriptionProperty Type
brandThe brand of the product (Shopify `vendor`)String
categoryThe category of the product (defaults to `all`)String
compare_at_priceThe product price before any discountString
couponCoupon code associated with the productString
image_urlThe URL of the first product imageString
list_idThe ID of the product collection (for List Views and Clicks)String
list_positionThe product position in the collection (for List Views and Clicks)Integer
nameProduct nameString
priceThe product priceFloat
product_idShopify product IDString
quantityThe quantity of this productInteger
shopify_product_idAlso Shopify product IDString
shopify_variant_idThe Shopify variant IDString
skuThe product SKUString
urlThe URL of the product pageString
variantThe product variant nameString

Subscription Events

All recurring orders in the Shopify checkout, from any subscription app, are tracked as Order Completed events.

Additional subscription lifecycle events via Littledata's ReCharge connection are available in cloud mode destinations. See the Track (custom) tab of the event schema.

Event NameDescription
Subscription Created
A customer has created a subscription (with `status`, `order_interval_frequency` and `order_interval_unit`)
Subscription Updated
A customer has updated a subscription (with `status`, `order_interval_frequency` and `order_interval_unit`)
Subscription Cancelled
A customer has cancelled a subscription (with `cancellation_reason` and `cancellation_reason_comments`)
Order Processed
A recurring order is processed
Charge Failed
A recurring charge failed (with `error_type`)
Charge Max Tries ReachedMaximum tries to charge customer has been reached
Payment Method UpdatedCustomer has updated the payment method

Advanced device-mode settings

You can edit the LittledataLayer object in your Shopify theme to manually change these advanced settings. For more information, see the Shopify tracker GitHub repository.

cookiesToTrack

Any cookie set on a landing page (e.g. a session identifier or marketing campaign name) can be sent on to Segment with an identify call.

CDNForAnalyticsJS

If you have a proxy CDN setup  to load Segment's AnalyticsJS library from your own domain you can specify it here.