Analytics Engine for .NET

Millions of events.
One clear picture.

Understand your traffic, your product, and the actions that matter. Powerful analytics inside your .NET application, with your data under your control.

.NET 8 · 9 · 10Open source · MITYour infrastructure
Activity, made clear.01 / INSIGHT
Website traffic
Product activity
Service telemetry
ZoneTreeAnalytics engine
Clear answersTrends. Behavior. Outcomes.
Explore the benchmark

Understand the activity that matters

Measured on 5 million events

Six annual overview reports completed in 84 ms median, with previous-period comparisons enabled. The retained benchmark spans 365 days of generated traffic.

Measured locally in a .NET 10 host, over 30 loads per scope. Read the query timings, environment, and methodology.

Website traffic, product behavior, and telemetry

Your application What you can measure
Website Visitors, popular pages, sources, campaigns, and engagement
Product Custom actions, purchases, revenue, and conversion paths
Service or worker Job counts, durations, error rates, and other numeric metrics

Use the website reports as a starting point, then build custom queries as your questions grow.

Add analytics to your application

using ZoneTree.Analytics;
using ZoneTree.Analytics.Web;

await using var analytics = AnalyticsEngine.Open("data/analytics");

analytics.Track(AnalyticsEvent.PageView("https://example.com/pricing"));
analytics.Track(new AnalyticsEvent("purchase").WithValue("revenue", 49.0));

var traffic = await analytics.Web.GetSummaryAsync(new WebReportRequest());
var sales = await analytics.QueryAsync(new AnalyticsQuery
{
    Event = "purchase",
    Metrics = { Metric.Events, Metric.Sum("revenue") },
});
using ZoneTree.Analytics.AspNetCore;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddZoneTreeAnalytics(
    options => options.DataDirectory = "data/analytics");

var app = builder.Build();
app.UseZoneTreeAnalytics();
app.MapGet("/", () => Results.Content(
    "<!doctype html><html><body><h1>Hello analytics</h1></body></html>",
    "text/html"));
app.MapZoneTreeAnalyticsApi();
await app.RunAsync();

Track visits and purchases directly from .NET, or add analytics to your ASP.NET Core application.

Technology stack

ZoneTree Analytics uses ZoneTree for persistent storage, PureStack to generate its dashboard and documentation, and Regor for reactive dashboard interfaces.

Persistent storage

ZoneTree

Stores event history, sessions, rollups, and secondary indexes inside the .NET analytics engine.

Static site generation

PureStack

Generates the dashboard and documentation from MDX, with shared layouts, themes, and UI components.

Choose your starting point

Start with the library, integrate a web application, or run the dashboard.

Explore the documentation for practical guides, concepts, performance, operations, and API reference.