CoreStone.SDK.Dotnet.Analytics 1.5.0

dotnet add package CoreStone.SDK.Dotnet.Analytics --version 1.5.0
                    
NuGet\Install-Package CoreStone.SDK.Dotnet.Analytics -Version 1.5.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CoreStone.SDK.Dotnet.Analytics" Version="1.5.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CoreStone.SDK.Dotnet.Analytics" Version="1.5.0" />
                    
Directory.Packages.props
<PackageReference Include="CoreStone.SDK.Dotnet.Analytics" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CoreStone.SDK.Dotnet.Analytics --version 1.5.0
                    
#r "nuget: CoreStone.SDK.Dotnet.Analytics, 1.5.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CoreStone.SDK.Dotnet.Analytics@1.5.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CoreStone.SDK.Dotnet.Analytics&version=1.5.0
                    
Install as a Cake Addin
#tool nuget:?package=CoreStone.SDK.Dotnet.Analytics&version=1.5.0
                    
Install as a Cake Tool

CoreStone.SDK.Dotnet.Analytics

Fire-and-forget analytics event tracking for CoreStone. Events are buffered in-memory and automatically flushed in batches — your UI thread is never blocked.

Installation

dotnet add package CoreStone.SDK.Dotnet.Configuration
dotnet add package CoreStone.SDK.Dotnet.Analytics

Note: Authentication is not required for analytics. Only X-Project-Key is needed (set via AddCoreStoneConfiguration).

Setup

builder.Services
    .AddCoreStoneConfiguration(o => {
        o.BaseUrl    = "https://api.yourapp.com";
        o.ProjectKey = "prj-xxxxxxxxxxxxxxxx";
    })
    .AddCoreStoneAnalytics(o => {
        o.MaxBatchSize         = 20;   // Flush when 20 events accumulate
        o.FlushIntervalSeconds = 30;   // Or every 30 seconds, whichever comes first
    });

Usage

public class HomeViewModel(IAnalyticsClient analytics)
{
    public void OnAppeared()
    {
        analytics.Track(
            CoreStoneEvent.ScreenView("HomeScreen")
                .WithSession(sessionId)
                .WithPlatform("web")
                .WithAppVersion("2.1.0"));
    }
}

All Event Types

// Session lifecycle
analytics.Track(CoreStoneEvent.SessionStart(sessionId, platform: "web"));
analytics.Track(CoreStoneEvent.SessionEnd(sessionId, durationSeconds: 300));

// Authentication
analytics.Track(CoreStoneEvent.Login(sessionId, platform: "web", method: "email"));
analytics.Track(CoreStoneEvent.Logout(sessionId));
analytics.Track(CoreStoneEvent.Register(sessionId, platform: "web", method: "email"));

// Navigation
analytics.Track(CoreStoneEvent.ScreenView("CheckoutPage", sessionId, referrer: "CartPage"));

// Feature usage
analytics.Track(CoreStoneEvent.FeatureInteraction("HomeScreen", "share_button",
    sessionId, action: "tap"));

// Support
analytics.Track(CoreStoneEvent.SupportOpen(sessionId, screen: "ProfilePage"));
analytics.Track(CoreStoneEvent.SupportMessage(sessionId, ticketId: "TKT-001"));

// Version check-in
analytics.Track(CoreStoneEvent.VersionCheckin(appVersion: "2.1.0", platform: "android"));

// Crash reporting — automatically captures exception type, message, and stack trace
analytics.Track(CoreStoneEvent.Crash(exception, screen: "CheckoutPage", sessionId));
analytics.Track(CoreStoneEvent.Crash("NullPointerException", "Null ref in payment flow"));

// Custom events
analytics.Track(CoreStoneEvent.Custom("promo_banner_clicked", sessionId)
    .WithProperty("campaignId", "SUMMER2026")
    .WithProperty("bannerId", "banner-42"));

Raw Event Object

analytics.Track(new AnalyticsEvent
{
    EventType  = KnownEventTypes.ScreenView,
    SessionId  = sessionId,
    Platform   = "android",
    AppVersion = "2.1.0",
    Properties = new() { ["screen"] = "HomeScreen" }
});

Force Flush (e.g. before app shutdown)

// In App.OnStop() or similar lifecycle hook
await analytics.FlushAsync();

Global Crash Handler (ASP.NET)

// Program.cs
app.Use(async (context, next) =>
{
    try { await next(); }
    catch (Exception ex)
    {
        analytics.Track(CoreStoneEvent.Crash(ex, screen: context.Request.Path));
        await analytics.FlushAsync();
        throw;
    }
});

Supported Event Types

Constant Event Type Description
KnownEventTypes.SessionStart session_start App opened
KnownEventTypes.SessionEnd session_end App closed
KnownEventTypes.Login login User authenticated
KnownEventTypes.Logout logout User logged out
KnownEventTypes.Register register New account created
KnownEventTypes.ScreenView screen_view Screen navigated to
KnownEventTypes.FeatureInteraction feature_interaction UI element interacted
KnownEventTypes.SupportOpen support_open Support section opened
KnownEventTypes.SupportMessage support_message Support message sent
KnownEventTypes.VersionCheckin version_checkin Version policy checked
KnownEventTypes.Crash crash Unhandled exception
KnownEventTypes.Custom custom Custom event
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.0 119 6/22/2026
1.4.0 119 6/18/2026
1.3.0 111 6/18/2026
1.2.0 111 6/18/2026
1.1.0 120 6/18/2026
1.0.9 116 6/17/2026
1.0.8 105 6/17/2026
1.0.7 114 6/17/2026
1.0.6 111 6/15/2026
1.0.5 109 6/15/2026