v0.2.0 Release Notes¶
Release Date: 2026-04-27
Highlights¶
- Analytics integration with Amplitude and Mixpanel via omnidxi
- Fan-out publisher for multi-destination event dispatch
- Environment-based configuration system
- Backend-first analytics that bypasses ad blockers
Architecture¶
This release adds an analytics integration layer that forwards events to external DXI providers:
┌──────────────────────────────────────────────────────────────────────────────┐
│ ProductGraph Service │
│ │
│ ┌────────────────┐ ┌──────────────────────────────────────────────────┐ │
│ │ Event Handler │───▶│ MultiPublisher │ │
│ │ POST /v1/events│ │ │ │
│ └────────────────┘ │ ┌─────────────────┐ ┌───────────────────────┐ │ │
│ │ │ Memory Publisher│ │ Analytics Adapter │ │ │
│ │ │ (Storage) │ │ (omnidxi) │ │ │
│ │ └─────────────────┘ └───────────┬───────────┘ │ │
│ └───────────────────────────────────┼──────────────┘ │
└────────────────────────────────────────────────────────────┼─────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────────────┐
│ omnidxi MultiTracker │
│ │
│ ┌───────────────────────┐ ┌───────────────────────┐ │
│ │ Amplitude Tracker │ │ Mixpanel Tracker │ │
│ │ (omni-amplitude) │ │ (omni-mixpanel) │ │
│ └───────────┬───────────┘ └───────────┬───────────┘ │
└────────────────────────┼────────────────────────────┼────────────────────────┘
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ Amplitude │ │ Mixpanel │
└──────────────────┘ └──────────────────┘
Why Backend-First Analytics?¶
| Benefit | Description |
|---|---|
| Ad Blocker Bypass | Server-side forwarding not blocked by browser extensions |
| Single Source of Truth | All events flow through ProductGraph |
| Unified Schema | OTel-compatible events translate automatically |
| Multi-Provider | Send to Amplitude and Mixpanel simultaneously |
| Zero Frontend Changes | Existing SDK integration works as-is |
What's New¶
Analytics Adapter¶
Maps ProductGraph events to omnidxi format:
// ProductGraph event → omnidxi event
adapter := analytics.NewAdapter(tracker)
adapter.Publish(ctx, events) // Forwards to Amplitude/Mixpanel
Event type mapping:
| ProductGraph Event | Amplitude | Mixpanel |
|---|---|---|
page.view |
Page View | Page View |
ui.click |
User Action | Track |
ui.input |
User Action | Track |
state.change |
State Change | Track |
journey.step |
Journey Event | Track |
error |
Error Event | Track |
MultiPublisher¶
Parallel fan-out to multiple event destinations:
publisher := events.NewMultiPublisher(
memoryPublisher, // Storage
analyticsAdapter, // Amplitude/Mixpanel
)
publisher.Publish(ctx, events) // Parallel dispatch
Environment Configuration¶
# Enable analytics integration
export ANALYTICS_ENABLED=true
# Amplitude configuration
export AMPLITUDE_ENABLED=true
export AMPLITUDE_API_KEY=your-amplitude-api-key
# Mixpanel configuration
export MIXPANEL_ENABLED=true
export MIXPANEL_TOKEN=your-mixpanel-project-token
| Variable | Description | Default |
|---|---|---|
ANALYTICS_ENABLED |
Enable analytics integration | false |
AMPLITUDE_ENABLED |
Enable Amplitude provider | false |
AMPLITUDE_API_KEY |
Amplitude API key | - |
MIXPANEL_ENABLED |
Enable Mixpanel provider | false |
MIXPANEL_TOKEN |
Mixpanel project token | - |
Dependencies¶
| Dependency | Version | Purpose |
|---|---|---|
| omnidxi | v0.1.0 | Batteries-included DXI client |
| omni-amplitude | v0.1.0 | Amplitude adapter (indirect) |
| omni-mixpanel | v0.1.0 | Mixpanel adapter (indirect) |
| omnidxi-core | v0.1.0 | Core interfaces (indirect) |
Getting Started¶
# Start with Amplitude only
ANALYTICS_ENABLED=true \
AMPLITUDE_ENABLED=true \
AMPLITUDE_API_KEY=your-key \
go run ./cmd/ingestion
# Start with both providers
ANALYTICS_ENABLED=true \
AMPLITUDE_ENABLED=true \
AMPLITUDE_API_KEY=amp-key \
MIXPANEL_ENABLED=true \
MIXPANEL_TOKEN=mp-token \
go run ./cmd/ingestion
Docker Compose¶
services:
ingestion:
build: .
environment:
- PORT=8080
- ANALYTICS_ENABLED=true
- AMPLITUDE_ENABLED=true
- AMPLITUDE_API_KEY=${AMPLITUDE_API_KEY}
- MIXPANEL_ENABLED=true
- MIXPANEL_TOKEN=${MIXPANEL_TOKEN}
ports:
- "8080:8080"
Documentation¶
Upgrading from v0.1.0¶
No breaking changes. Existing deployments continue to work without analytics integration.
To enable analytics:
- Set environment variables for your providers
- Restart the service
Events will automatically forward to configured providers.
Known Limitations¶
- No GraphQL API yet (planned for v0.3.0)
- No provider health checks in
/readyendpoint - Synchronous event forwarding (async batching planned)
Upgrade Path¶
- v0.3.0 - GraphQL API, session aggregation
- v0.4.0 - Journey matching, funnel queries
- v0.5.0 - React dashboard UI