Shopify CDP Connector Events Spec

Events mapping from Shopify WebPixel and Webhooks to CDP Connector Events

Attribution leverages the industry-standard Segment V2 Ecommerce Spec to implement events based on data available from Shopify. While a strict 1:1 mapping of all Shopify events to the Segment Spec isn't always possible, Attribution aims to reconcile both models in a way that preserves analytical integrity. Some deviations exist, but they are designed to reflect the most meaningful interpretation of Shopify data within the Segment framework.

Shopify Web Pixel Events

These are website events captured by Shopify when a visitor interacts with your Storefront.

Standard Events

Shopify reference: Standard Events

Shopify Web Pixel EventCDP EventProperties
cart_viewedCart Viewedcart_id, products[]
checkout_address_info_submittedCheckout Step Completedcheckout_token,
shopify_step (set to checkout_address_info_submitted)
checkout_completedCheckout Step Completedcheckout_token,
shopify_step (set to checkout_completed)
checkout_contact_info_submittedCheckout Step Completedcheckout_token,
shopify_step (set to checkout_contact_info_submitted)
checkout_shipping_info_submittedCheckout Step Completedcheckout_token,
shopify_step (set to checkout_shipping_info_submitted)
checkout_startedCheckout Startedcheckout_token, order_id, revenue, shipping, tax, currency, products[]
collection_viewedProduct List Viewedlist_id, category, products[]
payment_info_submittedPayment Info Enteredcheckout_token
product_added_to_cartProduct AddedProduct properties
product_removed_from_cartProduct RemovedProduct properties
product_viewedProduct ViewedProduct properties
search_submittedProducts Searchedquery
page_viewedLoaded a PageFor Segment this event is fired by the native library (analytics.js). You can switch to Web Pixel trigger with Send pageviews from Web Pixel setting enabled.
url, referrer, search, title

Enabling to send page_viewed using Web Pixel could be beneficial for tracking accuracy because it allows to bypass most ad blockers and is less affected by network latency, however this disables running native tracking library on the website which in case of Segment means that all events would be fired in "Cloud-mode" so some Segment destinations that depend on "Device mode" would not be running on your shopify pages, please learn more on Segment Connection modes.

(Attribution only) page_viewed is fired from by Pixel event by default.

Additionally shopify_event property is present on all events and includes original Shopify Web Pixel Event name. The shopify_event_data property could be added to all events if Send raw Shopify Event data setting enabled which will include original Shopify event payload.

Product properties

Product properties are extracted from CartLine[], CheckoutLineItem[] and ProductVariant depending on event. url and image_url will have window.location.origin prepended if relative url is provided by Shopify.

Key (name)Value
product_idvariant.product.id
skuvariant.sku
categoryvariant.product.type
namevariant.product.title
brandvariant.product.vendor
variantvariant.title
pricevariant.price.amount
urlvariant.product.url
image_urlvariant.image.src
quantityline.quantity
positionindex + 1
couponnot available

DOM Pixel Events

Shopify Form Submitted is fired every time any form is submitted on the website, this often includes, subscribe to newletter forms, product variant selection is implemented using the forms, login.

You can disable sending these event by turning off Track Shopify "form_submitted" DOM event setting.

Shopify reference: DOM Pixel Events API

Shopify Web Pixel EventCDP EventProperties
form_submittedShopify Form Submittedform_id HTML <form> element id,
other* (form inputs with name set would be attached as properties)

Custom Events

You can also capture and fire custom events using Shopify.analytics.publish() method. Please note that some Apps installed on your store could fire custom events as well. Disable Track custom Shopify events setting to stop sending custom events.

Shopify reference: Emitting Data

Shopify Web Pixel EventCDP EventProperties
CUSTOM_NAMEShopify: CUSTOM_NAMEcustomData passed to event

Webhook events

These events are implemented by subscribing to Shopify Webhook topics.

Shopify reference: Webhooks

Shopify Webhook TopicCDP Event
orders/cancelledOrder Cancelled
orders/createOrder Created
orders/deleteOrder Deleted
orders/editedOrder Edited
orders/editedOrder Updated
(Segment only)
orders/fulfilledOrder Fulfilled
orders/paidOrder Paid
orders/paidOrder Completed
(Segment only)
orders/partially_fulfilledOrder Partially Completed
refunds/createOrder Refunded

Properties availability could vary depending on webhook topic.

Order Refunded has negative revenue property.

Order Completed event can be configured by Webhook to trigger "Order Completed" event setting to be fired on orders/paid (default) or orders/fulfilled topics.

(Attribution only) The Estimated First Order event is triggered on the orders/paid webhook when a Shopify customer has prior orders that were not previously tracked. This synthetic event uses the customer's original created_at timestamp and sets revenue to 0.01, allowing Attribution to distinguish first-time purchases from repeat ones.

Order properties

  • checkout_id
  • order_id - Shopify Order name (not to be confused with "number" and "order_number")
  • affiliation - not available
  • subtotal
  • total
  • revenue
  • shipping
  • tax
  • discount
  • coupon
  • currency
  • products[] - see Product properties

Product properties

  • product_id
  • sku
  • category - not available
  • name
  • brand - this maps to "vendor" in Shopify
  • variant
  • price
  • quantity
  • coupon
  • position
  • url
  • image_url - sometimes not available

Additionally there are out properties added:

  • shopify_order_id - Shopify internal Order ID
  • shopify_refund_id
  • checkout_id
  • checkout_token
  • source_name

Identity resolution

Identity is resolved as soon as it's known. For new customers, this typically occurs when they place their first order or sign up. For existing users, identity resolution happens when they sign in or complete a repeat purchase. Additionally, all webhook events are followed by identify() calls to enrich customer traits, including:

  • shopify_customer_id
  • email
  • first_name
  • last_name
  • created_at
  • address
    • country
    • state
    • city
    • postal_code
    • street

The USER_ID value is controlled by the User ID source setting, which lets you choose which trait to use as the unique identifier: email, shopify_customer_id, or none. This flexibility ensures alignment with your CDP’s identity resolution strategy and downstream analytics.