PreEmptive Protection - Dotfuscator
Community Edition User Guide

Understanding Analytics

Dotfuscator's Analytics feature adds pre-built application usage, feature usage, and exception tracking to your application, without requiring any you to write any additional code. This process is known as code injection. The application that undergoes this process is known as an injected application. At runtime, the code injected into the application will transmit usage data to a PreEmptive Analytics endpoint.


Analytics is configured via attributes and a set of project-wide options. For details, see:

Supported Application Types

Dotfuscator Community Edition (Dotfuscator CE) can perform analytics processing for all .NET assemblies except for the following:

  • Assemblies that target .NET 1.0
  • Managed C++ assemblies containing native and managed code
  • Multi-module assemblies
  • Xamarin assemblies

Messages and Envelopes

As the injected application runs, the injected code generates messages to mark information about tracked events, such as a "Session Start" message to mark the start of a session for session tracking.

When a sufficient number of messages have been generated, and the injected application is not under high load, the messages will be packaged into an HTTP POST body, called an envelope, and transmitted to the configured endpoint. Envelopes, and the messages within them, are identified by the business, application, and binary information configured for the application.

End User Opt-in

Injected applications can provide the end user an option to enable or disable transmission of Analytics. The injected Analytics code will honor this option, if it is provided by the application code, during Analytics setup.

The preference is communicated via a source defined with the SetupAttribute called OptInSource. The source defines a bool value which is true if the user opts-in and false if the user opts-out. If no source is provided for a SetupAttribute, the injected code will act as if the user opted-in.

For instance, consider the following attribute and its properties:

At runtime, when HelloWorld.Hello.Main is called, the injected code will first call the static method HelloWorld.Hello.OptIn(). If the result of the call is true, Analytics messages will be generated and transmitted during the application's run. If the result of the call is false, most regular Analytics messages will not be generated.

There are a couple of cases where messages will still be generated and transmitted, regardless of the opt-in setting:

Personally-identifiable Information

In Dotfuscator Community Edition, personally-identifiable information (PII) is omitted from Analytics tracking. Including PII in collected Analytics data is a feature exclusive to Dotfuscator Professional Edition.

Offline Storage

If an injected application cannot connect to the specified endpoint at runtime, messages generated will be lost. Dotfuscator Professional Edition can inject additional code to handle network outages by saving the generated messages to disk until the endpoint is available.


PreEmptive Solutions offers a number of endpoints to which your application can send Analytics messages.

Note: Transmissions from an application injected by Dotfuscator Community Edition will not be encrypted. Encrypted transmission via SSL is a feature exclusive to Dotfuscator Professional Edition.

Community Workbench

PreEmptive Solutions hosts a publicly-accessible Analytics Workbench, called the Community Workbench. This allows you to monitor how many times your application is run, which features are being used, and how stable it is, for free.

Note: The Community Workbench comes with no guarantees or service level agreements. All data received is visible to all users, without authentication. Certain features of the Community Workbench are restricted, compared to the commercial product.

To configure your application to send to the Community Workbench:

To view your data:

PreEmptive Analytics Workbench

PreEmptive Analytics Workbench accepts, processes, transforms, and aggregates analytics messages for display in a web browser. It is highly configurable and customizable so that it can provide role-based, real-time visibility into application usage, adoption, user behavior and software quality - saving you time and money.

To learn more, please read about PreEmptive Analytics Workbench on our website.

PreEmptive Analytics for Team Foundation Server

PreEmptive Analytics for Team Foundation Server aggregates and analyzes exceptions and automatically creates Visual Studio / TFS work items based entirely upon rules and operational thresholds that you define. PreEmptive Analytics for TFS is designed specifically to help streamline feedback driven development, improve software quality and user experience, and increase development efficiency.

PreEmptive Analytics for TFS is based around exception tracking. It does not support feature tracking or in-depth session tracking.

To learn more, please read about PreEmptive Analytics for TFS on our website.

Dotfuscator Version Copyright © 2017 PreEmptive Solutions, LLC