Skip to content

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:

  1. Set environment variables for your providers
  2. 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 /ready endpoint
  • 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