diff --git a/docs/attributes-registry/messaging.md b/docs/attributes-registry/messaging.md
index 90d9bbfca6..ac6205f7fd 100644
--- a/docs/attributes-registry/messaging.md
+++ b/docs/attributes-registry/messaging.md
@@ -178,4 +178,17 @@ size should be used.
| Attribute | Type | Description | Examples | Stability |
|---|---|---|---|---|
| `messaging.kafka.destination.partition` | int | "Deprecated, use `messaging.destination.partition.id` instead." | `2` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `messaging.destination.partition.id`. |
+| `messaging.operation` | string | A string identifying the kind of messaging operation. [1] | `publish` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `messaging.operation.name`. |
+
+**[1]:** If a custom value is used, it MUST be of low cardinality.
+
+`messaging.operation` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+|---|---|---|
+| `publish` | One or more messages are provided for publishing to an intermediary. If a single message is published, the context of the "Publish" span can be used as the creation context and no "Create" span needs to be created. | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
+| `create` | A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch publishing scenarios. | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
+| `receive` | One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages. | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
+| `process` | One or more messages are delivered to or processed by a consumer. | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
+| `settle` | One or more messages are settled. | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
\ No newline at end of file
diff --git a/model/registry/deprecated/messaging.yaml b/model/registry/deprecated/messaging.yaml
index a2675c7c47..87838e9ea8 100644
--- a/model/registry/deprecated/messaging.yaml
+++ b/model/registry/deprecated/messaging.yaml
@@ -10,3 +10,40 @@ groups:
examples: 2
deprecated: "Replaced by `messaging.destination.partition.id`."
stability: experimental
+ - id: messaging.operation
+ type:
+ allow_custom_values: true
+ members:
+ - id: publish
+ value: "publish"
+ brief: >
+ One or more messages are provided for publishing to an intermediary.
+ If a single message is published, the context of the "Publish" span can be used as the creation context and no "Create" span needs to be created.
+ stability: experimental
+ - id: create
+ value: "create"
+ brief: >
+ A message is created.
+ "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch publishing scenarios.
+ stability: experimental
+ - id: receive
+ value: "receive"
+ brief: >
+ One or more messages are requested by a consumer.
+ This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages.
+ stability: experimental
+ - id: deliver
+ value: "process"
+ brief: >
+ One or more messages are delivered to or processed by a consumer.
+ stability: experimental
+ - id: settle
+ value: "settle"
+ brief: >
+ One or more messages are settled.
+ stability: experimental
+ stability: experimental
+ brief: >
+ A string identifying the kind of messaging operation.
+ note: If a custom value is used, it MUST be of low cardinality.
+ deprecated: "Replaced by `messaging.operation.name`."