Shopify Event and Property Mappings
Event and property mapping details while ingesting data from Shopify.
This page contains all the client-side pixel mappings and the webhook topic mappings.
Event mappings
This section covers the event mappings from Shopify to RudderStack:
Pixel events (client-side)
Webhook events (server-side)
| Shopify event | RudderStack event |
|---|
CHECKOUTS_CREATE | Checkout Started |
CHECKOUTS_UPDATE | Checkout Updated |
CHECKOUTS_DELETE | Checkouts Delete Custom track event |
FULFILLMENTS_CREATE | Fulfillments Create Custom track event |
FULFILLMENTS_UPDATE | Fulfillments Update Custom track event |
FULFILLMENT_ORDERS_SPLIT | Fulfillment Orders Split Custom track event |
ORDERS_CREATE | Order Created |
ORDERS_UPDATED | Order Updated |
ORDERS_DELETE | Orders Delete Custom track event |
ORDERS_EDITED | Orders Edited Custom track event |
ORDERS_CANCELLED | Order Cancelled |
ORDERS_FULFILLED | Orders Fulfilled |
ORDERS_PAID | Orders Paid |
ORDERS_PARTIALLY_FULLFILLED | Orders Partially Fulfilled |
SHIPPING_ADDRESSES_CREATE | Shipping Addresses Create Custom track event |
SHIPPING_ADDRESSES_UPDATE | Shipping Addresses Update Custom track event |

RudderStack automatically subscribes to the above-mentioned Shopify webhook topics.
You can send additional Shopify webhook events to downstream tools by using RudderStack’s Webhook source to subscribe to the specific Shopify webhook topics.
How identify calls are triggered
In addition to the above events, RudderStack also triggers an identify call for each Ecommerce Event to capture the user information from the event payload.
For example, for a ORDERS_UPDATED Shopify event, RudderStack triggers an Order Updated event along with an identify event containing the user information.
Property mappings
This section covers the property mappings from Shopify events to the RudderStack events:
Pixel events (client-side)
This section covers the property mappings for the client-side pixel events.
Checkout event mappings
| RudderStack property | Shopify property |
|---|
order_id | inputEvent.data.checkout.order.id |
checkout_id
value | inputEvent.data.checkout.token |
total | inputEvent.data.checkout.totalPrice.amount |
currency | inputEvent.data.checkout.currencyCode |
discount | inputEvent.data.checkout.discountsAmount.amount |
shipping | inputEvent.data.checkout.shippingLine.price.amount |
revenue | inputEvent.data.checkout.subtotalPrice.amount |
tax | inputEvent.data.checkout.totalTax.amount |
Product-level mappings
| RudderStack property | Shopify property |
|---|
quantity | product.quantity |
title | product.name |
image_url | variant.image.src |
price | variant.price.amount |
sku | variant.sku |
product_id | variant.product.id |
variant | variant.product.title |
category | variant.product.type |
url | variant.product.url |
brand | variant.product.vendor |
Product Viewed event mappings
| RudderStack property | Shopify property |
|---|
product_id | productVariant.product.id |
variant | productVariant.product.title |
brand | productVariant.product.vendor |
category | productVariant.product.type |
image_url | productVariant.product.image.src |
price | productVariant.price.amount |
currency | productVariant.price.currencyCode |
url | productVariant.product.url |
sku | productVariant.product.sku |
name | productVariant.product.title |
quantity | cartLine.quantity |
Product List Viewed event mappings
| RudderStack property | Shopify property |
|---|
image_url | image.src |
price | price.amount |
product_id | product.id |
variant | product.title |
category | product.type |
url | product.url |
brand | product.vendor |
sku | sku |
name | title |
Cart Viewed event mappings
| RudderStack property | Shopify property |
|---|
product_id | merchandise.product.id |
variant | merchandise.product.title |
image_url | merchandise.image.src |
price | merchandise.price.amount |
category | merchandise.product.type |
url | merchandise.product.url |
brand | merchandise.product.vendor |
sku | merchandise.sku |
name | merchandise.title |
quantity | quantity |
Webhook events (server-side)
This section covers the property mappings for the server-side webhook events.
Identify traits mapping
RudderStack automatically maps the identify traits from the Standard Event Spec to the corresponding Shopify fields.
For example, userId is mapped to Shopify’s id field, traits.email is mapped to email, traits.phone is mapped to phone, and so on.
Common mappings for the products array
| RudderStack property | Shopify property | Notes |
|---|
product_id | product_id | Automatically typecasted to String to conform with the RudderStack Ecommerce Spec. |
sku | sku | - |
title | name | - |
price | price | Automatically typecasted to Number to conform with the RudderStack Ecommerce Spec. |
brand | vendor | - |
quantity | quantity | - |
Common mappings for each product within the products array
Warehouse destinations
While sending events from Shopify to warehouse destinations, RudderStack creates the columns based on the above property mappings along with a shopifyDetails column containing the entire untransformed event payload received received from Shopify.

Shopify sends a lot more properties apart from the ones that RudderStack maps according to the property mappings. Hence, RudderStack sends the shopifyDetails to make sure that:
- No data is lost.
- The warehouse is not bloated by creating a large number of columns corresponding to the additional properties.
RudderStack sends the shopifyDetails object as a JSON path within the event’s integrations object, as shown:
integrations: {
SHOPIFY: true,
DATA_WAREHOUSE: {
options: {
jsonPaths: [`${event.type}.context.shopifyDetails`],
},
},
},
Note that event.type varies according to the type of event triggered, for example, identify, track, or page.
Questions? Contact us by Email or on
Slack