---
updatedAt: 2026-04-10T07:29:47.000Z
agentTools:
  projectIndex: https://developers.newo.ai/llms.txt
---

# Reports and webhooks attributes

These Level C attributes configure how and where session data is sent after a conversation ends — including outbound webhooks, email report delivery, and the session log reference link. All nine attributes are hidden from the standard UI and only visible when you enable the **Show Hidden** toggle on the Attributes page.

## Quick reference

| **Identifier**                                                               | **Type** | **Default** | **Summary**                                                            |
| :--------------------------------------------------------------------------- | :------- | :---------- | :--------------------------------------------------------------------- |
| `project_attributes_info_client_session_logs_table_link`                     | String   | *(empty)*   | URL pointing to your team's session logs table                         |
| `project_attributes_setting_send_report_during_conversation`                 | Boolean  | `False`     | Enables mid-conversation report sending on immediate handoff intent    |
| `project_attributes_setting_session_ended_report_type_email`                 | Enum     | `default`   | Controls which delivery path handles session-ended email reports       |
| `project_attributes_setting_session_ended_webhook_url`                       | String   | *(empty)*   | Endpoint URL that receives a POST request when a session ends          |
| `project_attributes_setting_session_ended_webhook_schema`                    | JSON     | *(empty)*   | JSON schema defining the structured payload extracted for the webhook  |
| `project_attributes_setting_session_ended_webhook_auth_header`               | String   | *(empty)*   | Authorization header value sent with outbound webhook requests         |
| `project_attributes_setting_session_ended_report_criteria_complete_template` | String   | *(empty)*   | System-managed merged criteria template before placeholder compilation |
| `project_attributes_setting_session_ended_report_additional_criteria`        | JSON     | `{}`        | System-managed extra routing criteria blocks merged into base criteria |
| `project_attributes_setting_session_ended_report_additional_schema`          | JSON     | `{}`        | System-managed JSON schema blocks for additional report directions     |

***

## Session log reference

### Client session logs table link

**IDN:** `project_attributes_info_client_session_logs_table_link`
**Type:** String
**Default:** *(empty)*

Stores the URL of your client session logs table — the shared source of truth where your operations and support teams review incoming calls and chats.

Set this to a stable, shared URL with controlled access so all team members open the same resource during investigations. If this field is empty, no stored link is available to open from configuration.

**Examples:**

* `https://docs.google.com/spreadsheets/d/.../edit`
* `https://airtable.com/app.../tbl.../viw...`

:::
**🗒️ NOTE**

This attribute is an operational reference field only. The Newo runtime does not read this URL for report dispatch or session-ended extraction logic — it exists solely for operator convenience.
:::

If the link is missing or you cannot access your session logs, contact support at `support@newo.ai`.

***

## Session-ended reporting

### Send report during conversation

**IDN:** `project_attributes_setting_send_report_during_conversation`
**Type:** Boolean
**Default:** `False`

Controls whether report sending can be triggered before a conversation ends. When enabled, the system evaluates each AI Employee reply for an explicit immediate-handoff intent and, if found, runs report delivery logic mid-conversation.

* **`True`**: Mid-conversation report checks run. If the AI Employee explicitly signals an immediate handoff, report delivery logic fires during the session.
* **`False`**: Mid-conversation checks are skipped; all report sending happens in the standard session-ended flow.

:::
**⚠️ CAUTION**

Enabling this setting only affects the mid-conversation path. Report delivery still depends on your existing report configuration — enabling this alone will not send reports unless `project_attributes_setting_session_ended_report_enabled` is also active and your criteria template is configured.
:::

### Session-ended email report type

**IDN:** `project_attributes_setting_session_ended_report_type_email`
**Type:** Enum
**Default:** `default`
**Possible values:** `default`, `custom`

Decides how the AI Employee hands off session-ended report emails once a conversation qualifies for email delivery.

* **`default`**: The built-in email path receives the prepared recipient list, CC list, subject, and report body and sends the report through the standard system email workflow.
* **`custom`**: Report logic still prepares all content (recipients, CC, subject, body, transcript, and report type), but hands the payload off to a custom system event so an external integration can process it instead.

:::
**🗒️ NOTE**

Leave this on `default` unless you have a compatible custom integration that listens for the report-email event and can process the full prepared payload. Some deployment modules automatically override this to `custom` and mark the field read-only.
:::

***

## Webhook configuration

### Webhook URL

**IDN:** `project_attributes_setting_session_ended_webhook_url`
**Type:** String
**Default:** *(empty)*

The endpoint URL that receives a `POST` request when a session ends. If this attribute is empty, no webhook is sent. When set, the AI Employee sends a JSON payload shaped by `project_attributes_setting_session_ended_webhook_schema`.

Use a stable HTTPS endpoint designed to handle retries and idempotency. Keep this URL aligned with your webhook schema and authentication settings.

**Example payload:**

```json
{
  "user_name": "Alex Johnson",
  "organization": "ABC Corp",
  "job_title": "Marketing Manager"
}
```

