New: OpenTelemetry OTLP trace ingestion and a native Splunk HEC exporter with a companion Technology Add-on. Browse all docs →
Integrations Guide

Third-Party Ingestion

Most enterprises don't get a clean slate — there are agents already running in ServiceNow workflows, already instrumented with OpenTelemetry, already logging somewhere a SIEM reads from. Smartflow doesn't require re-platforming any of that to bring it into the same governed dataset. This guide covers the three ways existing systems connect in: OTLP trace ingestion (new), closed-loop ServiceNow GRC, and observability export to Splunk, Sentinel, Sumo, and any OTel-speaking SIEM.

New
OTLP trace ingestion
Requires
Runtime v1.7.80+
Auth
X-Admin-Key
Wire format
OTLP/HTTP JSON
Updated
August 2026

Overview

Smartflow's core value comes from sitting inline — as a proxy or via Halo — in front of a call, so it can gate the call before it happens. That's enforcement, and it's the strongest guarantee Smartflow makes.

But almost every enterprise customer also has agents and workflows that aren't in front of Smartflow yet — a legacy pipeline, a framework already wired up with its own observability, a ticketing system that already owns an incident process. Asking a customer to re-platform all of that before they get any governance value is a real adoption tax. Third-party ingestion is how those systems join the same dataset without it:

OpenTelemetry (new)

Any agent already emitting OTLP spans can be pointed at Smartflow directly — no re-instrumentation.

ServiceNow

Closed-loop GRC: Smartflow-detected anomalies open ServiceNow incidents, and ServiceNow stays the system of record.

SIEM / Splunk

Smartflow's own observability exporters feed OTLP/logs, traces, and Datadog-compatible streams into whatever your SOC already watches.

All three land in the same place: the VAS log stream, sealed into the tamper-evident audit chain, scanned by the same compliance detector that runs on live-enforced traffic. One dataset, one audit chain, regardless of how the data got there.

OpenTelemetry Ingestion

If an agent, framework, or pipeline already speaks OTLP — which most modern agent frameworks and LLM SDKs do, natively or via an instrumentation library — point its OTel Collector's OTLP/HTTP exporter at Smartflow. No code changes on the agent side.

POST /api/otel/v1/traces

Smartflow parses the standard ExportTraceServiceRequest JSON body and maps the OpenTelemetry GenAI semantic conventions into structured fields — provider, model, token counts, prompt/completion text, and latency:

OTLP span attributeMapped field
gen_ai.systemProvider (openai, anthropic, etc.)
gen_ai.request.model / gen_ai.response.modelModel
gen_ai.usage.input_tokens / gen_ai.usage.output_tokensToken counts
gen_ai.prompt / gen_ai.completionRequest / response content
span timing + traceIdLatency, correlation ID

A span without any gen_ai.* attribute still gets stored — as name + timing only — rather than dropped, but there's nothing for the compliance scan to read on those.

Every span that does carry real prompt/completion text is run through Smartflow's existing compliance detector — the same PII and regulatory pattern matching that runs on live-enforced traffic — so ingestion isn't just a second copy of a trace store; it's a retroactive compliance pass over data Smartflow never had eyes on before.

Enforced vs. Ingested

Ingestion is deliberately retroactive, not preventive — by the time a span arrives at Smartflow, whatever it describes already happened. Nothing about that gets hidden. Every record carries a provenance field:

enforced — Smartflow gated this call live ingested — received after the fact via OTLP
ℹ️
Why this distinction exists

An audit trail is only useful if it can't be misread. provenance means a dashboard, a report, or an auditor can always tell "Smartflow blocked this before it ran" apart from "Smartflow scanned this after it already ran" — both are real, and both matter, but they're different guarantees. The audit-chain hash still proves the ingested record wasn't altered after Smartflow received it; it just doesn't claim Smartflow was in the loop when it happened.

ServiceNow GRC

Smartflow's ServiceNow integration is a closed loop, not a one-way export. When the compliance detector, quality scoring, or cost-anomaly detection flags something that warrants a human process, Smartflow opens a ServiceNow incident through the Table API — carrying the VAS record, the matched pattern or anomaly, and enough context to triage without switching tools. ServiceNow stays the system of record for the incident lifecycle; Smartflow stays the system of record for what actually happened on the AI traffic itself.

This sits alongside Smartflow's broader GRC connector framework, which speaks the same closed-loop pattern to other GRC platforms (Archer, MetricStream, OneTrust) and generic webhooks — so "we already have a GRC tool" is a config entry, not a re-architecture.

SIEM & Splunk Export

Smartflow ships a pluggable observability exporter framework — every VAS record can be fanned out, in real time, to one or more downstream sinks alongside the primary Redis/Mongo storage. Point it at whatever your SOC already watches:

⚠️
Honest framing

The HEC exporter's CIM field mapping is a practical, useful subset — it is not a Splunk-certified CIM add-on and doesn't guarantee drop-in compatibility with every stock Splunk Enterprise Security data-model correlation search out of the box. Treat it as a strong starting point for your own correlation searches and notable-event rules.

Getting Started

Ingesting an existing OTel-instrumented agent

Point the agent's Collector config at Smartflow as an additional OTLP/HTTP exporter:

exporters:
  otlphttp/smartflow:
    endpoint: "https://your-smartflow-host/api/otel"
    headers:
      X-Admin-Key: "${SMARTFLOW_ADMIN_KEY}"

service:
  pipelines:
    traces:
      exporters: [otlphttp/smartflow, # ...your existing exporters]

Or send a payload directly for testing:

curl -X POST https://your-smartflow-host/api/otel/v1/traces \
  -H "X-Admin-Key: $SMARTFLOW_ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d @otlp-traces.json

Exporting Smartflow's own traffic to Splunk directly

OBSERVABILITY_EXPORTERS=splunk
SPLUNK_HEC_URL=https://your-splunk-host:8088
SPLUNK_HEC_TOKEN=<your HEC token>
SPLUNK_INDEX=smartflow            # optional
SPLUNK_HEC_INSECURE_SKIP_VERIFY=true # optional — self-signed/internal-CA HEC endpoints

Set on the smartflow (proxy) deployment — that's where the observability dispatcher lives. Install TA-smartflow-collector in Splunk first to get field extractions and the overview dashboard for free.

Exporting to Sentinel, Sumo, or another OTel-speaking SIEM

OBSERVABILITY_EXPORTERS=otel_traces,file
OTEL_TRACES_ENDPOINT=http://your-collector:4318/v1/traces
# your-collector fans out to Sentinel, Sumo, etc.

Endpoints Reference

MethodPathNotes
POST/api/otel/v1/tracesOTLP/HTTP JSON trace ingestion. Admin-key gated.

Observability exporters (Splunk, OTel, Datadog, file, stdout, GCS, Azure Blob, Langfuse) are configured via environment variables on the Smartflow deployment rather than an HTTP API — see the deployment guide for the full OBSERVABILITY_EXPORTERS reference.

Scope & Roadmap

OTLP ingestion live on runtime v1.7.80+ Splunk HEC exporter live on runtime v1.7.81+ ServiceNow GRC — live since 1.8