---
title: "Reply to a customer, or write a note"
description: "Use the two composer modes: one sends to the customer, the other stays with the support team, and know exactly where the boundary between them sits."
updated: "2026-08-28"
audience: [agent, administrator]
source: "https://helpdesk-docs.svr1.feedapp.click/en/hop-thu/tra-loi-va-ghi-chu-noi-bo"
---

The composer has two tabs, and picking the wrong one is the kind of mistake you
cannot take back. This page says which tab reaches the customer and which one
stays in the building.

## Goal [#goal]

Send an answer to the customer, record an internal aside in the same
conversation, and tell the two apart on screen without guessing.

## Before you begin [#before-you-begin]

* Write permission on conversations. Without it the composer is locked and explains why — see [Roles and per-feature permissions](/en/khai-niem/vai-tro-va-quyen).
* A conversation open in the timeline.
* A healthy connection on that conversation's channel, or an outgoing message comes back as failed.

## Steps [#steps]

1. Open the conversation. The composer at the bottom starts on the **Reply** tab,
   with the placeholder &#x2A;*Reply to the customer…**.
2. Type the answer and press **Send**. The message appears in the timeline with its
   delivery state and goes out over the channel the customer is using.
3. To talk to a colleague instead, press the **Internal discussion** tab. The
   composer changes colour and the placeholder becomes **Internal discussion — the
   customer cannot see this**.
4. Type the note and press **Send**. It sits in the timeline under an **Internal**
   badge, at its own point in time rather than in a separate list.

   ![The composer on the Internal discussion tab, tinted, with the placeholder reading Internal discussion — the customer cannot see this](https://helpdesk-docs.svr1.feedapp.click/images/docs/hop-thu/tra-loi-va-ghi-chu-noi-bo/04-o-soan-ghi-chu-noi-bo.en.webp)

   *The composer in internal mode, before anything is typed.*
5. To quote an older message, right-click it and choose **Reply**. Quoting an
   internal message locks the composer onto the internal tab.
6. Press the **Filter messages** icon in the header and choose **Customer
   conversation only**. What remains is what the customer can read.

> **Two things the system guarantees about internal messages:** **A customer never sees an internal message.** The website widget and the
> customer portal both drop internal messages before answering. They work from an
> allowlist of the fields that may leave, rather than hiding rows in the
> interface.
>
> **The server refuses a public message that quotes an internal one.** A quote is
> a copy: the older text travels inside the new message, so a public reply
> carrying an internal quote would walk straight past that filter. The console
> locks the tab, and the server rejects the same combination with a 400 even when
> a client posts it directly.

## Verify [#verify]

An internal message carries the **Internal** badge in the timeline; an answer to
the customer does not. Switch **Filter messages** to **Customer conversation
only**: the internal message disappears from the list and the answer stays.
Switching to **Internal discussion only** does the reverse.

## Troubleshooting [#troubleshooting]

| Symptom                                                    | Cause                                                                 | What to do                                                                    |
| ---------------------------------------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| The **Reply** tab will not respond                         | An internal message is being quoted, so the tab is locked and says so | Drop the quote with the close button beside it, then write again              |
| The composer is greyed out                                 | The account has no write permission on conversations                  | Ask an administrator for the conversations admin role                         |
| A message reports a failure with a reason from the channel | The channel refused it, for example outside Zalo's send window        | Read the stated reason, then resend or discard with the two buttons beside it |
| Half the timeline is missing                               | **Filter messages** is on, and the tinted icon is saying so           | Choose **All messages** again                                                 |

## Next steps [#next-steps]

* [Tag a teammate and open a thread](/en/hop-thu/nhac-ten-va-luong-phu)
* [Reuse canned responses and a signature](/en/hop-thu/mau-cau-tra-loi)
* [Handle your first conversation](/en/bat-dau/xu-ly-hoi-thoai-dau-tien)