:::
**🗒️ NOTE**

Webhook dispatch is independent of email and SMS session-ended report delivery. It is controlled solely by whether this URL field is populated — the standard `project_attributes_setting_session_ended_report_enabled` flag does not gate webhook sending.
:::

### Webhook schema

**IDN:** `project_attributes_setting_session_ended_webhook_schema`
**Type:** JSON
**Default:** *(empty)*

Defines the JSON schema the AI Employee uses to extract structured values from the conversation at session end. The extracted output becomes the request body sent to your webhook URL.

When a field is mentioned by the user during the conversation, it is captured and stored. When a field is not mentioned, the system sets it to `Not Provided` rather than leaving it blank. If this attribute is empty or set to `{}`, extraction is skipped and the webhook body falls back to an empty JSON object (`{}`).

**Example schema:**

```json
{
  "type": "object",
  "properties": {
    "user_name": {
      "type": "string",
      "description": "Set to the name provided by the user. If the user didn't mention their name, set it to \"Not Provided\"."
    },
    "organization": {
      "type": "string",
      "description": "Set to the organization name provided by the user. If the user didn't mention an organization name, set it to \"Not Provided\"."
    },
    "job_title": {
      "type": "string",
      "description": "Job title provided by the user. If the user didn't mention a job title, set it to \"Not Provided\"."
    }
  },
  "required": ["user_name", "organization", "job_title"]
}
```

Keep the schema focused on business-critical fields and write clear descriptions that explain what to do when data is missing. This makes it easy to filter records later using the `Not Provided` constant.

:::
**🗒️ NOTE**

If no usable conversation transcript exists for the session, webhook dispatch is skipped entirely regardless of schema configuration.
:::

### Webhook authentication header

**IDN:** `project_attributes_setting_session_ended_webhook_auth_header`
**Type:** String
**Default:** *(empty)*

The authorization value sent as the `Authorization` HTTP header on every outbound webhook request. Always include the scheme (`Bearer`, `Basic`, etc.) in this value. Leave it empty only when your endpoint does not require authentication.

**Examples:**

* `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...`
* `Basic dXNlcm5hbWU6cGFzc3dvcmQ=`

:::
**🗒️ NOTE**

If this attribute is empty, the webhook request is still sent (when a webhook URL is configured), but without any authorization credentials. Rotate secrets regularly and use HTTPS endpoints to protect your header value in transit.
:::

***

## Report criteria

:::
**⚠️ CAUTION**

The three attributes in this section are system-managed. They are normally populated automatically by the platform during report preparation and should be treated as read-only. Do not edit them manually — changes may break report routing and direction logic. To adjust criteria or schema, update your base `project_attributes_setting_session_ended_report_criteria_template` and the standard additional criteria/schema settings instead.
:::

### Criteria complete template

**IDN:** `project_attributes_setting_session_ended_report_criteria_complete_template`
**Type:** String
**Default:** *(empty)*

Stores the merged session-ended report criteria before placeholder compilation. The system builds this by taking your main criteria template and appending every entry from `project_attributes_setting_session_ended_report_additional_criteria`, separated by `---`. The merged text is then compiled into `project_attributes_setting_session_ended_report_criteria_compiled` so that `[[attribute_idn]]` placeholders resolve to their runtime values before report-direction logic runs.

**Example merged output:**

```txt
**Criteria for SMS Report:**
- During working hours, send SMS to [working-hours escalation phone]

---
**Criteria for VIP Escalation:**
- If it is a Manager or Human Request send an email to [manager email]
```

If no additional criteria exist, this value mirrors the base criteria template. If both are empty, compiled routing criteria can remain empty.

### Additional criteria

**IDN:** `project_attributes_setting_session_ended_report_additional_criteria`
**Type:** JSON
**Default:** `{}`

Stores extra report-routing criteria blocks that are merged into your main session-ended report rules. The system keys each block by a normalized report-title key, then appends it to the base criteria template during report preparation.

**Example value:**

```json
{
  "vip_escalation": "**Criteria for VIP Escalation:**\n- If it is a Manager or Human Request send to [manager email]"
}
```

If this attribute is empty or `{}`, no additional criteria blocks are appended and report routing uses only the base criteria template.

### Additional schema

**IDN:** `project_attributes_setting_session_ended_report_additional_schema`
**Type:** JSON
**Default:** `{}`

Stores structured JSON schema blocks for extra report directions. Each key corresponds to a normalized report-title key that must match a key in `project_attributes_setting_session_ended_report_additional_criteria`. When an additional direction is registered, the platform prepends a `should_be_sent` boolean into that direction's schema, then caches it here.

**Example value:**

```json
{
  "vip_escalation": {
    "type": "object",
    "properties": {
      "should_be_sent": {
        "type": "boolean"
      },
      "destination": {
        "type": "string"
      },
      "reason": {
        "type": "string"
      }
    }
  }
}
```

If this attribute is empty or `{}`, no additional direction schema is injected and no additional-direction payloads are generated.