# Add Comment

Leave a note on the conversation's timeline for agents — never sent to the customer — with an optional @mention to notify a teammate or the assignee.

## Getting here

**Automate → Workflows**, open a workflow, click **+** on the canvas, then pick **Add Comment** under **Add Steps**.

## Before you start

- An **owner**, **admin** or **agent** can add this step and save the workflow. Publishing that workflow — the thing that makes it run on live conversations — is an **owner** or **admin** action.
- Building and running workflows depends on your plan; see [pricing](/pricing).
- Nothing outside Inchat has to be connected. The step only writes to this conversation's timeline.

## Set up

1. Open the workflow and click **+** where the note belongs.
2. Pick **Add Comment**.
3. Write the note under **Internal comment**. It supports the same `{{…}}` placeholders as a customer-facing message.
4. Optional, under **Notify**: check the conversation's assignee, or any teammate, to send them a mention notification.
5. Save the step, then publish the workflow. A saved but unpublished workflow writes no notes.

## Fields

| Field | What it means | Default | Limits |
| --- | --- | --- | --- |
| Internal comment | The note's text. Rendered with the run's placeholders before it is saved. | — | An empty note is refused when you try to save the step. |
| Notify | The conversation's assignee, and any teammate, checked individually. Each one checked gets a mention notification once the note is saved. | nobody notified | Only reaches a teammate who is still a member of this workspace and can access this conversation's channel; someone who has left, or cannot see this conversation, is silently skipped. |

## How it works

- The step writes a message row on this conversation with `internal: true`, sender **system** — a person's own manual internal note is stored slightly differently (sender **agent**, with their user id attached, so the timeline can show who wrote it), but both sit on the timeline for agents only and are never part of what the customer sees or receives.
- The text is rendered through the same placeholder engine a customer-facing message uses before it is saved, so `{{contact.name}} answered {{answer.text}}` becomes a real sentence on the timeline, not literal braces.
- Checking a teammate or the assignee under **Notify** sends a mention notification after the note is saved — best-effort: the note is written either way, and a person who cannot be notified (see Fields) does not stop it from being written.
- Checking the assignee notifies whoever the conversation is assigned to at the moment the step runs, not whoever it may be reassigned to afterwards.
- The **Add Comment** menu entry is only one of two note-writing steps the product can save. The AI workflow builder can also produce a plainer one, an internal comment, that has no picker entry and no drawer to edit it — see Limits for exactly how it differs.

## When it fails

- The only realistic failure is a database error writing the message — rare and transient. This action does not report a specific reason, so the run's **Activity** tab shows the fixed line **failed without a reported reason**.
- A failed note does not stop the run: the step is recorded failed and the flow moves straight to the next one.
- Saving the step itself is refused up front if the comment text is left empty.

## Limits

- It never reaches the customer. Nothing here can be mistaken for a reply — that is what **send a message** and the template steps are for.
- A workflow generated by the AI builder can save the narrower **internal comment** action instead of this one. It writes the same kind of timeline-only note, but: the text is saved and shown exactly as typed, with no `{{…}}` placeholders rendered; it is recorded as written by **ai** rather than by the workflow; and it never sends a notification even when it names teammates to mention. It also has no entry in the **Add Steps** menu and no fields in this drawer — opening one shows nothing to edit.
- A notification is sent once, at the moment the step runs. It does not repeat, and it does not follow a reassignment or a new mention added later in the run.
- It cannot edit or remove a note once it is written — a later step that wants to correct one has to add a new comment saying so.

## Use cases

- Leave a note quoting a customer's answer to an **Ask a Question** step, so whoever reads the thread later does not have to scroll back through it.
- Mention the assignee when a workflow makes a decision on their thread — a discount applied, a stage moved — so they know it happened without needing to check the run log.

## Related

- [Assign To (human)](https://inchat.inseller.my/help/workflows/assign-to-human)
- [Escalate](https://inchat.inseller.my/help/workflows/escalate)
- [Create a Task](https://inchat.inseller.my/help/workflows/create-a-task)
- [Workflows: how a flow runs](https://inchat.inseller.my/help/workflows/workflows-overview)

---

Source files: `src/lib/workflows/ai-builder/spec.ts`, `src/lib/workflows/canvas-model.ts`, `src/components/workflows/WorkflowStepConfigDrawer.tsx`, `src/lib/workflows/internal-actions.ts`, `src/lib/workflows/engine.ts`, `src/lib/workflows/engine-message-actions.ts`, `src/lib/workflows/types.ts`, `src/lib/workflows/form-payload.ts`, `src/lib/workflows/workflow-input-schema.ts`, `src/lib/notifications/create.ts`, `src/lib/inbox/add-note.ts`
