Technical foundations
Architecture, databases, custom domains, custom events, goals, funnels, and API access.
Architecture
Separated by design
Eurolytics separates event ingestion from the dashboard. The ingestion service is a stateless Go binary that accepts events, classifies traffic, and writes to ClickHouse. The dashboard is a Next.js 14 application that reads from ClickHouse and manages accounts via PostgreSQL. The two share no runtime dependencies.
INTERNET
┌──────────────┴──────────────┐
▼ ▼
events.eurolytics.app eurolytics.app
Go + SQLite WAL Next.js + Postgres
└──────────┬──────────────────┘
▼
ClickHouse
Data Layer
ClickHouse for speed, Postgres for structure
ClickHouse
Columnar OLAP database optimized for time-series analytics
- All pageview and event data
- AI crawler activity logs
- Aggregations and trend queries
- Partitioned by site_id for fast queries
PostgreSQL
Relational database for structured metadata
- User accounts and authentication
- Site configurations and team membership
- Goals, funnels, and conversion definitions
- Bot pattern definitions for classifier sync
Tracking
Custom events, goals, and funnels
Beyond pageviews, Eurolytics tracks custom events you define — sign-ups, purchases, button clicks, or anything else. Create Goals in your site settings to track conversion rates, and build Funnels (2-8 steps) to see where visitors drop off in multi-page flows.
eurolytics('signup_complete', {
plan: 'pro',
source: 'landing_page'
})
Domains
Custom tracking domains via CNAME
Point a subdomain like analytics.yoursite.com to our ingestion endpoint via CNAME. This improves AI crawler detection because bots are more likely to fetch resources from the same domain as your content.
Configure it in Settings → Tracking Domain. DNS verification is built in — add the CNAME record and Eurolytics confirms it automatically.
API
Programmatic access
Eurolytics provides API access for querying analytics data, managing sites, and creating goals programmatically. You can export data via the dashboard in JSON format at any time.
Common questions
What's the tracker script size?
Just 1.2KB gzipped. That's tiny by modern standards, smaller than a thumbnail image. The script loads asynchronously and has zero impact on your page speed or Core Web Vitals. Perfect for high-performance sites.
Do you offer an API?
Yes, we're building a full REST API for querying analytics data, creating goals, and managing sites programmatically. It's in our roadmap for Q1 2026. For now, you can export data via JSON and integrate via the dashboard.
Do you support custom domains (CNAME)?
Yes, we support custom tracking domains via CNAME. This improves bot detection accuracy because crawlers are more likely to fetch same-domain resources. Configure it in Settings -> Tracking Domain. Full setup is coming soon.
Can I track custom events?
Yes. You can define custom events (sign-ups, purchases, etc.) in the dashboard, and our JavaScript tracker sends them automatically. Create Goals in Settings -> Goals, and Eurolytics will start tracking and displaying conversions.
What databases do you use?
ClickHouse for analytics (fast OLAP queries, time-series optimized) and PostgreSQL for metadata (user accounts, site configs, team membership). We deliberately kept these separate so ingestion can run independently.