ExeWatch
Real-time monitoring and AI anomaly detection for your Delphi, .NET/C#, and JavaScript apps. Know what went wrong before your customers complain.
Free tier available • No credit card required • 5-minute integration
Real scenarios where visibility saves hours of debugging
Your customer reports a crash that you can't reproduce in your environment.
With ExeWatch: You see the exact sequence of actions (breadcrumbs) leading to the crash, the user's hardware specs, OS version, and the full error stack trace. You fix it in 10 minutes.
One customer keeps complaining, but everyone else is fine.
With ExeWatch: Filter logs by customer. See their specific hardware (maybe they have 4GB RAM and others have 16GB), their app version (outdated?), and exactly which features cause issues.
You just deployed version 2.5 and want to make sure everything is stable.
With ExeWatch: Filter by release tag. Compare error rates between v2.4 and v2.5. See if new users encounter errors immediately or only power users with specific workflows.
Your support team receives a ticket: "The app didn't save my work".
With ExeWatch: Support searches by user email or customer ID. They see the timeline of events, where the save operation failed, disk space available, and can provide precise answers.
Users complain about features not working, but you don't see errors in your browser.
With ExeWatch: The JavaScript SDK captures errors from all browsers, including Safari, Edge, old Chrome versions. You see browser info, screen size, and user actions before the error.
Your app works offline or has intermittent connectivity, but you need visibility when connection is restored.
With ExeWatch: Logs are persisted locally and automatically sent when connection is available. Nothing is lost. You see complete activity even from offline sessions.
You don't want to check the dashboard constantly, but need to know when things go wrong.
With ExeWatch: Set up email alerts with custom thresholds. Get notified when error rates spike: "10 errors in 1 hour" triggers an email to your team.
Your app feels sluggish sometimes, but you can't pinpoint the bottleneck.
With ExeWatch: Instrument key operations with timing. See Avg, P95, and Max duration for each. Get alerted when operations exceed your thresholds (e.g., "5 queries > 500ms in 1 hour").
You shipped your product but have no idea how many customers are active, when they use it, or if usage is growing.
With ExeWatch: The Usage page shows active sessions, devices, and customers over time with trend deltas. A heatmap reveals when your app is used most (weekday mornings? evenings?). No extra code needed.
You want to spot customers at risk of churning before they cancel their license.
With ExeWatch: The Top Customers ranking shows session counts and last active date. Compare 30d vs previous 30d — a customer dropping from 50 to 5 sessions is a red flag you can act on immediately.
Comprehensive data collected automatically
5 severity levels: Debug, Info, Warning, Error, Fatal. Filter by level, search by message, organize with custom tags.
Automatic capture of user actions before an error. See exactly what sequence of clicks, navigation, and API calls led to the problem.
Click → Navigate → API Call → Error
Attach user info to every event: ID, email, name. When a user reports an issue, find their logs instantly.
Filter by user email, see complete user sessions
Automatic collection of device specs. Understand if issues are related to hardware limitations.
If you sell to businesses, track each customer separately. See logs per customer, compare behavior, prioritize enterprise clients.
Perfect for B2B software vendors
Tag events with app version and custom context. Filter logs by release, environment (dev/staging/prod), feature flags.
Measure how long operations take. Track database queries, API calls, file operations, and any code block.
Every app gets a real-time health status: Healthy, Degraded, or Critical. Get notified when your app's health changes.
Get notified when error thresholds are exceeded. Configure rules like "email me if 10+ errors occur in 1 hour".
Understand how your software is used. Track sessions, active devices, customers, and usage patterns over time.
Get notified when operations become too slow. Set thresholds like "alert if 5+ queries exceed 500ms in 1 hour".
Send custom numeric metrics from your applications. Track counters (requests, sales) and gauges (CPU, memory, queue size).
Go beyond fixed thresholds. Our AI learns your application's normal behavior and automatically detects anomalies—without manual configuration.
Native SDKs for Delphi, .NET/C#, and JavaScript - no complex setup
Works with VCL, FMX, console apps, Windows services, Linux servers, DataSnap, RAD Server, and mobile apps (Android/iOS).
Setup:
ExeWatchSDKv1.pas to your projectExeWatchSDKv1.VCL.pasExeWatchSDKv1.FMX.pasInitializeExeWatch(api_key, customer_id)// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// REQUIRED: Add units and initialize
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
uses
ExeWatchSDKv1,
ExeWatchSDKv1.VCL; // or .FMX for FireMonkey
// Call once at application startup
InitializeExeWatch('ew_win_xxx', 'ACME-Corp');
// That's it! Errors are now captured automatically.
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// OPTIONAL: Additional features
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Identify the current user
EW.SetUser('user123', 'john@acme.com', 'John Doe');
// Add global tags for context
EW.SetTag('environment', 'production');
// Manual logging
EW.Info('User opened settings', 'UI');
EW.Error('Connection failed', 'DB');
// Breadcrumbs: track actions before errors
EW.AddBreadcrumb('Loading data', 'db');
// Measure performance
EW.StartTiming('database_query');
try
QueryResults := RunComplexQuery(SQL);
EW.EndTiming('database_query');
except
on E: Exception do
begin
EW.EndTiming('database_query',
TJSONObject.Create(TJSONPair.Create('error', E.Message)), False);
raise;
end;
end;
Automatic Exception Capture: All unhandled exceptions are automatically logged—no try/except needed. The VCL/FMX hooks capture GUI exceptions, while console app crashes are caught at the system level.
Also included: User identity tracking, global tags, breadcrumbs trail, performance timing, offline persistence, automatic retry, and hardware info collection. Compatible with Delphi 10 Seattle+ on Windows, Linux, Android, iOS and macOS.
Works with WinForms, WPF, console apps, and Windows services. .NET 8.0+ required. Zero NuGet dependencies.
Setup:
ExeWatch package to your projectExeWatch.WinFormsExeWatchSdk.Initialize(config)// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// REQUIRED: Initialize at startup
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
using ExeWatch;
ExeWatchSdk.Initialize(new ExeWatchConfig
{
ApiKey = "ew_win_xxx",
CustomerId = "ACME-Corp"
});
// That's it! Errors are now captured automatically.
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// OPTIONAL: Additional features
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Identify the current user
EW.SetUser("user123", "john@acme.com", "John Doe");
// Add global tags for context
EW.SetTag("environment", "production");
// Manual logging
EW.Info("User opened settings", "UI");
EW.Error("Connection failed", "DB");
// Measure performance
EW.StartTiming("database_query");
try
{
var results = RunQuery(sql);
EW.EndTiming("database_query");
}
catch (Exception ex)
{
EW.EndTiming("database_query",
new Dictionary<string, object> { ["error"] = ex.Message }, false);
throw;
}
Automatic Exception Capture: All unhandled exceptions are automatically logged. The WinForms hook captures GUI thread exceptions, while AppDomain-level exceptions are caught at the system level.
Also included: User identity tracking, global tags, breadcrumbs trail, performance timing, offline persistence, automatic retry, hardware info collection, and custom metrics (counters & gauges). Requires .NET 8.0+ on Windows.
Setup:
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// REQUIRED: Add script and configure
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<script>
window.ewConfig = {
apiKey: 'ew_web_your_key',
customerId: 'ACME-Corp'
};
</script>
<script src="https://exewatch.com/static/js/exewatch.v1.min.js"></script>
// That's it! Errors are now captured automatically.
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// OPTIONAL: Additional features
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Identify the current user
ew.setUser({ id: 'user123', email: 'john@acme.com' });
// Add global tags for context
ew.setTag('environment', 'production');
// Manual logging
ew.info('Page loaded', 'UI');
ew.error('API failed', 'api');
// Breadcrumbs: track actions before errors
ew.addBreadcrumb('Clicked checkout', 'ui');
// Measure performance
ew.startTiming('api_call');
try {
const data = await fetchData();
ew.endTiming('api_call');
} catch (err) {
ew.endTiming('api_call', { error: err.message }, false);
throw err;
}
Automatic Error Capture: All unhandled exceptions and promise rejections are automatically logged—no try/catch needed. The SDK captures errors from any code, including third-party libraries.
Also included: User identity tracking, global tags, breadcrumbs trail, performance timing, persistent device ID across sessions, automatic browser info collection. Works on all modern browsers with a tiny footprint (~5KB).
Learn how to integrate and use ExeWatch
Start free, upgrade when you need more
All plans include every SDK — Delphi, .NET/C#, and JavaScript
For personal projects and learning
For professionals and small teams
For growing teams and businesses
Everything you need to know about ExeWatch
startTiming/endTiming to measure database queries, API calls, or any code block. The dashboard shows Avg, Min, Max, and P95 statistics. You can also set up timing alerts to get notified when operations exceed duration thresholds (e.g., "alert if 5 database queries exceed 500ms in 1 hour"). Wildcard patterns like database_* let you monitor groups of operations.
Your users know when something goes wrong. Shouldn't you?
Start monitoring your applications today.