Skip to Content

BigQuery Integration

Vendo’s BigQuery integration streams your Shopify e-commerce data directly to Google BigQuery, giving you a powerful data warehouse for advanced analytics, custom reporting, and machine learning applications. Own your data and run unlimited SQL queries against your complete customer dataset.


Overview

The BigQuery integration provides:

  • Raw Data Access: Complete, unsampled Shopify data in your BigQuery project
  • Real-time Streaming: Client-side events streamed directly to BigQuery
  • Historical Sync: Full backfill of orders, customers, products, and more
  • SQL Analytics: Run complex queries for custom analysis
  • Data Ownership: Your data in your Google Cloud project

Key Benefits

  • No data sampling or limits
  • Combine Shopify data with other sources
  • Build custom dashboards and reports
  • Power machine learning models
  • Support data science workflows

Setup Instructions

Prerequisites

  • A Google Cloud Platform (GCP) account
  • A BigQuery project (or ability to create one)
  • Admin access to your Shopify store
  • The Vendo app installed on your Shopify store

Step 1: Create a BigQuery Project

If you don’t have a project:

  1. Go to Google Cloud Console 
  2. Create a new project or select existing one
  3. Enable the BigQuery API
  4. Note your Project ID

Step 2: Create a Service Account

  1. In GCP Console, go to IAM & Admin > Service Accounts
  2. Click Create Service Account
  3. Name it “Vendo Integration”
  4. Grant these roles:
    • BigQuery Data Editor
    • BigQuery Job User
  5. Create a JSON key and download it

Step 3: Configure in Vendo

  1. Open the Vendo app in your Shopify admin
  2. Navigate to Integrations > BigQuery
  3. Enter your credentials:
    • Project ID: Your GCP project ID
    • Service Account JSON: Upload or paste the JSON key
  4. Vendo will automatically create the dataset and tables

Step 4: Verify Connection

  1. Click “Test Connection” in Vendo
  2. Check BigQuery for the new dataset
  3. Tables will be created automatically

Data Tables

Vendo creates and maintains these tables in your BigQuery dataset:

Table NameDescriptionUpdate Frequency
ordersComplete order dataReal-time + backfill
customersCustomer profilesEvery few hours
productsProduct catalogDaily
eventsClient-side tracking eventsReal-time streaming
abandoned_checkoutsAbandoned cart dataHourly
fulfillmentsOrder fulfillment dataReal-time
inventory_itemsInventory levelsDaily
errorsIntegration error logsReal-time

Table Schemas

Orders Table

The orders table contains complete order information:

ColumnTypeDescription
idINTEGERShopify order ID
order_numberSTRINGDisplay order number
emailSTRINGCustomer email
created_atTIMESTAMPOrder creation time
updated_atTIMESTAMPLast update time
financial_statusSTRINGPayment status
fulfillment_statusSTRINGFulfillment state
currencySTRINGCurrency code
subtotal_priceFLOATOrder subtotal
total_priceFLOATOrder total
total_taxFLOATTax amount
total_discountsFLOATDiscount amount
total_shipping_price_setFLOATShipping cost
billing_addressRECORDBilling address details
shipping_addressRECORDShipping address details
line_itemsREPEATED RECORDProducts in order
customerRECORDCustomer information
discount_codesSTRINGDiscount codes used
discount_applicationsREPEATED RECORDDiscount details
payment_gateway_namesREPEATED STRINGPayment methods
tagsSTRINGOrder tags
noteSTRINGOrder notes
custom_order_attributesREPEATED RECORDCustom attributes
landing_siteSTRINGLanding page URL
referring_siteSTRINGReferrer URL
source_nameSTRINGOrder source
app_idINTEGERCreating app ID
app_nameSTRINGCreating app name
fulfillmentsREPEATED RECORDFulfillment records
refundsREPEATED RECORDRefund records
testBOOLEANTest order flag
confirmedBOOLEANConfirmation status
extracted_atTIMESTAMPSync timestamp
is_deletedBOOLEANDeletion flag

Line Items Structure

Each line item in an order contains:

