Skip to Content
SourcesShopifyData Model

Data Model

This is the canonical reference for everything Vendo tracks from your Shopify store — all events, their properties, and the data structures used.


Event Overview

Vendo tracks events from two sources: client-side (Web Pixel) and server-side (pipeline). Use this table to understand which events come from where.

Event CategoryClient-SideServer-Side
Page browsing (page/product/collection viewed)Yes—
SearchYes—
Cart actions (add/remove/view)Yes—
Checkout flow (contact/address/shipping/payment)Yes—
Checkout completedYesYes
Order fulfillment & delivery—Yes
Order refunds—Yes
Abandoned checkouts—Yes
Customer profile updatesYesYes
Auto track eventsYes (theme)—
Session recording & heatmapsYes (theme)—
Push notification promptsYes (theme)—

Client-Side Events

These 14 events are captured in real-time via the Shopify Web Pixel.

Browsing Events

EventDescriptionKey Properties
Page ViewedCustomer visits any page$current_url, page_title, path_name, $referrer
Product ViewedCustomer views a product detail pageproducts[], $current_url
Collection ViewedCustomer views a collection pagecollection_id, collection_title, products[]
Search SubmittedCustomer performs a searchsearch_query, products[]

Cart Events

EventDescriptionKey Properties
Product Added To CartCustomer adds item to cartproducts[], quantity, amount, currency
Product Removed From CartCustomer removes item from cartproducts[], quantity, amount, currency
Cart ViewedCustomer views the cart pageproducts[], quantity, amount, currency

Checkout Events

EventDescriptionKey Properties
Checkout StartedCustomer initiates checkoutcheckout_token, order_id, cart_total_amount, products[]
Checkout Contact Info SubmittedCustomer enters email/phoneemail, phone, checkout_token
Checkout Address Info SubmittedCustomer enters shipping addressshipping_address, email, phone
Checkout Shipping Info SubmittedCustomer selects shipping methodshipping_amount, cart_total_amount
Payment Info SubmittedCustomer enters payment detailscheckout_token, cart_total_amount
Checkout CompletedCustomer completes purchaseorder_id, email, cart_total_amount, products[], shipping_address

Want to track additional interactions? See Sending Custom Events.


Server-Side Events

These events are synced from Shopify’s backend APIs every 10–15 minutes.

Order Events

EventDescriptionKey Properties
Order ReceivedNew order createdshopify_order_id, order_id, email, cart_total_amount, products[], discount[], utm_source/medium/campaign
Order FulfilledOrder marked as shippedfulfillment_id, tracking_number, fulfillment_speed, products[]
Order DeliveredOrder marked as deliveredshopify_order_id, delivery_date, delivery_speed
Order RefundedFull refund issuedshopify_order_id, refund_amount, reason
Order Partially RefundedPartial refund issuedshopify_order_id, refund_amount, refunded_items[]
Products PurchasedPer line item (disabled by default)product_id, title, sku, price, quantity

Abandonment Events

EventDescriptionKey Properties
Abandoned CheckoutCheckout not completedcheckout_id, email, cart_total_amount, products[], abandoned_checkout_url

Profile Events

EventDescriptionKey Properties
Set PropertyCustomer profile update$email, $first_name, $last_name, total_spent, order_count
AliasLinks anonymous to known IDdistinct_id, alias

Common Properties

All client-side events include these properties automatically.

Identity

PropertyTypeDescription
distinct_idStringUser identifier (customer ID or device ID)
$device_idStringAnonymous device identifier
$user_idStringShopify Customer ID (when known)
$insert_idStringUnique event ID for deduplication

Device & Browser

PropertyTypeDescription
$browserStringBrowser name
$deviceStringDevice type (Desktop, Mobile, Tablet)
$osStringOperating system
$screen_heightNumberScreen height in pixels
$screen_widthNumberScreen width in pixels
languageStringBrowser language

Page Context

PropertyTypeDescription
$current_urlStringFull page URL
page_titleStringPage title
path_nameStringURL path
$referrerStringReferring URL

Attribution

UTM parameters and click IDs are captured from landing page URLs.

PropertyTypeDescription
utm_sourceStringTraffic source
utm_mediumStringMarketing medium
utm_campaignStringCampaign name
utm_contentStringAd content identifier
utm_termStringPaid search keyword
gclidStringGoogle Ads click ID
fbclidStringMeta/Facebook click ID
msclkidStringMicrosoft Ads click ID
ttclidStringTikTok click ID

For the complete list of supported parameters, see Supported UTM Properties.

Metadata

PropertyTypeDescription
$sourceStringAlways Vendo - Shopify App
vendo_tracking_versionStringPixel version
event_typeStringEvent type identifier

Product Object

Product-related events include a products array with this structure:

PropertyTypeDescription
idStringShopify product ID (GID format)
product_idStringNumeric product ID
titleStringProduct title
typeStringProduct type
vendorStringProduct vendor
variant_idStringVariant ID
variant_titleStringVariant name (e.g., Black / Medium)
variant_priceStringVariant price
variant_currency_codeStringCurrency code
variant_skuStringSKU
quantityNumberQuantity (for cart/order events)
result_rankNumberPosition in search/collection results

Customer Profile Properties

Customer profiles are synced to destinations that support user properties (Mixpanel, Segment, Customer.io, OneSignal).

PropertyTypeDescription
$emailStringCustomer email
$first_nameStringFirst name
$last_nameStringLast name
$phoneStringPhone number
$createdDateTimeAccount creation date
shopify_customer_idStringShopify customer ID
total_spentNumberLifetime spend
order_countNumberTotal orders
verified_emailBooleanEmail verified
customer_tagsArrayShopify customer tags
first_order_dateDateTimeFirst purchase date
last_order_dateDateTimeMost recent purchase
email_marketing_consent_stateStringMarketing consent status
marketing_stateStringMarketing state
tax_exemptBooleanTax exemption status

Address Object

Shipping and billing addresses use this structure:

PropertyTypeDescription
firstNameStringFirst name
lastNameStringLast name
address1StringStreet address
cityStringCity
provinceStringState/province name
provinceCodeStringState/province code
countryStringCountry name
countryCodeStringCountry code (ISO)
zipStringPostal/ZIP code

Example Payloads

For complete JSON payload examples of each event, see the Mixpanel Integration documentation.

Last updated on