Skip to main content
Metadata is a small JSON object attached to a definition or occurrence. Use it to find related work, record ownership and supply explicit routing context. It is not secret storage, a permission grant or automatic duplicate protection.

Choose the right object

For ORDER_APPROVED, use definition metadata to find the checkout subscription, occurrence metadata to trace one approval, and the message to carry orderId. Set the Job’s execution configuration in Runtime input. Definition metadata stays with the definition. When the Job creates a Webhook, choose which values to include in its own metadata and which to send in the request.

Publish a traceable signal

Run this fragment in a low-code Component after establishing that the order was approved. Register an active custom ORDER_APPROVED Event targeting the intended Job template first.
The returned ID confirms durable Event acceptance, not invoice completion. In the target Component, read api.input('message') and api.input('metadata'). Validate their contents, load the authoritative order and deliberately carry the operation key into the receiver contract or business record. For a later Webhook, set its own metadata explicitly if you want the same correlation values in Webhook history. Set request.body or a receiver-supported header separately when the partner needs that identity. Metadata is not silently forwarded between every product boundary.

Filter in the correct namespace

An API Event filter can select the occurrence’s source:
The visual Event filter editor accepts message-relative fields. Entering metadata.pipeline there selects message.metadata.pipeline, not the occurrence’s top-level metadata. Use the API for a filter on top-level metadata.source. Explore this distinction in Event filters. When searching history, use the structured filter supported by that list operation. Database row filters, Event subscription filters and Platform API history filters are separate contracts; do not copy one query shape into another surface unchanged.

Keep correlation and protection separate

A correlationId groups related activity, such as all steps in checkout. An operationKey identifies one business effect, such as issuing one invoice. A resource ID identifies a stored object. They can appear together, but serve different purposes. Setting metadata.operationKey does not call api.acquireIdempotencyKey() or make an external service idempotent. Use the idempotency pattern and retain the durable result. A new Event history ID on Replay should not accidentally create a new business identity.

Limits and handling

Standard user metadata accepts JSON values and is bounded to 16 KiB of UTF-8 JSON and 64 top-level keys. Top-level names beginning with __ are reserved. Use a small consistent schema; avoid changing a numeric field to a string across producers. Store large payloads in Storage or Tables and carry their IDs. Keep credentials, raw authorization headers and sensitive personal data out of metadata, which is designed for discovery and operational inspection. Update behavior belongs to the resource’s API contract; do not assume that a partial metadata object performs a deep merge. Continue with Event input, delivery guarantees and Trace. Follow the complete Event → Job → Webhook example to connect configuration, inputs, correlation and observable outcomes.
Last modified on November 8, 2026