Skip to content
StatusSupportDashboard

Multi-namespace Orchestration

Run multiple workflows for the same entity across namespaces.

Use multi-namespace orchestration when one entity needs multiple independent evaluations. Common examples include object-level review in one namespace and account-level actions in another.

  • separate policy ownership by workflow
  • different action semantics by namespace
  • independent iteration and rollout per workflow
  • one real-world entity can appear in multiple namespaces
  • each namespace submission returns its own requestId
  • webhook processing is independent per namespace
  • your system can merge outcomes with deterministic precedence rules
  • keep IDs stable for each namespace identity (message_123, user_456, etc.)
  • persist (namespace, id, requestId) for every submission
  • make handlers idempotent on webhook delivery retries
  • decide conflict precedence up front
import Safetykit from "safetykit";
const client = new Safetykit({ apiKey: process.env.SAFETYKIT_API_KEY });
const messageResponse = await client.data.ingest("messages", {
data: {
id: "message_12345",
user_id: "user_67890",
text: "sample content",
sent_at: "2026-02-27T12:00:00.000Z",
},
});
const userResponse = await client.data.ingest("users", {
data: {
id: "user_67890",
latest_message_id: "message_12345",
},
});
console.log(messageResponse.requestId, userResponse.requestId);
if (event.type !== "workflow.succeeded") return;
if (event.namespace === "messages") {
await storeMessageDecision(event.id, event.output);
}
if (event.namespace === "users") {
await applyUserAction(event.id, event.output);
}

A practical merge model is:

  1. Persist each namespace decision independently.
  2. Resolve final platform action with deterministic precedence.
  3. Record which namespaces contributed to the final decision for auditability.

For the canonical webhook payload contract, see workflow.succeeded.