ColumnTypeDescription
idINTEGERLine item ID
product_idINTEGERProduct ID
variant_idINTEGERVariant ID
titleSTRINGProduct title
variant_titleSTRINGVariant title
skuSTRINGSKU
quantityINTEGERQuantity
priceFLOATUnit price
total_discountFLOATLine discount
vendorSTRINGVendor name
fulfillment_serviceSTRINGFulfillment service
fulfillment_statusSTRINGItem fulfillment status
gift_cardBOOLEANIs gift card
taxableBOOLEANIs taxable
tax_linesREPEATED RECORDTax details
propertiesREPEATED RECORDCustom properties
discount_allocationsREPEATED RECORDDiscount allocations

Customers Table

ColumnTypeDescription
idINTEGERShopify customer ID
emailSTRINGCustomer email
first_nameSTRINGFirst name
last_nameSTRINGLast name
phoneSTRINGPhone number
created_atTIMESTAMPAccount creation
updated_atTIMESTAMPLast update
orders_countINTEGERTotal orders
total_spentSTRINGLifetime spend
verified_emailBOOLEANEmail verified
accepts_marketingBOOLEANMarketing consent
tax_exemptBOOLEANTax exemption
tagsSTRINGCustomer tags
noteSTRINGAdmin notes
stateSTRINGMarketing state
addressesREPEATED RECORDSaved addresses
default_addressRECORDDefault address
email_marketing_consentRECORDEmail consent details
sms_marketing_consentRECORDSMS consent details
last_order_idINTEGERLast order ID
last_order_nameSTRINGLast order number
extracted_atTIMESTAMPSync timestamp
is_deletedBOOLEANDeletion flag

Events Table

Client-side events streamed to BigQuery:

ColumnTypeDescription
idINTEGEREvent ID
subject_idINTEGERRelated entity ID
subject_typeSTRINGEntity type (Order, Customer, etc.)
verbSTRINGEvent action
messageSTRINGEvent message
descriptionSTRINGEvent description
bodySTRINGEvent payload (JSON)
pathSTRINGURL path
authorSTRINGEvent author
argumentsREPEATED STRINGEvent arguments
created_atTIMESTAMPEvent timestamp
extracted_atTIMESTAMPSync timestamp
is_deletedBOOLEANDeletion flag

Abandoned Checkouts Table

ColumnTypeDescription
idINTEGERCheckout ID
tokenSTRINGCheckout token
emailSTRINGCustomer email
created_atTIMESTAMPCheckout creation
updated_atTIMESTAMPLast update
completed_atTIMESTAMPCompletion time (null if abandoned)
abandoned_checkout_urlSTRINGRecovery URL
currencySTRINGCurrency code
subtotal_priceFLOATCart subtotal
total_priceFLOATCart total
total_taxFLOATTax amount
total_discountsFLOATDiscounts applied
billing_addressRECORDBilling info
shipping_addressRECORDShipping info
line_itemsREPEATED RECORDCart items
discount_codesSTRINGDiscount codes
buyer_accepts_marketingBOOLEANMarketing consent
source_nameSTRINGSource
note_attributesREPEATED RECORDCustom attributes
customerRECORDCustomer details
extracted_atTIMESTAMPSync timestamp
is_deletedBOOLEANDeletion flag

Fulfillments Structure (Nested in Orders)

ColumnTypeDescription
idINTEGERFulfillment ID
order_idINTEGERParent order ID
statusSTRINGFulfillment status
shipment_statusSTRINGShipping status
serviceSTRINGFulfillment service
tracking_companySTRINGCarrier name
tracking_numberSTRINGTracking number
tracking_urlSTRINGTracking URL
tracking_numbersREPEATED STRINGAll tracking numbers
tracking_urlsREPEATED STRINGAll tracking URLs
delivery_dateTIMESTAMPDelivery confirmation
created_atTIMESTAMPFulfillment creation
updated_atTIMESTAMPLast update
line_itemsREPEATED RECORDFulfilled items
location_idINTEGEROrigin location
receiptRECORDReceipt details
origin_addressRECORDShip-from address

Refunds Structure (Nested in Orders)

ColumnTypeDescription
idINTEGERRefund ID
order_idINTEGERParent order ID
created_atTIMESTAMPRefund creation
processed_atTIMESTAMPProcessing time
refund_amountFLOATTotal refund amount
noteSTRINGRefund note
restockBOOLEANItems restocked
refund_line_itemsREPEATED RECORDRefunded items
transactionsREPEATED RECORDTransaction details
order_adjustmentsREPEATED RECORDOrder adjustments

Events Streamed

