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

# Conversation behavior attributes

These attributes govern how your AI Employee manages conversation flow, session lifecycle, follow-up timing, working-hours logic, and context retention between sessions. They 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_setting_conversation_session_timeout_finished_chat`                   | Number   | `60`          | Inactivity timeout (seconds) to end a finished chat session               |
| `project_attributes_setting_conversation_session_timeout_finished_voice`                  | Number   | `60`          | Inactivity timeout (seconds) to end a finished voice session              |
| `project_attributes_setting_conversation_session_timeout_unfinished_chat`                 | Number   | `580`         | Inactivity timeout (seconds) to end an unfinished chat session            |
| `project_attributes_setting_conversation_session_timeout_unfinished_voice`                | Number   | `300`         | Inactivity timeout (seconds) to end an unfinished voice session           |
| `project_attributes_setting_follow_up_timer_chat_interval_base`                           | Number   | `120`         | Base follow-up delay (seconds) after Agent sends a chat reply             |
| `project_attributes_setting_follow_up_timer_voice_interval_agent_speech_ended`            | Number   | `20`          | Voice follow-up delay (seconds) after Agent finishes speaking             |
| `project_attributes_setting_follow_up_timer_voice_interval_agent_speech_started`          | Number   | `70`          | Voice follow-up delay (seconds) from when Agent begins speaking           |
| `project_attributes_setting_follow_up_timer_voice_interval_conversation_started_inbound`  | Number   | `12`          | Initial follow-up delay (seconds) at inbound call start                   |
| `project_attributes_setting_follow_up_timer_voice_interval_conversation_started_outbound` | Number   | `12`          | Initial follow-up delay (seconds) at outbound call start                  |
| `project_attributes_setting_follow_up_timer_voice_interval_user_speech_ended`             | Number   | `20`          | Voice follow-up delay (seconds) after user finishes speaking              |
| `project_attributes_setting_follow_up_timer_voice_interval_user_speech_started`           | Number   | `70`          | Voice follow-up delay (seconds) from when user begins speaking            |
| `project_attributes_setting_waiting_mode_timeout`                                         | Number   | `60`          | Seconds waiting mode stays active before fallback is triggered            |
| `project_attributes_setting_waiting_mode_fallback_instruction`                            | String   | *(see below)* | Instruction used when waiting mode times out                              |
| `project_attributes_setting_initial_thoughts`                                             | String   | *(see below)* | Internal context seeded at the start of each new session                  |
| `project_attributes_setting_number_of_past_interactions_to_observe`                       | Number   | `3`           | How many past interaction entries to include as memory context            |
| `project_attributes_setting_additional_global_conversation_instruction`                   | String   | *(empty)*     | High-priority global instruction that can override conversation behavior  |
| `project_attributes_setting_timezone_reasoning_enabled`                                   | Boolean  | `False`       | Enables extra timezone-conversion correction pass during conversations    |
| `project_attributes_setting_define_conversation_is_during_working_hours_enabled`          | Boolean  | `True`        | Whether Agent uses working-hours status in live conversation logic        |
| `project_attributes_setting_connect_with_the_manager_in_case_of_unhandled_issues`         | Boolean  | `True`        | Whether Agent suggests manager escalation when no availability is found   |
| `project_attributes_setting_evaluate_ongoing_conversation_quality`                        | Boolean  | `False`       | Whether Agent monitors conversation quality and applies recovery guidance |
| `project_attributes_setting_external_reply_type`                                          | Enum     | `default`     | Controls whether the built-in or a custom external reply handler is used  |
| `project_attributes_setting_session_ended_reset_persona_attributes`                       | Boolean  | `False`       | Controls how much persona context is preserved between sessions           |

***

## Session timeouts

Session timeouts determine how long the platform waits after a period of inactivity before automatically ending a session. The timeout that applies depends on the conversation channel (chat or voice/webcall) and whether the conversation has been marked as concluded (finished) or is still active (unfinished).

When a session times out, the AI Employee loses visibility of the previous conversation history. If session-ended reporting is enabled, a report is also sent at that point.

:::
**⚠️ CAUTION**

Keep all session timeout values at `580` seconds or lower. Values above this threshold can cause compatibility issues with session-timeout handling.
:::

### Session timeout on finished chat

**Attribute:** `project_attributes_setting_conversation_session_timeout_finished_chat`
**Type:** Number | **Default:** `60`

Defines the inactivity timeout in seconds for finished chat conversations. Once the timeout elapses after a chat conversation is marked concluded, the session ends automatically.

Keep this value relatively short for chat channels to prevent stale context from carrying over when a user sends a new message after a long gap.

* **Lower value:** Session closes faster after conclusion.
* **Higher value:** Session stays open longer before auto-end.

### Session timeout on finished voice

**Attribute:** `project_attributes_setting_conversation_session_timeout_finished_voice`
**Type:** Number | **Default:** `60`

Defines the inactivity timeout in seconds for finished voice and webcall conversations. The session ends automatically once this interval elapses after a call is marked concluded.

Set this long enough to account for natural post-call processing delays.

* **Lower value:** Session closes faster after call conclusion.
* **Higher value:** Session remains active longer before auto-end.

### Session timeout on unfinished chat

**Attribute:** `project_attributes_setting_conversation_session_timeout_unfinished_chat`
**Type:** Number | **Default:** `580`

Defines the inactivity timeout in seconds for chat conversations that have not been marked as concluded. The session ends automatically after this period of inactivity, even if the conversation is still in progress.

Use a larger value than the finished-chat timeout so users have enough time to resume an active thread without losing context.

* **Lower value:** Unfinished chat sessions close faster during inactivity.
* **Higher value:** Unfinished chat sessions remain open longer before auto-end.

### Session timeout on unfinished voice

**Attribute:** `project_attributes_setting_conversation_session_timeout_unfinished_voice`
**Type:** Number | **Default:** `300`

Defines the inactivity timeout in seconds for voice and webcall conversations that have not been marked as concluded. The session ends automatically after this period of inactivity.

Set this high enough to cover realistic pauses in live calls.

* **Lower value:** Unfinished voice sessions close faster during inactivity.
* **Higher value:** Unfinished voice sessions remain active longer before auto-end.

***

## Follow-up timers

Follow-up timers control how long the AI Employee waits before prompting the user again when no response has been detected. Each timer corresponds to a specific event in the conversation — such as when the user starts or stops speaking, or when the Agent finishes delivering a reply. Separate timers exist for chat and voice channels, and for inbound and outbound calls, so you can tune each scenario independently.

A value of `-1` disables the specific timer path. A value of `0` or any positive number enables it; larger values produce longer delays before the follow-up prompt fires.

### Chat interval base

**Attribute:** `project_attributes_setting_follow_up_timer_chat_interval_base`
**Type:** Number | **Default:** `120`

Defines the base follow-up delay in seconds after the AI Employee sends a chat reply. For standard chat replies, this value also affects how much extra time is added for longer answers — higher base values increase both the fixed delay and the reply-length-based extension.

Start with `120` and tune based on how quickly your users typically respond. Set to `-1` to disable attribute-driven chat follow-up scheduling entirely.

* **`-1`:** Chat follow-up timer scheduling is disabled.
* **`0` or positive number:** Follow-up is scheduled; larger values wait longer and add more delay for longer replies.

### Voice interval — agent speech ended

**Attribute:** `project_attributes_setting_follow_up_timer_voice_interval_agent_speech_ended`
**Type:** Number | **Default:** `20`

Defines the voice follow-up delay in seconds after the AI Employee finishes speaking. This timer handles situations where the call goes silent after the Agent's reply.

Keep this short enough to recover stalled calls quickly, but long enough to avoid interrupting normal pauses while the user formulates a response.

* **`-1`:** Disables this timer path.
* **`0` or positive number:** Schedules follow-up after agent speech ends.

### Voice interval — agent speech started

**Attribute:** `project_attributes_setting_follow_up_timer_voice_interval_agent_speech_started`
**Type:** Number | **Default:** `70`

Defines the voice follow-up delay in seconds from the moment the AI Employee begins speaking. This timer prevents premature follow-up prompts while the Agent is still actively delivering a message.

Set this longer than your typical Agent opening-phrase duration.

* **`-1`:** Disables this timer path.
* **`0` or positive number:** Schedules follow-up from agent-speech-started timing points.

### Voice interval — conversation started (inbound)

**Attribute:** `project_attributes_setting_follow_up_timer_voice_interval_conversation_started_inbound`
**Type:** Number | **Default:** `12`

Defines the initial follow-up delay in seconds right after an inbound call starts. This timer is separate from the outbound equivalent so you can tune incoming-call silence handling differently.

Keep this short enough to recover quickly when the user goes silent at call start, but long enough to avoid cutting off normal opening pauses.

* **`-1`:** Disables this inbound conversation-started timer path.
* **`0` or positive number:** Schedules follow-up from inbound conversation-start events.

### Voice interval — conversation started (outbound)

**Attribute:** `project_attributes_setting_follow_up_timer_voice_interval_conversation_started_outbound`
**Type:** Number | **Default:** `12`

Defines the initial follow-up delay in seconds right after an outbound call starts. This timer is separate from the inbound equivalent so proactive outreach can use a different start-of-call pacing strategy.

Keep this short for outbound flows so stalled calls recover quickly after the opening message.

* **`-1`:** Disables this outbound conversation-started timer path.
* **`0` or positive number:** Schedules follow-up from outbound conversation-start events.

### Voice interval — user speech ended

**Attribute:** `project_attributes_setting_follow_up_timer_voice_interval_user_speech_ended`
**Type:** Number | **Default:** `20`

Defines the voice follow-up delay in seconds after the user finishes speaking. This is the primary voice silence baseline — shorter values make the Agent more proactive, longer values reduce the risk of interrupting the user.

* **`-1`:** Disables this timer path where disable semantics are honored.
* **`0` or positive number:** Schedules follow-up after user-speech-ended events.

### Voice interval — user speech started

**Attribute:** `project_attributes_setting_follow_up_timer_voice_interval_user_speech_started`
**Type:** Number | **Default:** `70`

Defines the voice follow-up delay in seconds from the moment the user begins speaking. This timer prevents the Agent from reacting to brief noise bursts or short speech fragments during active turn-taking.

Set this long enough to avoid triggering on incomplete utterances. When this path runs, the follow-up counter resets, so repeated silence prompting starts from the initial attempt.

* **`-1`:** Disables this timer path where disable semantics are honored.
* **`0` or positive number:** Schedules follow-up after user-speech-started events.

***

## Waiting mode

Waiting mode suspends active conversation follow-up timers while the platform is waiting for an external result — for example, a third-party service response. These two attributes work together: the timeout sets how long the platform waits, and the fallback instruction defines what the AI Employee says if the result never arrives.

### Waiting mode timeout

**Attribute:** `project_attributes_setting_waiting_mode_timeout`
**Type:** Number | **Default:** `60`

Defines how many seconds waiting mode stays active before fallback behavior is triggered. Once this timer expires without an external result arriving, the platform delivers the fallback instruction to the user.

Set this slightly above your typical third-party response time so normal responses arrive before the fallback fires. If left empty, the runtime falls back to `60` seconds.

* **Positive number:** Runtime schedules the waiting fallback timer for the configured interval.
* **Empty value:** Runtime falls back to the default of `60` seconds.

### Waiting mode fallback instruction

**Attribute:** `project_attributes_setting_waiting_mode_fallback_instruction`
**Type:** String | **Default:** `Suggest to the user that you will relay the information to the manager, and they will reach out as soon as they are available.`

Defines the guidance the AI Employee uses when waiting mode times out before an external result arrives. The runtime prepends a standard apology/recovery prefix to this value before delivering the response.

Keep this instruction short, apologetic, and action-oriented so users receive a clear next step when a third-party response is delayed.

**Example:**

```
Suggest to the user that you will relay the information to the manager, and they will reach out as soon as they are available.
```

***

## Context and memory

### Initial thoughts

**Attribute:** `project_attributes_setting_initial_thoughts`
**Type:** String | **Default:** `Just greeted the User. Next - understand inquiry and follow instructions.`

Defines the internal context the AI Employee uses at the start of each new session. This value is seeded into the Agent's conversation-thought state during session initialization and can be updated as the conversation evolves.

Keep this short and operational, focused on immediate next-step guidance rather than business policy details.

**Example:**

```
Just greeted the User. Next - understand inquiry and follow instructions.
```

### Number of past interactions to observe

**Attribute:** `project_attributes_setting_number_of_past_interactions_to_observe`
**Type:** Number | **Default:** `3`

Controls how many past interaction entries are included as memory context for the AI Employee. Use a low-to-moderate value to balance continuity against prompt size.

* **`0`:** Past-interaction context block is disabled; the Agent sees no prior interaction history.
* **Positive number:** The most recent N interaction entries are included (up to available history).

A value of `3` to `5` is a reasonable starting point for most deployments.

***

## Conversation instructions

### Additional global conversation instruction

**Attribute:** `project_attributes_setting_additional_global_conversation_instruction`
**Type:** String | **Default:** *(empty)*

Adds a high-priority global instruction that can override normal conversation behavior. This value is appended near the response footer during runtime prompt compilation whenever it is non-empty.

:::
**⚠️ CAUTION**

Treat this as an emergency override only. Keep the content short (2–3 sentences), clear, and temporary. Overloading this field with long or conflicting instructions can make the Agent behave inconsistently.
:::

**Examples:**

```
Always mention that quoted prices are estimates and may change.
Never ask for a full date of birth.
```

***

## Working hours and scheduling

### Timezone reasoning enabled

**Attribute:** `project_attributes_setting_timezone_reasoning_enabled`
**Type:** Boolean | **Default:** `False`

Controls whether the AI Employee performs an additional timezone-conversion correction pass when timezone questions arise during a conversation. When enabled and a mismatch is detected between the user's implied timezone and the business timezone, the Agent issues corrective guidance.

Enable this when your conversations frequently involve cross-timezone coordination and scheduling.

* **`True`:** Timezone correction pass can run and issue corrective guidance when a mismatch is detected.
* **`False`:** The additional timezone correction pass is skipped.

### Define working hours status

**Attribute:** `project_attributes_setting_define_conversation_is_during_working_hours_enabled`
**Type:** Boolean | **Default:** `True`

Controls whether the AI Employee uses working-hours status in live conversation decision paths. When enabled, the Agent computes and caches open/closed status and uses it for call-transfer rules, escalation logic, availability fallback guidance, and related behavior.

Keep this enabled if your transfer, escalation, or availability policies depend on business open/closed state.

* **`True`:** Agent computes open/closed status and uses it to gate conversation branching.
* **`False`:** Conversation-time logic stops gating behavior by open/closed status and uses non-status-specific fallback behavior instead.

:::
**🗒️ NOTE**

End-session and reporting paths derive working-hours status independently, so disabling this attribute does not affect session-end reports.
:::

***

## Escalation and handoff

### Escalate unresolved issues to the manager

**Attribute:** `project_attributes_setting_connect_with_the_manager_in_case_of_unhandled_issues`
**Type:** Boolean | **Default:** `True`

Controls whether the AI Employee adds manager-escalation guidance when an availability check returns no suitable slots. When enabled, the Agent may include a suggestion to connect with a manager in replies where no availability can be offered.

This is guidance logic only — it does not directly execute a call transfer or contact action.

Enable this only if your transfer and escalation policy is configured and your team expects manager handoff suggestions in no-availability situations.

* **`True`:** Agent may include manager-assistance guidance in no-availability replies.
* **`False`:** No manager-escalation guidance is added in those replies.

### Evaluate ongoing conversation quality

**Attribute:** `project_attributes_setting_evaluate_ongoing_conversation_quality`
**Type:** Boolean | **Default:** `False`

Controls whether the AI Employee continuously monitors conversation quality during active dialogue and applies recovery guidance when quality drops below an acceptable threshold.

Enable this for production voice channels where background noise, poor connection, or persistent misunderstanding is a common risk.

* **`True`:** Agent evaluates quality and applies escalation guidance for low-quality conversations.
* **`False`:** No quality-based escalation guidance is triggered.

When low quality is detected, the platform follows this recovery order:

1. Attempt call transfer if transfer is enabled and working-hours logic allows it.
2. If transfer is not available, suggest callback or manager relay (if manager-relay mode is enabled).
3. Otherwise, fall back to callback guidance.

:::
**🗒️ NOTE**

Low-quality escalation is suppressed after the first successful trigger in the same conversation to avoid repeated interruptions.
:::

***

## External reply handling

### External reply type

**Attribute:** `project_attributes_setting_external_reply_type`
**Type:** Enum | **Default:** `default`

Controls whether the built-in external reply handler or a custom outbound delivery flow is used when the `send_external_reply` system event fires.

**Possible values:**

* **`default`:** The built-in external reply handler stays active. The platform reads the conversation source and dispatches supported external replies (for example, ManyChat).
* **`custom`:** The built-in external reply handler exits immediately so your own custom outbound delivery pipeline can take over.

Keep this set to `default` unless you have a complete custom outbound delivery pipeline with its own monitoring in place.

***

## Session reset behavior

### Session ended — reset persona attributes

**Attribute:** `project_attributes_setting_session_ended_reset_persona_attributes`
**Type:** Boolean | **Default:** `False`

Controls how much user and persona context is preserved when a session ends and the next session begins.

* **`False`:** The platform keeps additional persona and profile continuity between sessions, stores session memory updates for future context, and preserves return-session greeting phrases.
* **`True`:** The platform performs deeper persona cleanup at session end, resets extended profile fields (such as booking and contact-related data), clears stored return-session greeting phrases, and does not persist end-session memory summarization.

Use `True` for stricter session isolation. Keep `False` when continuity across sessions is important for your use case.