Threadify is designed to be the bridge between deep technical observability and high-level business process monitoring. If your application is already instrumented with OpenTelemetry (OTel), you do not need to manually addDocumentation Index
Fetch the complete documentation index at: https://docs.threadify.dev/llms.txt
Use this file to discover all available pages before exploring further.
thread.step() calls throughout your codebase. Instead, you can use the Threadify OpenTelemetry Exporter to seamlessly translate your existing traces into Threadify execution graphs.
The Mapping Model
The Threadify Exporter automatically translates the highly technical OTel hierarchy into business-friendly language:| OpenTelemetry Concept | Threadify Concept | Description |
|---|---|---|
| Trace | Thread | A Trace represents an entire business workflow (e.g., Customer Checkout). |
| Span | Step | A Span represents a major operation (e.g., process_payment). |
| Span Event | Sub-Step | An Event is a specific milestone during the operation (e.g., validated_card). |
1. Setup the Exporter
Integrating the exporter into your Node.js application takes just a few lines of code. You initialize the Exporter and register it with your global OpenTelemetryTracerProvider.
By default, the Exporter will automatically push Spans to Threadify whenever they end. It manages the underlying Threadify Thread lifecycles for you transparently.
2. Using OpenTelemetry Natively
Once configured, you simply use the standard OpenTelemetry API. You do not need to import or call Threadify directly in your business logic!Advanced Attributes (Optional)
If you want finer control over how a specific Span maps to Threadify, you can set the following specialthreadify.* attributes on your Span. If omitted, the Exporter will use sensible defaults.
| Attribute | Description | Default Fallback |
|---|---|---|
threadify.contract | The Contract Name to validate this workflow against. | null (Schema-less Thread) |
threadify.step_name | Override the Step name in Threadify. | Uses span.name |
threadify.thread_id | Force the Span to attach to a specific existing Thread ID. | Auto-generates a new Thread per Trace |
threadify.label | The human-readable label for the Thread. | Uses span.name |
threadify.service | Override the service name that executed this step. | Uses the connection’s default service |
threadify.ref.* or threadify.context.* will be explicitly mapped to references or context respectively, bypassing the default configuration rules.