Client-Side Events

Events captured from customer browser sessions:

Event NameDescription
page_viewedPage view
product_viewedProduct page view
collection_viewedCollection page view
search_submittedSearch performed
product_added_to_cartAdd to cart
product_removed_from_cartRemove from cart
cart_viewedCart page view
checkout_startedCheckout initiated
checkout_contact_info_submittedContact info entered
checkout_address_info_submittedAddress entered
checkout_shipping_info_submittedShipping selected
payment_info_submittedPayment info entered
checkout_completedPurchase completed

Client-Side Event Schema

All client-side events are inserted into an events table with the following schema:

ColumnTypeDescription
event_nameSTRINGLowercase event name (e.g., “page_viewed”)
event_timestampTIMESTAMPWhen the event occurred
user_idSTRINGShopify Customer ID (null for anonymous)
anonymous_idSTRINGShopify device/client ID
session_idSTRINGBrowser session ID
page_urlSTRINGFull page URL
page_titleSTRINGDocument title
page_pathSTRINGURL pathname
referrerSTRINGReferring URL
device_typeSTRINGDevice type (Desktop, Mobile, Tablet)
browserSTRINGBrowser name
osSTRINGOperating system
screen_widthINTEGERScreen width in pixels
screen_heightINTEGERScreen height in pixels
languageSTRINGBrowser language
currencySTRINGCurrency code
valueFLOATEvent value (cart total, product price, etc.)
utm_sourceSTRINGUTM source parameter
utm_mediumSTRINGUTM medium parameter
utm_campaignSTRINGUTM campaign parameter
utm_contentSTRINGUTM content parameter
utm_termSTRINGUTM term parameter
gclidSTRINGGoogle Click ID
fbclidSTRINGFacebook Click ID
msclkidSTRINGMicrosoft Click ID
ttclidSTRINGTikTok Click ID
propertiesSTRINGEvent-specific properties (JSON)
productsSTRINGProduct array (JSON)
sourceSTRINGSource identifier
versionSTRINGTracking version
insert_idSTRINGUnique event ID for deduplication

Client-Side Event Payloads

Below are example payloads for each client-side event as inserted into BigQuery.

Page Viewed Event

{ "event_name": "page_viewed", "event_timestamp": "2024-01-15T10:30:00.000Z", "user_id": null, "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/collections/summer", "page_title": "Summer Collection – My Store", "page_path": "/collections/summer", "referrer": "https://google.com", "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "screen_width": 1440, "screen_height": 900, "language": "en-US", "currency": "USD", "value": 0, "utm_source": "google", "utm_medium": "cpc", "utm_campaign": "summer-sale", "utm_content": null, "utm_term": null, "gclid": "CjwKCAjw...", "fbclid": null, "msclkid": null, "ttclid": null, "properties": "{}", "products": null, "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "49b71cd2-295b-476a-a345-0eb50bd13b57" }

Product Viewed Event

