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) │- 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. - The SDK batches events (track, identify, page, group, alias) and sends them to your ingestion endpoint (
/collect). - 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
| Category | Captured Automatically |
|---|---|
| Page views | URL, path, title, referrer |
| Sessions | Session ID, duration, timeout-based rotation |
| Identity | Anonymous ID (generated), User ID (after identify) |
| UTM parameters | utm_source, utm_medium, utm_campaign, + 7 more (first-touch and last-touch) |
| Click IDs | gclid, fbclid, msclkid, ttclid, sccid, dclid, twclid, wbraid, li_fat_id, ko_click_id |
| Device info | Browser, OS, screen size, locale, user agent |
BigQuery Tables
| Table | Fed by | Description |
|---|---|---|
events | track(), page() | All custom and page view events |
users | identify() | User profiles with traits |
groups | group() | Group/company profiles |
aliases | alias() | Identity merge records |
Optional views: users_latest, groups_latest (most recent profile per user/group).
Integration Patterns
| Pattern | Best For | Setup Effort |
|---|---|---|
| CDN snippet (recommended) | Most websites | Paste into <head> |
| Self-hosted snippet | Maximum first-party control | Deploy API + paste snippet |
| Direct script tag | Simple pages, testing | Add <script src> |
| npm module | SPAs (React, Vue, Next.js) | Coming soon |
Next Steps
- Quickstart — Get tracking in 5 minutes
- JavaScript SDK Reference — All methods, configuration, and advanced features
- API Reference — The
/collectendpoint and event contract - Self-Hosting — Deploy the ingestion API on Cloud Run
Last updated on