> This page is for Tools.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.moveworks.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.moveworks.com/_mcp/server.

# Log Type Reference

# Overview

Logs provide detailed visibility into plugin execution, webhook processing, and data flow. Each log entry includes shared metadata and a context-specific body under the root key. Use these logs to debug plugin selection, slot resolution, action execution, webhook handling, and more.

> **Info**
>
> ***Note**: Logs with sensitive data may be redacted. Learn more about [log redaction](/tool-studio/agent-telemetry/logs).*

## Shared Metadata

Every log includes the following top-level fields:

| Field              | Description                                                                                                                                                                                                                      |
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Timestamp**      | Approximate time of the activity represented by the log (for example, `2025-10-21 13:41:32`). Use it to filter and find relevant logs; it is not an exact event or audit timestamp and should not be used for latency profiling. |
| **Log level**      | Always `Debug`.                                                                                                                                                                                                                  |
| **Log type**       | Unique identifier for the log (e.g., `listener.webhook.trigger`).                                                                                                                                                                |
| **Plugin name**    | Name of the plugin (if applicable).                                                                                                                                                                                              |
| **Requestor**      | User or system that triggered the event (e.g., `<nil>`, email).                                                                                                                                                                  |
| **Summary**        | Brief description of the event.                                                                                                                                                                                                  |
| **Data redaction** | Warning if sensitive data is not redacted.                                                                                                                                                                                       |

---

# Log Types

## `dm.user.message`

**Purpose**: Logs the user's original utterance and plugins that passed initial filtering.

#### Example Body:

```json
"root":{
  "created_at":"2025-04-14T03:08:12Z"
  "plugins_passed_filter":{...}
  "rewritten_utterance":"<REDACTED>"
  "user_utterance":"<REDACTED>"
}
```

| Attribute               | Redacted?    | Description                                      |
| :---------------------- | :----------- | :----------------------------------------------- |
| `plugins_passed_filter` | No           | List of plugins that passed assistant filtering. |
| `rewritten_utterance`   | Yes          | Utterance sent to LLM after rewriting.           |
| `user_utterance`        | Yes (Always) | Original user input from chat.                   |

#### Debug Use Cases:

* If your Plugin is low in the list but not selected, you may need to write better names, descriptions, and example triggering utterances
* If your Plugin is not on the list, you may not be passing the Launch Permissions that are set on the Plugin.

## `conversational_process.execute`

**Purpose**: Logs plugin selection and resolved slots.

#### Example Body:

```json
"root":{
  "created_at":"2025-04-14T03:08:12Z"
  "error_message":""
  "selected_plugin":"KnowledgeSearchPlugin"
  "slots":{...}
}
```

| Attribute         | Redacted?      | Description                        |
| :---------------- | :------------- | :--------------------------------- |
| `error_message`   | No             | Error if plugin failed to trigger. |
| `selected_plugin` | No             | Plugin chosen by the AI.           |
| `slots`           | Yes (Possible) | Resolved slot names and values.    |

#### Debug Use Cases

* Why did my Plugin fail to trigger?
* Are the slot values correct?

## `dm.assistant.message`

**Purpose**: Logs a message sent to the user.

#### Example Body:

**Example**:

```
"root":{
  "created_at":"2025-04-14T03:08:18Z"
  "error_message":""
  "execution_id":""
  "message":"<REDACTED>"
  "message_type":"MESSAGE_TYPE_FINAL"
  "plugin_id":"ce815b89-f716-41dd-b998-63bb5d606b1e"
  "plugin_status":"PLUGIN_STATUS_DONE"
}
```

| Attribute       | Redacted?      | Description                                      |
| :-------------- | :------------- | :----------------------------------------------- |
| `message`       | Yes (Possible) | The message sent from the assistant to the user. |
| `plugin_status` | No             | Final status (`DONE`, `FAILED`).                 |

#### Debug Use Cases:

* Why no response? Check `error_message` and `plugin_status`.

## `conversational_process.step.execute`

**Purpose**: Logs individual step execution (actions, resolvers) in a plugin.

#### Example Body:

```
"root":{
  "created_at":"2025-04-14T03:08:15Z"
  "execution_id":"6aFu3ILfBbGB"
  "execution_updates": [
    0:{
      "activity_update":{
      "name":"action"
      "status":"ACTIVITY_STATUS_COMPLETE"
      "input":{...}
      "output":{...}
  	}	
	}
],
  "plugin_status":"PLUGIN_STATUS_PROCESSING"
}
```

| Attribute                          | Redacted?      | Description                      |
| :--------------------------------- | :------------- | :------------------------------- |
| `execution_updates[].name`         | No             | Step type (action, resolver).    |
| `execution_updates[].status`       | No             | Final status (`DONE`, `FAILED`). |
| `execution_updates[].input/output` | Yes (Possible) | Data passed in/out of step.      |

#### Debug Use Cases:

* Which step failed?
* Unexpected input/output?

---

## `compound_action.trigger`

**Purpose**: Logs initiation of a Compound Action.

#### Example Body:

**`JSON`**

```Text JSON
"root":{
  "accessed_variables":{
    "request_type":"get"
    "test_user":{...}
  }
  "error_message":""
  "input_arguments":{
    "request_type":{...}
    "test_user":{...}
  }
  "progress_updates":[
  ]
  "return_value": {...}
  "root_uuid":"uuid"
  "status":"WORKFLOW_STATUS_PENDING"
	"step_infos": {...}
  "step_statuses":{
    "plugin_name":"WORKFLOW_STATUS_PENDING"
    "plugin_name.step1-uuid":"WORKFLOW_STATUS_PENDING"
  }
  "use_case_uuid":"uuid"
  "workflow_id":"id"
}
```