{ "event_name": "product_viewed", "event_timestamp": "2024-01-15T10:32:00.000Z", "user_id": null, "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/products/classic-tshirt", "page_title": "Classic T-Shirt – My Store", "page_path": "/products/classic-tshirt", "referrer": "https://mystore.com/collections/all", "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "screen_width": 1440, "screen_height": 900, "language": "en-US", "currency": "USD", "value": 29.99, "utm_source": "google", "utm_medium": "cpc", "utm_campaign": null, "properties": "{\"product_id\":\"gid://shopify/Product/7894561230\",\"product_title\":\"Classic T-Shirt\"}", "products": "[{\"product_id\":\"gid://shopify/Product/7894561230\",\"sku\":\"TSHIRT-BLK-M\",\"name\":\"Classic T-Shirt\",\"price\":29.99,\"quantity\":1,\"variant_id\":\"gid://shopify/ProductVariant/42345678901\",\"variant_title\":\"Black / Medium\",\"brand\":\"My Brand\",\"category\":\"Apparel\"}]", "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "prod-view-event-id-123" }

Product Added To Cart Event

{ "event_name": "product_added_to_cart", "event_timestamp": "2024-01-15T10:35:00.000Z", "user_id": null, "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/products/classic-tshirt", "page_title": "Classic T-Shirt – My Store", "page_path": "/products/classic-tshirt", "referrer": null, "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "screen_width": 1440, "screen_height": 900, "language": "en-US", "currency": "USD", "value": 59.98, "utm_source": "google", "utm_medium": "cpc", "properties": "{\"quantity\":2}", "products": "[{\"product_id\":\"gid://shopify/Product/7894561230\",\"sku\":\"TSHIRT-BLK-M\",\"name\":\"Classic T-Shirt\",\"price\":29.99,\"quantity\":2,\"variant_id\":\"gid://shopify/ProductVariant/42345678901\",\"variant_title\":\"Black / Medium\",\"brand\":\"My Brand\",\"category\":\"Apparel\"}]", "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "add-cart-event-id-456" }

Cart Viewed Event

{ "event_name": "cart_viewed", "event_timestamp": "2024-01-15T10:38:00.000Z", "user_id": null, "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/cart", "page_title": "Your Cart – My Store", "page_path": "/cart", "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "currency": "USD", "value": 149.97, "properties": "{\"quantity\":3}", "products": "[{\"product_id\":\"gid://shopify/Product/7894561230\",\"name\":\"Classic T-Shirt\",\"price\":29.99,\"quantity\":2},{\"product_id\":\"gid://shopify/Product/7894561231\",\"name\":\"Running Shorts\",\"price\":45.00,\"quantity\":1}]", "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "cart-view-event-id-789" }

Checkout Started Event

{ "event_name": "checkout_started", "event_timestamp": "2024-01-15T10:40:00.000Z", "user_id": null, "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/checkouts/abc123", "page_title": "Checkout – My Store", "page_path": "/checkouts/abc123", "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "currency": "USD", "value": 162.49, "utm_source": "google", "utm_medium": "cpc", "utm_campaign": "summer-sale", "properties": "{\"checkout_token\":\"abc123def456\",\"order_id\":\"gid://shopify/Order/5363269534010\",\"cart_subtotal_amount\":149.97,\"tax_amount\":12.52,\"shipping_amount\":0}", "products": "[{\"product_id\":\"gid://shopify/Product/7894561230\",\"name\":\"Classic T-Shirt\",\"price\":29.99,\"quantity\":2}]", "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "checkout-started-id-101" }

Checkout Completed Event

{ "event_name": "checkout_completed", "event_timestamp": "2024-01-15T10:45:00.000Z", "user_id": "6359703453860", "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/checkouts/abc123/thank_you", "page_title": "Thank you – My Store", "page_path": "/checkouts/abc123/thank_you", "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "currency": "USD", "value": 162.49, "utm_source": "google", "utm_medium": "cpc", "utm_campaign": "summer-sale", "gclid": "CjwKCAjw...", "properties": "{\"checkout_token\":\"abc123def456\",\"order_id\":\"gid://shopify/Order/5363269534010\",\"cart_subtotal_amount\":149.97,\"tax_amount\":12.52,\"shipping_amount\":10.00,\"email\":\"customer@email.com\",\"phone\":\"+14155551234\"}", "products": "[{\"product_id\":\"gid://shopify/Product/7894561230\",\"name\":\"Classic T-Shirt\",\"price\":29.99,\"quantity\":2}]", "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "checkout-completed-id-202" }

Collection Viewed Event

{ "event_name": "collection_viewed", "event_timestamp": "2024-01-15T10:28:00.000Z", "user_id": null, "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/collections/summer", "page_title": "Summer Collection – My Store", "page_path": "/collections/summer", "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "currency": "USD", "value": 0, "properties": "{\"collection_id\":\"gid://shopify/Collection/123456789\",\"collection_title\":\"Summer Collection\"}", "products": "[{\"product_id\":\"gid://shopify/Product/7894561230\",\"name\":\"Classic T-Shirt\",\"price\":29.99,\"quantity\":1},{\"product_id\":\"gid://shopify/Product/7894561231\",\"name\":\"Running Shorts\",\"price\":45.00,\"quantity\":1}]", "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "collection-viewed-id-303" }

Search Submitted Event

{ "event_name": "search_submitted", "event_timestamp": "2024-01-15T10:25:00.000Z", "user_id": null, "anonymous_id": "shop_client_abc123", "session_id": "sess_xyz789", "page_url": "https://mystore.com/search?q=t-shirt", "page_title": "Search Results – My Store", "page_path": "/search", "device_type": "Desktop", "browser": "Chrome", "os": "Mac OS X", "currency": "USD", "value": 0, "properties": "{\"search_query\":\"t-shirt\"}", "products": "[{\"product_id\":\"gid://shopify/Product/7894561230\",\"name\":\"Classic T-Shirt\",\"price\":29.99,\"quantity\":1}]", "source": "vendo_web_pixel", "version": "1.0.0", "insert_id": "search-submitted-id-404" }

Querying Client-Side Events

Example queries for client-side event data:

-- Page views by day SELECT DATE(event_timestamp) as date, COUNT(*) as page_views, COUNT(DISTINCT anonymous_id) as unique_visitors FROM `your_project.your_dataset.events` WHERE event_name = 'page_viewed' GROUP BY date ORDER BY date DESC -- Product view to add-to-cart conversion SELECT DATE(pv.event_timestamp) as date, COUNT(DISTINCT pv.insert_id) as product_views, COUNT(DISTINCT atc.insert_id) as add_to_carts, SAFE_DIVIDE(COUNT(DISTINCT atc.insert_id), COUNT(DISTINCT pv.insert_id)) * 100 as conversion_rate FROM `your_project.your_dataset.events` pv LEFT JOIN `your_project.your_dataset.events` atc ON pv.anonymous_id = atc.anonymous_id AND atc.event_name = 'product_added_to_cart' AND DATE(atc.event_timestamp) = DATE(pv.event_timestamp) WHERE pv.event_name = 'product_viewed' GROUP BY date ORDER BY date DESC -- UTM attribution for completed checkouts SELECT utm_source, utm_medium, utm_campaign, COUNT(*) as conversions, SUM(value) as revenue FROM `your_project.your_dataset.events` WHERE event_name = 'checkout_completed' AND event_timestamp >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) GROUP BY utm_source, utm_medium, utm_campaign ORDER BY revenue DESC

User Identification

Customer ID Mapping

SourceBigQuery ColumnDescription
Shopify Customer IDcustomer.idPrimary identifier
Emailcustomer.email / emailEmail address
Phonecustomer.phonePhone number

Joining Data

Link events to orders:

-- Link events to orders by customer SELECT e.*, o.order_number, o.total_price FROM events e JOIN orders o ON e.subject_id = o.customer.id WHERE e.subject_type = 'Customer'

Example Queries

Revenue by Day

SELECT DATE(created_at) as order_date, COUNT(*) as orders, SUM(total_price) as revenue, AVG(total_price) as aov FROM `your_project.your_dataset.orders` WHERE financial_status = 'paid' AND created_at >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) GROUP BY order_date ORDER BY order_date DESC

Top Products by Revenue

SELECT li.product_id, li.title as product_name, COUNT(*) as times_ordered, SUM(li.quantity) as units_sold, SUM(li.price * li.quantity) as revenue FROM `your_project.your_dataset.orders` o, UNNEST(line_items) as li WHERE o.financial_status = 'paid' GROUP BY li.product_id, li.title ORDER BY revenue DESC LIMIT 20

Customer Lifetime Value

SELECT c.id as customer_id, c.email, c.first_name, c.last_name, COUNT(o.id) as order_count, SUM(o.total_price) as lifetime_value, MIN(o.created_at) as first_order, MAX(o.created_at) as last_order, DATE_DIFF(MAX(o.created_at), MIN(o.created_at), DAY) as customer_lifespan_days FROM `your_project.your_dataset.customers` c LEFT JOIN `your_project.your_dataset.orders` o ON c.id = o.customer.id WHERE o.financial_status = 'paid' GROUP BY c.id, c.email, c.first_name, c.last_name ORDER BY lifetime_value DESC

Abandoned Cart Analysis

SELECT DATE(created_at) as date, COUNT(*) as abandoned_carts, SUM(total_price) as abandoned_value, AVG(total_price) as avg_abandoned_value, COUNT(DISTINCT email) as unique_customers FROM `your_project.your_dataset.abandoned_checkouts` WHERE completed_at IS NULL AND created_at >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) GROUP BY date ORDER BY date DESC

Fulfillment Speed Analysis

SELECT DATE(o.created_at) as order_date, COUNT(DISTINCT o.id) as orders, AVG(DATE_DIFF(f.created_at, o.created_at, DAY)) as avg_fulfillment_days, AVG(DATE_DIFF(f.delivery_date, f.created_at, DAY)) as avg_delivery_days FROM `your_project.your_dataset.orders` o, UNNEST(fulfillments) as f WHERE f.delivery_date IS NOT NULL GROUP BY order_date ORDER BY order_date DESC

Cohort Analysis (First Purchase Month)

WITH customer_cohorts AS ( SELECT customer.id as customer_id, FORMAT_DATE('%Y-%m', MIN(created_at)) as cohort_month, DATE_DIFF(created_at, MIN(created_at) OVER (PARTITION BY customer.id), MONTH) as months_since_first FROM `your_project.your_dataset.orders` WHERE financial_status = 'paid' GROUP BY customer.id, created_at ) SELECT cohort_month, months_since_first, COUNT(DISTINCT customer_id) as customers, COUNT(*) as orders FROM customer_cohorts GROUP BY cohort_month, months_since_first ORDER BY cohort_month, months_since_first

Discount Code Performance

SELECT JSON_EXTRACT_SCALAR(d, '$.code') as discount_code, JSON_EXTRACT_SCALAR(d, '$.type') as discount_type, COUNT(*) as times_used, SUM(total_price) as revenue_with_discount, AVG(total_discounts) as avg_discount_amount FROM `your_project.your_dataset.orders`, UNNEST(JSON_EXTRACT_ARRAY(discount_codes)) as d WHERE financial_status = 'paid' GROUP BY discount_code, discount_type ORDER BY times_used DESC

Traffic Source Attribution

SELECT REGEXP_EXTRACT(landing_site, r'utm_source=([^&]+)') as utm_source, REGEXP_EXTRACT(landing_site, r'utm_medium=([^&]+)') as utm_medium, REGEXP_EXTRACT(landing_site, r'utm_campaign=([^&]+)') as utm_campaign, COUNT(*) as orders, SUM(total_price) as revenue, AVG(total_price) as aov FROM `your_project.your_dataset.orders` WHERE financial_status = 'paid' AND landing_site IS NOT NULL GROUP BY utm_source, utm_medium, utm_campaign ORDER BY revenue DESC

What to Expect in BigQuery

After Setup

  1. Dataset Created: vendo_{shop_name} dataset appears
  2. Tables Created: All schema tables are created
  3. Historical Backfill: Past data loads within hours
  4. Real-time Events: Client events stream immediately

Data Freshness

Data TypeLatency
Client-side eventsReal-time (seconds)
OrdersNear real-time (minutes)
CustomersEvery few hours
ProductsDaily
Abandoned cartsHourly

Storage Costs

BigQuery pricing:

  • Storage: ~$0.02/GB/month
  • Queries: ~$5/TB scanned (first 1TB free/month)

Estimated data volume (varies by store):

  • Small store: < 1 GB/month
  • Medium store: 1-10 GB/month
  • Large store: 10-100 GB/month

Advanced Use Cases

1. Connect to BI Tools

Connect BigQuery to:

  • Looker Studio (free): Direct BigQuery connector
  • Tableau: BigQuery connector available
  • Power BI: Google BigQuery connector
  • Metabase: Built-in BigQuery support

2. Machine Learning

Use BigQuery ML for:

  • Customer churn prediction
  • Product recommendations
  • Demand forecasting
  • Customer segmentation
-- Example: Create a purchase prediction model CREATE OR REPLACE MODEL `your_dataset.purchase_prediction` OPTIONS(model_type='logistic_reg') AS SELECT IF(order_count > 0, 1, 0) as will_purchase, page_views, products_viewed, cart_adds, days_since_last_visit FROM customer_behavior_features

3. Data Warehouse Integration

Join with other data sources:

  • Ad platform spend data
  • CRM data
  • Email marketing metrics
  • Inventory systems

Troubleshooting

Data Not Appearing

  1. Check service account permissions: Must have BigQuery Data Editor
  2. Verify project ID: Ensure correct project ID configured
  3. Check dataset: Look for vendo_* dataset in BigQuery

Query Errors

  1. Table not found: Check dataset and table names
  2. Permission denied: Verify IAM roles
  3. Quota exceeded: Check BigQuery quotas

Stale Data

  1. Check sync status: View integration status in Vendo
  2. Verify connection: Test connection in settings
  3. Review error logs: Check errors table for issues

Support

For assistance with your BigQuery integration:

Last updated on