[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)

# Merge duplicate Kustomer conversations with AI

> Find customers with two open conversations on one issue and merge them into one Kustomer thread, with a note why. Runs weekly.

Source: https://cotlet.dev/integrations/kustomer-api-mcp-server/merge-duplicate-conversations

A customer emails support, gets no answer by lunch, and writes again from another address or channel. Now two open conversations sit in the queue and two agents may answer the same question.

Cotlet does it in your own Kustomer account with search\_conversations, get\_conversation\_messages, merge\_conversations and add\_note, called by your AI agent, an n8n workflow or a script.

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

Hosted · nothing to install or maintain

## Can Kustomer do this on its own?

Kustomer merges conversations from the More menu, one pair at a time, and a workflow can lock a conversation against merging with the mergeLocked attribute (checked 17 Oct 2026). The official MCP server cannot merge. The REST API can, but you must build the pairing logic yourself. Nothing in Kustomer finds and merges duplicates by reading the threads.

## How you do it in Kustomer today

1. The agent opens the first conversation in the customer timeline and compares it with the second one by reading both threads.
2. In the upper-right corner of the conversation, the agent clicks the More menu and selects Merge Conversation.
3. Kustomer lists all conversations in that customer's timeline. The agent picks the one to merge and clicks Merge.
4. All messages and notes from both conversations appear in one thread in chronological order.
5. Finding the pairs is the slow part: nobody gets a list of customers with two open conversations, so duplicates are noticed only when someone happens to open the timeline.

## How to merge duplicate Kustomer conversations with AI

Prompt

```
Find customers in Kustomer who have two or more open conversations about the same issue this week. Merge the newer ones into the oldest and leave an internal note on the one that stays. List anything you are unsure about instead.
```

1. 01  
### Find customers with several open conversations  
search\_conversations runs with status open and your window, and the agent groups the results by customer. Customers with a single conversation are dropped at once.
2. 02  
### Read both threads  
get\_conversation\_messages returns each thread oldest first. The agent merges only when both are about the same issue, for example the same order number or the same error, and not just the same customer.
3. 03  
### Pick the survivor  
The oldest conversation stays, so its history and owner are kept. The newer one is merged into it.
4. 04  
### Check for a lock  
If a workflow set mergeLocked on a conversation, the merge is refused. The agent lists that pair for you and does not retry.
5. 05  
### Merge and leave the reason  
merge\_conversations merges the pair and waits for your OK by default, because a merge is permanent. add\_note then records one line on the surviving conversation saying which one was merged and why.

### What you get back

Example data

```
Customers with 2 or more open conversations: 6
Merged 4, e.g. Dana Whitfield, "Export fails" (2 conversations into the older one)
Not the same issue, left for you 2:
- Jon Reyes: billing question and a login bug
- Priya Nair: two orders, two separate shipping questions
```

### Other ways to ask

- Every Monday, list customers with more than one open conversation and merge nothing.
- Merge only duplicates that arrived through email, and skip chat and SMS.
- Merge duplicates for customers of companies tagged enterprise and show me each pair first.

## What Kustomer allows, and what to know first

- A Kustomer merge is permanent and cannot be undone. The merged conversations cannot be separated again.
- Data on the conversation that is merged into another is not carried over. Only the parent conversation keeps its data.
- Messages and notes from both conversations appear in chronological order, as if they were always one thread.
- A conversation with the mergeLocked attribute set to true cannot be merged. A workflow or the API sets it.
- Linking conversations is the less permanent option: it relates two conversations without combining them.

merge\_conversations and add\_note ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.

Sources: [Kustomer Help: Merging conversations](https://help.kustomer.com/en%5Fus/merge-a-conversation-rk9wEaJBP) · [Kustomer Help: Understanding the Conversation lifecycle](https://help.kustomer.com/en%5Fus/understanding-the-conversation-lifecycle-BJTXglPhbe) · [Kustomer Help: Understanding the Kustomer MCP Server tools](https://help.kustomer.com/en%5Fus/understanding-the-kustomer-mcp-server-tools-ry1KuLVXMx)

## Call merge\_conversations from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/kustomer/target-conversations/6718d2e4a1b2c3d4e5f60711/conversations/merge \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"source_conversation_id":"6719a8c0a1b2c3d4e5f60722"}'
```

Example response

```
{
"target_conversation_id": "6718d2e4a1b2c3d4e5f60711",
"source_conversation_id": "6719a8c0a1b2c3d4e5f60722",
"status": "merged",
"updated_at": "2026-10-17T09:05:00Z"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is kustomer\_write → merge\_conversations. Example data.

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

## Kustomer tools this automation uses

__Cotlet Kustomer tools used to merge duplicate Kustomer conversations with AI__
| Tool | Parameters |
| --------------------------- | ------------------------------------------------------------------------- |
| search\_conversations | status, tag, customer\_id, updated\_before, updated\_after, limit, cursor |
| get\_conversation\_messages | conversation\_id, direction, channel, cursor |
| merge\_conversations | target\_conversation\_id, source\_conversation\_id |
| add\_note | conversation\_id, body |

[All 12 Kustomer tools with descriptions](https://cotlet.dev/integrations/kustomer-api-mcp-server.md#tools)

## Frequently asked questions

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

Yes. You sign in to Kustomer yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Kustomer 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 Kustomer automations

- [Follow up on snoozed Kustomer conversations](https://cotlet.dev/integrations/kustomer-api-mcp-server/follow-up-on-snoozed-conversations.md)
- [Add handoff notes to Kustomer conversations](https://cotlet.dev/integrations/kustomer-api-mcp-server/add-handoff-notes-to-conversations.md)
- [Kustomer API and MCP server: every tool](https://cotlet.dev/integrations/kustomer-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Kustomer.

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

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

---

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.