| Attribute            | Redacted?      | Description                                                           |
| :------------------- | :------------- | :-------------------------------------------------------------------- |
| `accessed_variables` | Yes (Possible) | Variables used during trigger.                                        |
| `input_arguments`    | Yes (Possible) | Input args with type/value.                                           |
| `step_infos`         | No             | Information about the status of each step of the workflow             |
| root_uuid            | No             | The uuid that ties all actions and steps within a execution together. |
| workflow_id          | No             | Compound action's instance execution ID                               |

#### Debug Use Cases:

* Malformed input data when triggered.
* Trigger errors.

## `compound_action.step.execute`

**Purpose**: Logs execution of a single step in a Compound Action.

#### Example Body:

**`JSON`**

```Text JSON
"root":{
  "accessed_variables":{...}
  "created_at":"2024-12-13T18:03:48Z"
  "error_message":""
  "from_status":"WORKFLOW_STATUS_PENDING"
  "payload_data":{...}
  "progress_updates":[]
  "return_value":{...}
  "step_statuses":{...}
  "to_status":"WORKFLOW_STATUS_COMPLETE"
  "workflow_id":"vuX-0PRliibN"
}
```

| Attribute                 | Redacted?      | Description               |
| :------------------------ | :------------- | :------------------------ |
| `payload_data`            | Yes (Possible) | Action input/output.      |
| `payload_data.result`     | Yes (Possible) | Data returned by the step |
| `from_status / to_status` | No             | State transition.         |

#### Debug Use Cases:

* Compound Action hit the wrong conditional
* HTTP, Script, or Built-in Action failed
* Compound Action isn't returning the correct data

## `action.http.trigger`

**Purpose**: Logs HTTP action execution.

#### Example Body:

```
"root":{
  "canonical_endpoint":"moveworks.my.salesforce.com/services/data/v58.0/query?q=S*****'"
  "request_headers":"Authorization: B*****h"
  "request_method":"GET"
  "request_payload":"<EMPTY>"
  "response_code":{}
  "response_payload":{...}
}
```

| Attribute          | Redacted?      | Description    |
| :----------------- | :------------- | :------------- |
| `request_headers`  | Yes (Always)   | Sent headers.  |
| `request_payload`  | Yes (Always)   | Request body.  |
| `response_payload` | Yes (Possible) | Response body. |

#### Debug Use Cases:

* HTTP Request failed due to bad/incorrect auth info
* HTTP Request failed due to bad/incorrect request info

## `action.script.trigger`

**Purpose**: Logs script (APIthon) execution.

#### Example Body:

```
"root": {  
  "created_at": "2025-07-31T23:07:50Z",
  "error_message": "",
  "language": "SCRIPT_LANGUAGE_APITHON",
  "result": { ... },
  "variables": {...}
}
```

| Attribute   | Redacted?      | Description      |
| :---------- | :------------- | :--------------- |
| `variables` | Yes (Possible) | Input variables. |
| `result`    | Yes (Possible) | Script output.   |

#### Debug Use Cases

* Understand why a script failed by inspecting the `error_message`
* Reproduce issues with access to all variables the script received
* Confirm whether the result matches expected output logic

---

## `listener.webhook.trigger`

**Purpose**: Logs **incoming** webhook request and response sent back to the external system.

#### Example Body:

```json
{
  "http_method": "POST",
  "headers": { ... },
  "parsed_body": { ... },
  "raw_body": { ... },
  "query_params": { },
  "received_at": "2025-10-21T18:41:31Z",
  "request_type": "WEBHOOK_REQUEST_TYPE_WEBHOOK",
  "response_body": { ... },
  "response_code": 200,
  "response_headers": { ... }
}
```

| Attribute                            | Redacted?      | Description                |
| :----------------------------------- | :------------- | :------------------------- |
| `headers`, `raw_body`, `parsed_body` | Yes (Possible) | Full request details.      |
| `response_body`, `response_headers`  | Yes (Possible) | What was sent back.        |
| `response_code`                      | No             | HTTP status (e.g., `200`). |

#### Debug Use Cases:

* Did the webhook arrive?
* Was the response correct?

## `listener.webhook.processor.update`

**Purpose**: Logs processing of the webhook payload and event data.

#### Example Body:

```json
{
  "event_payload": { ... },
  "process_update": { ... },
  "event_metadata": { ... }
}
```

| Attribute        | Redacted?      | Description        |
| :--------------- | :------------- | :----------------- |
| `event_payload`  | Yes (Possible) | Full parsed event. |
| `process_update` | No             | Processing state.  |

#### Debug Use Cases:

* Event parsing issues.
* Payload transformation.

## `listener.webhook.plugin.trigger`

**Purpose**: Logs plugins triggered by the webhook.

#### Example Body:

```json
{
  "event_metadata": { ... },
  "event_uuid": "uuid",
  "created_at": "2025-10-21T18:41:31.916667368Z",
  "expired": [],
  "failed_to_trigger": [],
  "skipped": [],
  "successfully_triggered": ["Plugin_1"]
}
```

| Attribute                      | Redacted? | Description                |
| :----------------------------- | :-------- | :------------------------- |
| `successfully_triggered`       | No        | List of triggered plugins. |
| `failed_to_trigger`, `skipped` | No        | Plugins that didn’t run.   |

#### Debug Use Cases:

* Which plugins ran?

---

# Best Practices

* Use `root_uuid` to correlate logs across plugin executions
* Filter by `plugin_name` or `log_type` to isolate issues.