Skip to Content
SourcesTracking SDKOverview

Web Tracking

SDK + Ingestion API — Collect website events from your own domain and stream them to BigQuery. No third-party cookies, no ad blockers, full data ownership.

How It Works

Browser (your site) Vendo CDN / Your Domain BigQuery ┌──────────────────┐ ┌──────────────────────┐ ┌──────────────┐ │ Vendo SDK │───>│ Ingestion API │───>│ events │ │ (CDN snippet) │ │ /collect │ │ users │ │ │ │ │ │ groups │ │ track() │ │ Validate + │ │ aliases │ │ identify() │ │ Normalize │ │ │ │ page() │ │ │ │ │ └──────────────────┘ └──────────────────────┘ └──────────────┘ ▲ ▲ │ SDK loaded from │ Events sent to │ cdn.vendodata.com │ your endpoint │ (or your domain) │
  1. Your site loads the SDK from Vendo’s CDN (cdn.vendodata.com/sdk/v1/vendo.js) or your own domain. Events are sent to your ingestion endpoint, keeping data first-party.
  2. The SDK batches events (track, identify, page, group, alias) and sends them to your ingestion endpoint (/collect).
  3. The ingestion API validates and normalizes each event, then inserts rows into BigQuery tables.

Key Features

  • First-party tracking — SDK served from your domain, events sent to your domain. No third-party scripts.
  • Async snippet — A tiny inline script (~500 bytes) buffers all calls before the full SDK loads. Zero events lost.
  • Automatic enrichment — Session tracking, UTM parameters, click IDs (Google, Meta, TikTok, etc.), referrer, and device info captured automatically.
  • Batching and retries — Events are queued locally and sent in batches. Failed requests retry with exponential backoff.
  • BigQuery native — Events land directly in BigQuery tables you own. Run SQL, build dashboards, feed ML models.

What Gets Tracked

CategoryCaptured Automatically
Page viewsURL, path, title, referrer
SessionsSession ID, duration, timeout-based rotation
IdentityAnonymous ID (generated), User ID (after identify)
UTM parametersutm_source, utm_medium, utm_campaign, + 7 more (first-touch and last-touch)
Click IDsgclid, fbclid, msclkid, ttclid, sccid, dclid, twclid, wbraid, li_fat_id, ko_click_id
Device infoBrowser, OS, screen size, locale, user agent

BigQuery Tables

TableFed byDescription
eventstrack(), page()All custom and page view events
usersidentify()User profiles with traits
groupsgroup()Group/company profiles
aliasesalias()Identity merge records

Optional views: users_latest, groups_latest (most recent profile per user/group).

Integration Patterns

PatternBest ForSetup Effort
CDN snippet (recommended)Most websitesPaste into <head>
Self-hosted snippetMaximum first-party controlDeploy API + paste snippet
Direct script tagSimple pages, testingAdd <script src>
npm moduleSPAs (React, Vue, Next.js)Coming soon

Next Steps

Last updated on