OneSignal Events & Properties
Detailed reference of all events and properties Vendo can send to OneSignal. All property values are stored as strings since OneSignal does not support numeric types natively.
Events
| Event | Description | Source |
|---|---|---|
page_viewed | Customer visits a page across storefront, checkout, or order status | web |
product_viewed | Customer views a product details page | web |
collection_viewed | Customer views a product collection page | web |
search_submitted | Customer performs a storefront search | web |
product_added_to_cart | Product is added to cart | web |
product_removed_from_cart | Product is removed from cart | web |
cart_viewed | Customer views the cart page | web |
checkout_started | Customer starts checkout | web |
checkout_contact_info_submitted | Contact info step submitted | web |
checkout_address_info_submitted | Address info step submitted | web |
checkout_shipping_info_submitted | Shipping method selected | web |
payment_info_submitted | Payment details submitted | web |
checkout_completed | Checkout completed successfully | web |
alert_displayed | Checkout alert or warning displayed | web |
ui_extension_errored | Checkout UI extension runtime error | web |
all_custom_events | Custom Shopify customer events | web |
order_received | Triggered when a new order is created | server-side |
order_fulfilled | Triggered when an order is fulfilled | server-side |
order_delivered | Triggered when an order is delivered | server-side |
order_refunded | Triggered when an order is fully refunded | server-side |
order_partially_refunded | Triggered when an order is partially refunded | server-side |
cart_abandoned | Triggered when a checkout is abandoned | server-side |
Note: Client-side events are only sent after a user is identified (via push subscription, newsletter signup, login, or checkout). Anonymous visitors are not tracked in OneSignal.
OneSignal User Tags
All tag values are stored as strings. Client-side tags are set at checkout_completed (via the web pixel’s people.set / people.set_once compatibility layer, which PATCHes the OneSignal user’s properties.tags). Server-side tags are written by the Vendo pipeline from BigQuery customer records.
Identity & profile
| Tag | Type | Description | Source |
|---|---|---|---|
email | String | Customer email | web, server-side |
first_name | String | Customer first name | web, server-side |
last_name | String | Customer last name | web, server-side |
phone | String | Customer phone number | web |
shopify_customer_id | String | Shopify customer ID | web |
verified_email | String | Whether the customer’s email is verified (true/false) | server-side |
tax_exempt | String | Whether the customer is tax-exempt (true/false) | server-side |
customer_tags | String | Comma-separated Shopify customer tags | server-side |
customer_created_at | String | ISO timestamp when the Shopify customer was created | server-side |
first_seen | String | ISO timestamp of the first identification event | web |
Marketing consent
| Tag | Type | Description | Source |
|---|---|---|---|
marketing_state | String | Overall marketing consent state | server-side |
email_marketing_consent | String | Email marketing consent state | server-side |
Commerce stats
| Tag | Type | Description | Source |
|---|---|---|---|
total_spent | String | Lifetime spend | server-side |
order_count | String | Total orders | server-side |
first_order_date | String | ISO timestamp of the customer’s first order | server-side |
last_order_date | String | ISO timestamp of the customer’s most recent order | server-side |
Last-touch attribution
Captured at checkout_completed and overwritten on each checkout.
| Tag | Type | Description | Source |
|---|---|---|---|
utm_source | String | Last UTM source | web |
utm_medium | String | Last UTM medium | web |
utm_campaign | String | Last UTM campaign | web |
utm_content | String | Last UTM content | web |
utm_term | String | Last UTM term | web |
gclid | String | Google Ads click ID | web |
msclkid | String | Microsoft Ads click ID | web |
fbclid | String | Meta (Facebook/Instagram) click ID | web |
ttclid | String | TikTok click ID | web |
twclid | String | X (Twitter) click ID | web |
sccid | String | Snapchat click ID | web |
dclid | String | Google DoubleClick display click ID | web |
ko_click_id | String | Kakao click ID | web |
li_fat_id | String | LinkedIn first-party ad-tracking ID | web |
wbraid | String | Google Ads web-to-app click ID | web |
First-touch attribution (set once)
Written only if the tag is not already present on the OneSignal user.
| Tag | Type | Description | Source |
|---|---|---|---|
initial_utm_source | String | First-touch UTM source | web |
initial_utm_medium | String | First-touch UTM medium | web |
initial_utm_campaign | String | First-touch UTM campaign | web |
initial_utm_content | String | First-touch UTM content | web |
initial_utm_term | String | First-touch UTM term | web |
Segment membership
| Tag | Type | Description | Source |
|---|---|---|---|
shopify_segment_{segment_id} | String | Membership flag ("true") for each synced Shopify segment. One tag per segment. The {segment_id} is the numeric ID from Shopify’s segment GID. | server-side |
Segment sync is manual and tags only identified users. The sync runs when you click Sync on the Segments tab in the Vendo Shopify app — it is not yet on an automatic schedule. Only OneSignal users who already exist with a matching
external_id(email) get tagged; anonymous push subscribers and customers who haven’t been identified to OneSignal are skipped. Re-run the sync after large customer-acquisition windows so new subscribers pick up their segment tags.