[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 FreeScout conversations

> Find FreeScout conversations where one customer wrote twice about one problem and merge them, which the FreeScout API cannot do.

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

A customer who gets no answer writes again instead of replying, and now two conversations about one problem sit in your FreeScout queue, each with a different teammate working on it.

Cotlet does it in your own FreeScout account with list\_conversations, get\_conversation and merge\_conversations, called by your AI agent, an n8n workflow or a script.

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

Hosted · nothing to install or maintain

## Can FreeScout do this on its own?

FreeScout merges conversations in its web app, but its REST API lists no merge endpoint (checked 23 Oct 2026). So even with the paid API & Webhooks module a script or agent cannot merge two conversations; it can only move one to another mailbox or change its status.

## How you do it in FreeScout today

1. An agent notices the second conversation from the same customer, or finds it by searching the customer, or by number with a # in front, for example #12345.
2. The agent opens one of the two conversations and chooses Merge (key M) from its actions.
3. The agent picks the other conversation to merge with, and FreeScout joins the two.
4. Merging customers is a separate action: an agent adds the extra email address to the customer profile, or presses the Merge button at the bottom of the customer profile. Only email addresses and conversations move.
5. Nothing flags duplicates in the list, so they are found by reading the queue.

## How to merge duplicate FreeScout conversations

Prompt

```
Find active conversations in my Support mailbox where the same customer wrote twice about the same problem. Merge the newer one into the older one and list pairs you are unsure about.
```

1. 01  
### Collect the active queue  
list\_conversations reads the active conversations of the mailbox page by page. The agent groups them by the customer email in each row, because two conversations of one customer are the only pairs it considers.
2. 02  
### Compare the two threads  
For each pair, get\_conversation reads both threads. The agent merges only when the subjects and the first customer messages describe the same problem. Two different questions from one customer stay apart.
3. 03  
### Pick which one stays  
The older conversation is kept, because it carries the history your teammates know. merge\_conversations takes the newer one as conversation\_id and the older one as merge\_into\_id.
4. 04  
### Merge and report  
merge\_conversations asks for your OK per pair by default, since a merge cannot be reversed with one call. The agent reports the conversation that remains and its link.
5. 05  
### Leave unsure pairs  
Pairs where the customer wrote about two topics, or where two teammates are already answering, are listed with the reason and not merged.

### What you get back

Example data

```
Active conversations scanned: 41
Same customer, 2 or more conversations: 5 pairs
Merged 3 (e.g. Tom Becker, "Export to CSV fails" into the older one)
Left for you 2:
- Maria Silva: billing question and a feature request
- Jake Ortiz: two teammates already replying
```

### Other ways to ask

- Look only at conversations from the last 7 days and merge exact duplicates by subject.
- List the duplicates and the conversation I should keep, but do not merge.
- Also check the Closed conversations for a customer who reopened the same issue as a new one.

## What FreeScout allows, and what to know first

- FreeScout offers Merge as an action inside a single conversation, with the shortcut M.
- FreeScout's REST API lists no merge endpoint, so merging conversations only happens in the app.
- Merging customers in FreeScout is a different action from merging conversations: only email addresses and conversations move, and no other customer data is copied.
- FreeScout's search finds a conversation by number when you put # in front of it, for example #12345, and it shows deleted conversations too unless you set the State filter.
- With the Custom Fields module, merging conversations also merges custom fields: empty fields in the original take the values from the second conversation.

merge\_conversations asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.

Sources: [FreeScout: Keyboard Shortcuts module](https://freescout.net/module/keyboard-shortcuts/) · [FreeScout API docs](https://api-docs.freescout.net/) · [FreeScout Wiki: FAQ](https://github.com/freescout-help-desk/freescout/wiki/FAQ) · [FreeScout: Custom Fields module](https://freescout.net/module/custom-fields/)

## Call merge\_conversations from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/freescout/merge-intos/4821/conversations/4833/merge \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

Example response

```
{
"merged_conversation_id": 4833,
"remaining_conversation_id": 4821,
"url": "https://support.yourcompany.com/conversation/4821"
}
```

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

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

## FreeScout tools this automation uses

__Cotlet FreeScout tools used to merge duplicate FreeScout conversations__
| Tool | Parameters |
| -------------------- | ---------------------------------------------- |
| list\_conversations | mailbox\_id, status, assigned\_to, query, page |
| get\_conversation | conversation\_id |
| merge\_conversations | conversation\_id, merge\_into\_id |

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

## Frequently asked questions

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

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

- [Draft FreeScout replies to waiting customers](https://cotlet.dev/integrations/freescout-api-mcp-server/draft-replies-to-waiting-customers.md)
- [Assign unassigned FreeScout conversations by topic](https://cotlet.dev/integrations/freescout-api-mcp-server/assign-unassigned-conversations.md)
- [FreeScout API and MCP server: every tool](https://cotlet.dev/integrations/freescout-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to FreeScout.

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

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

---

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.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

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.
