[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Reply to Chatwoot questions from canned responses

> Answer common Chatwoot questions with your own canned responses, filled in for each customer, and leave the hard ones to your team. Runs daily.

Source: https://cotlet.dev/integrations/chatwoot-api-mcp-server/reply-from-canned-responses

Half of the open conversations ask the same five questions, and an agent still opens each one, types a slash, picks the canned response and edits the greeting before it goes out.

Cotlet does it in your own Chatwoot account with list\_canned\_responses, list\_conversations, get\_conversation and send\_reply, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=chatwoot) [All Chatwoot tools](https://cotlet.dev/integrations/chatwoot-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Chatwoot do this on its own?

Chatwoot inserts a canned response only when an agent picks it in a conversation (checked 22 Oct 2026). Automation rules can run the action Send a message on events such as Conversation created, but they send fixed text and do not choose a response by what the customer asked. The Application API can create a message, but it needs a token and code you host.

## How you do it in Chatwoot today

1. An admin or any agent creates a canned response under Settings > Canned Responses > Add canned response, with a Short Code of at least 2 characters and the Content.
2. In a conversation, the agent types / in the reply editor, picks a response from the list or types its short code, and presses Enter to fill the reply box.
3. Variables such as {{contact.first\_name}} and {{agent.name}} are replaced when the response is inserted. A missing value becomes blank, so the agent checks the greeting.
4. The agent edits the text if needed, attaches any image by hand, because inline images are not part of a canned response, and clicks Send.
5. This repeats for every common question, and it is easy to miss a conversation that is open but waiting on us.

## How to reply to Chatwoot questions from canned responses

Prompt

```
Find open Chatwoot conversations where the customer wrote last and the question matches one of my canned responses. Send that response with the customer's first name filled in. If nothing fits, leave the conversation for me.
```

1. 01  
### Load your responses  
list\_canned\_responses runs once and returns each short code with its content. Your agent matches questions only to responses that exist, and never writes an answer your team did not approve.
2. 02  
### Find conversations that wait on you  
list\_conversations runs with status open. The agent keeps those where last\_message.sender is contact, so a conversation where your team already answered is left alone.
3. 03  
### Match by meaning  
get\_conversation brings the thread. A question that clearly matches one response goes forward. Refunds, complaints and anything not in your canned responses are listed for you.
4. 04  
### Fill in the variables  
send\_reply sends the text as written, so the agent replaces {{contact.first\_name}} and similar variables itself from the conversation. When the first name is missing, the greeting is dropped instead of sent blank.
5. 05  
### Send once  
send\_reply goes out once per conversation through the channel of its inbox. Each reply waits for your OK until you switch confirmation off for send\_reply.
6. 06  
### Stop on new activity  
Right before sending, the agent reads the conversation again. If a colleague replied in the meantime, the agent skips it, so the customer never gets two answers.

### What you get back

Example data

```
Open conversations waiting on us: 17
Replied 9, e.g. #1851 Priya Nair: password reset steps (reset-password)
Left for you 8:
- #1853 refund request
- #1856 no canned response fits
- #1859 customer is angry and wrote three times
```

### Other ways to ask

- Only check the Website chat inbox and reply to anything older than 30 minutes that matches a canned response.
- Every evening, list the replies you would send and wait for my OK on each.
- Reply only with the response whose short code starts with faq-, and tell me which short codes were used.

## What Chatwoot allows, and what to know first

- A Chatwoot short code needs at least 2 characters and must be unique in the account.
- Any agent or admin can create canned responses, and all of them are available to every agent in the account.
- Chatwoot canned response variables cover the contact (id, name, first name, last name, email, phone), the agent, the inbox, the conversation and custom attributes.
- A missing variable value is replaced with a blank, so a customer without a name would get a greeting with a gap.
- Formatting differs by channel: website chat and email show rich text, while SMS shows plain text.

send\_reply asks for your OK by default. To run it daily without you, switch confirmation off for that tool in your dashboard.

Sources: [Chatwoot Help: Canned responses](https://chatwoot.help/hc/user-guide/articles/1677501325-how-to-create-saved-reply-templates-with-canned-responses) · [Chatwoot Help: How to use automation](https://chatwoot.help/hc/user-guide/articles/1677689800-how-to-use-automation) · [Chatwoot developers: Create New Message](https://developers.chatwoot.com/api-reference/messages/create-new-message)

## Call send\_reply from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/chatwoot/conversations/1851/replies \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body":"Hi Priya, you can reset your password from the sign-in page: choose Forgot your password and follow the link in the email. Tell us if it does not arrive."}'
```

Example response

```
{
"message_id": 90412,
"conversation_id": 1851,
"private": false,
"status": "sent",
"created_at": "2026-10-22T07:20:00Z"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is chatwoot\_write → send\_reply. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/chatwoot-api-mcp-server.md#automations)

## Chatwoot tools this automation uses

__Cotlet Chatwoot tools used to reply to Chatwoot questions from canned responses__
| Tool | Parameters |
| ----------------------- | ------------------------------------------------------------ |
| list\_canned\_responses | none |
| list\_conversations | status, assignee, inbox\_id, label, contact\_id, query, page |
| get\_conversation | conversation\_id |
| send\_reply | conversation\_id, body |

[All 14 Chatwoot tools with descriptions](https://cotlet.dev/integrations/chatwoot-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Chatwoot to Cotlet?

Yes. You sign in to Chatwoot yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Chatwoot once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Chatwoot automations

- [Triage new Chatwoot conversations with AI](https://cotlet.dev/integrations/chatwoot-api-mcp-server/triage-new-conversations.md)
- [Snooze or resolve stale Chatwoot conversations](https://cotlet.dev/integrations/chatwoot-api-mcp-server/resolve-stale-conversations.md)
- [Chatwoot API and MCP server: every tool](https://cotlet.dev/integrations/chatwoot-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Chatwoot.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Chatwoot.

[Sign up free](https://cotlet.dev/app/signup?app=chatwoot)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
