Skip to contentSkip to navigationSkip to topbar
On this page
Looking for more inspiration?Visit the
(information)
You're in the right place! Segment documentation is now part of Twilio Docs. The content you are used to is still here—just in a new home with a refreshed look.

Shopify by Littledata Source


Littledata's Shopify to Segment connection(link takes you to an external page) 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 touch point, including sales, marketing, customer and product performance data.

Littledata is available as an independent Shopify App(link takes you to an external page).


Client-side (device mode) tracking

client-side-device-mode-tracking page anchor

After the installation process(link takes you to an external page):

  • 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

server-side-cloud-mode-tracking page anchor

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.

Diagram showing how data is processed between Littledata, Shopify, and Segment.
(warning)

Note

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.


  1. Log in to your Shopify Store account.

  2. Go the Shopify app store listing(link takes you to an external page) for Segment.com by Littledata.

    Screenshot of the Segment listing in the Shopify app store.
  3. Click Add app to begin the installation process.

  4. Choose a Littledata subscription suitable for your store's volume of monthly orders.

  5. Add the Segment write key for the source that is going to send data in the input field.

    Add a Segment write key to Shopify.
  6. 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(link takes you to an external page).

    Screenshot of the Shopify installation type.
  7. Segment's Analytics.js library, Littledata tracking script and webhooks will be automatically applied to the store and the installation process will then be complete.

    Screenshot of adding AnalyticsJS to Shopify.

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.

Event NameDescription
Cart ViewedA user has viewed the /cart page
Page ViewedA user has viewed any page
Product ClickedA user has clicked a product within a product list
Product Image ClickedA user has clicked a product image
Product List ViewedA user has viewed a product as they scroll down the collection page
Product SharedA user has shared a product through social links
Product ViewedA user has viewed a product page
Products SearchedA user has searched for products (with search query)
Registration ViewedA user has viewed the /account/register page
Thank you Page ViewedA user has viewed the thank you page after completing an order*
(warning)

Warning

These events are less reliable than the de-duplicated Order Completed event sent from the Littledata servers, but you can use this destination in device-mode destinations to trigger a conversion. The payment_method and shipping_method properties are not available with these 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(link takes you to an external page) consent through Shopify's cookie banner, or popular consent management platforms such as OneTrust(link takes you to an external page) and TrustArc(link takes you to an external page).


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(link takes you to an external page) for more details.

Event NameDescription
Checkout StartedA user has started checkout
Checkout Step CompletedA user has completed a step in the checkout
Coupon AppliedSent with Checkout Step Completed or Order Completed when user has applied a coupon
Customer CreatedUser 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 CompletedA prospect has completed an order
Order RefundedAn 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(link takes you to an external page))
Payment Info EnteredA user has entered payment info
Product AddedA user has added a product to the cart, and left it in the cart for more than 10 seconds
Product RemovedA 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.
  • Shopify customer metafield - If you have your own customer identifier, and can add it to the Shopify customer record as a metafield, you can send this to Segment.
  • 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 NameDescriptionProperty Type
userIdThe chosen user identifier. This defaults to the Shopify Customer ID.Double
createdAtThe date the customer record was created.Date
customerLifetimeValueThe total spend of the customer on the Shopify store.Double
default_address.streetThe customer's default street address.String
default.address.postalCodeThe customer's ZIP or postal code.String
default_address.stateThe customer's state address.String
default_address.countryThe customer's country.String
descriptionThe customer's notes.String
emailThe customer's email address.String
email_consent_stateIf the user has consented to email marketing (mapping to EmailMarketingState(link takes you to an external page))String, Null
email_opt_in_levelLevel of user's opt in email marketing (mapping to CustomerMarketingOptInLevel(link takes you to an external page))String, Null
firstNameThe customer's first name.String
lastNameThe customer's last name.String
phoneThe customer's phone number.String
purchaseCountThe number of orders by the customer.Integer
sms_consent_stateIf the user has consented to SMS marketing (mapping to SmsMarketingState(link takes you to an external page))String, Null
sms_opt_in_levelThe level of the user's opt in to SMS marketing (mapping to CustomerMarketingOptInLevel(link takes you to an external page))String, Null
stateThe Shopify customer state - enabled, disabled, invited to create an account or customer declined.String
tagsThe custom tags applied to the customer.String
verified_emailWhether the customer has verified their email.Boolean

