BigQuery Client-Side Events
Schema for the client-side Shopify events that Vendo streams to the events table in BigQuery.
Last reviewed September 15, 2026
Vendo streams client-side Shopify storefront events to BigQuery in real time. The Web Pixel extension sends the events to the Vendo ingest API, which writes them to your BigQuery dataset.
Events Captured
The pixel listens for the Shopify event in the first column. It sends the event to BigQuery with the name in the event_name column.
| Shopify event | event_name in BigQuery | Description |
|---|---|---|
page_viewed | Page Viewed | Page view |
product_viewed | Product Viewed | Product page view |
collection_viewed | Collection Viewed | Collection page view |
search_submitted | Search Submitted | Search performed |
product_added_to_cart | Product Added To Cart | Add to cart |
product_removed_from_cart | Product Removed From Cart | Remove from cart |
cart_viewed | Cart Viewed | Cart page view |
checkout_started | Checkout Started | Checkout initiated |
checkout_contact_info_submitted | Checkout Contact Info Submitted | Contact info entered |
checkout_address_info_submitted | Checkout Address Info Submitted | Address entered |
checkout_shipping_info_submitted | Checkout Shipping Info Submitted | Shipping selected |
payment_info_submitted | Payment Info Submitted | Payment info entered |
checkout_completed | Checkout Completed | Purchase completed |
| None (Vendo theme extension) | Customer Logged In | Customer logged in. Disabled by default |
| None (Vendo theme extension) | Newsletter Registered | Newsletter signup submitted. Disabled by default |
alert_displayed | alert_displayed | Checkout alert shown. Disabled by default |
ui_extension_errored | ui_extension_errored | Checkout UI extension failed. Disabled by default |
Event Schema
Vendo writes all client-side events to the events table. The table has this schema:
| Column | Type | Description |
|---|---|---|
event_id | STRING | Unique event ID |
event_name | STRING | Event name (for example, “page_viewed”) |
event_type | STRING | Event type |
timestamp | TIMESTAMP | When the event occurred |
sent_at | TIMESTAMP | When the browser sent the event |
received_at | TIMESTAMP | When the ingest API received the event |
user_id | STRING | Shopify Customer ID (null for anonymous) |
anonymous_id | STRING | Shopify device/client ID |
group_id | STRING | Group ID |
session_id | STRING | Browser session ID |
onesignal_id | STRING | OneSignal ID |
source | STRING | Source identifier |
library | STRING | Tracking library |
context_ip | STRING | IP address |
context_user_agent | STRING | Browser user agent |
context_locale | STRING | Browser language |
context_page_url | STRING | Full page URL |
context_page_path | STRING | URL pathname |
context_page_title | STRING | Document title |
context_page_referrer | STRING | Referring URL |
context_device | STRING | Device type |
context_os | STRING | Operating system |
context_browser | STRING | Browser name |
context_screen_height | INT64 | Screen height in pixels |
context_screen_width | INT64 | Screen width in pixels |
context_campaign_source | STRING | UTM source parameter |
context_campaign_medium | STRING | UTM medium parameter |
context_campaign_name | STRING | UTM campaign parameter |
context_campaign_content | STRING | UTM content parameter |
context_campaign_term | STRING | UTM term parameter |
context_campaign_id | STRING | UTM ID parameter |
context_campaign_source_platform | STRING | UTM source platform parameter |
context_campaign_campaign_id | STRING | UTM campaign ID parameter |
context_campaign_creative_format | STRING | UTM creative format parameter |
context_campaign_marketing_tactic | STRING | UTM marketing tactic parameter |
context_click_id_gclid | STRING | Google Click ID |
context_click_id_msclkid | STRING | Microsoft Click ID |
context_click_id_fbclid | STRING | Facebook Click ID |
context_click_id_ttclid | STRING | TikTok Click ID |
context_click_id_twclid | STRING | twclid click ID parameter |
context_click_id_sccid | STRING | sccid click ID parameter |
context_click_id_dclid | STRING | dclid click ID parameter |
context_click_id_ko_click_id | STRING | ko_click_id click ID parameter |
context_click_id_li_fat_id | STRING | li_fat_id click ID parameter |
context_click_id_wbraid | STRING | wbraid click ID parameter |
context_click_id_aleid | STRING | aleid click ID parameter |
context_click_id_epik | STRING | epik click ID parameter |
context_click_id_gbraid | STRING | gbraid click ID parameter |
context_click_id_gad_source | STRING | gad_source click ID parameter |
context | JSON | Full event context |
properties | JSON | Event-specific properties |
tags | REPEATED STRING | Tags |
segments | REPEATED STRING | Segments |
Example Queries
Replace your_project.your_dataset with your project and dataset.
Daily Visitors by UTM Source
SELECT
DATE(timestamp) as day,
context_campaign_source as utm_source,
COUNT(*) as page_views,
COUNT(DISTINCT anonymous_id) as visitors
FROM `your_project.your_dataset.events`
WHERE event_name = 'Page Viewed'
AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY day, utm_source
ORDER BY day DESC, page_views DESCStorefront Funnel
SELECT
COUNT(DISTINCT IF(event_name = 'Product Viewed', anonymous_id, NULL)) as viewed_product,
COUNT(DISTINCT IF(event_name = 'Product Added To Cart', anonymous_id, NULL)) as added_to_cart,
COUNT(DISTINCT IF(event_name = 'Checkout Started', anonymous_id, NULL)) as started_checkout,
COUNT(DISTINCT IF(event_name = 'Checkout Completed', anonymous_id, NULL)) as completed_checkout
FROM `your_project.your_dataset.events`
WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)Paid Clicks by Platform
SELECT
CASE
WHEN context_click_id_gclid IS NOT NULL THEN 'Google Ads'
WHEN context_click_id_fbclid IS NOT NULL THEN 'Meta Ads'
WHEN context_click_id_ttclid IS NOT NULL THEN 'TikTok Ads'
WHEN context_click_id_msclkid IS NOT NULL THEN 'Microsoft Ads'
ELSE 'Other'
END as platform,
COUNT(DISTINCT session_id) as sessions
FROM `your_project.your_dataset.events`
WHERE event_name = 'Page Viewed'
AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY platform
ORDER BY sessions DESCLast updated on