Support for Google Analytics destination

support-for-google-analytics-destination page anchor

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 through Segment's servers - reducing the scripts needed on your website.


Support for email marketing destinations

support-for-email-marketing-destinations page anchor

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 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). 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(link takes you to an external page), from any subscription app, are tracked as Order Completed events.

Additional subscription lifecycle events through Littledata's ReCharge connection(link takes you to an external page) are available in cloud-mode destinations. See the Track (custom)(link takes you to an external page) tab of the event schema.

Event NameDescription
Charge FailedA recurring charge failed (with error_type)
Charge Max Tries ReachedThe maximum tries to charge customer is reached
Order ProcessedA recurring order is processed
Payment Method UpdatedA customer has updated the payment method
Subscription CancelledA customer has cancelled a subscription (with cancellation_reason and cancellation_reason_comments)
Subscription CreatedA customer has created a subscription (with status, order_interval_frequency and order_interval_unit)
Subscription UpdatedA customer has updated a subscription (with status, order_interval_frequency and order_interval_unit)

The list below outlines the properties included in most events. See the 'Track (eCommerce)' tab of the event schema(link takes you to an external page) for exactly which properties are sent with which events.

PropertyDescriptionProperty Type
affiliationA comma-separated list of order tags. Untagged orders use Shopify.String
cart_idThe ID of the Shopify cart.String
checkout_idThe ID of the checkout session.String
context['Google Analytics'].clientIdThe user's Google Analytics Client ID.String
context.ipThe user's IP address.String
couponA comma-separated string of discount coupons used, if applicable.String
currencyThe currency of the order.String
discountThe discounted amount.Float
emailThe Shopify email address (after checkout step 2), or email submitted on a storefront form.String
lifetime_revenue_littledataThe lifetime revenue of the customer in Shopify.String
location_idThe location ID of the Point of Sale.Integer
order_idThe ID of the order is by default the Shopify order name.String
payment_gateway_littledataThe payment gateway used by the customer.String
payment_methodThe payment method chosen for checkout.String
presentment_currencyThe user's local currency.String
presentment_totalThe order total in local currency.String
productsA list of all the products at that step of the funnel.Array
purchase_count_littledataThe total purchase count for the customer.Integer
revenueThe product revenue (excluding discounts, shipping and tax) *Float
sent_fromThe unique property to identify events sent by Littledata.String
shippingThe shipping cost.Float
shipping_methodThe shipping method chosen for checkout.String
shopify_customer_id_littledataShopify's identifier for the customer.Integer
source_nameThe source of the order (e.g. web, android, pos).String
stepThe checkout step number(link takes you to an external page).Integer
subscription_revenueThe revenue associated with a Subscription Event.Float
subtotalThe total after discounts but before taxes and shipping.Float
taxThe amount of tax on the order.Float
totalThe total value of the order.Float
userIdChosen user identifier, defaulting to Shopify Customer IDString
(information)

The revenue property is available only with the Order Completed event

The revenue property is only available with the Order Completed event and requires you to opt in through the Littledata application. Revenue is a reserved property in many Segment destinations. Opting in overrides the total property sent to Google Analytics.


Each item 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 discount.String
couponCoupon code associated with the product.String
image_urlThe URL of the first product image.String
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 name.String
priceThe product price.Float
product_idShopify product ID.String
quantityThe quantity of this product.Integer
product_propertiesCustom properties of purchased products.Array
shopify_product_idAlso Shopify product ID.String
shopify_variant_idThe Shopify variant ID.String
skuThe product SKU.String
urlThe URL of the product page.String
variantThe product variant name.String

With an annual Littledata Plus plan(link takes you to an external page) 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 includes 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(link takes you to an external page) in the Littledata admin. The general settings affect how Littledata handles details such as orders, products and pageviews. The more advanced settings include: cookiesToTrack and CDNForAnalyticsJS.

cookiesToTrack

cookiestotrack page anchor

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 campaignId and templateId through to the Order Completed event(link takes you to an external page).

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