FreeScout automation · runs daily
Assign unassigned FreeScout conversations by topic
New email lands in the Unassigned folder overnight, and before anyone can start answering, someone has to read each one and decide whose it is.
Cotlet does it in your own FreeScout account with list_users, list_conversations, get_conversation, assign_conversation and add_note, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can FreeScout do this on its own?
FreeScout assigns by rules only through its Workflows module, a paid extra (checked 23 Oct 2026). A rule matches conditions you write in advance, such as the subject, body or tags. The REST API of the paid API & Webhooks module can assign a conversation, but it has no step that reads a message and decides whose it is.
How you do it in FreeScout today
- An agent opens the mailbox and its Unassigned conversations, and reads each one to see the topic.
- In the open conversation the agent presses Assign (key A) and picks a teammate from the Assignee dropdown of that mailbox.
- The agent adds a note with Add Note (key N) so the teammate knows why it landed on them.
- An assigned teammate gets an email about it if their Notifications are set up for that.
- The queue refills every day, and one that is not read in the morning stays unassigned until the next shift.
How to assign unassigned FreeScout conversations by topic
Read the unassigned conversations in my Support mailbox. Assign billing questions to Sam Okafor and technical ones to Maya Brown, and add a note saying why. Leave the rest. - 01
Learn who can take work
list_users returns the people in the Assignee dropdown of the mailbox. A mailbox can hide admins from that list, so the agent assigns only to the names it returns.
- 02
Read the unassigned queue
list_conversations runs with assigned_to set to unassigned and follows has_more to the last page, so a backlog after a weekend is sorted in one pass.
- 03
Decide by the topic you named
The agent reads each thread with get_conversation and matches it to the routing in your prompt, for example billing to one person and technical questions to another. A message that fits no rule stays unassigned.
- 04
Assign and explain
assign_conversation hands the conversation to the teammate, and add_note records the reason in one line. Both ask for your OK by default, because assigning can send the teammate an email.
- 05
Report what is left
The agent lists the conversations it did not assign, with the reason, so you can place them by hand.
What you get back
Unassigned in Support: 11
Assigned 8:
- 5 billing to Sam Okafor (e.g. "Invoice shows the wrong VAT number")
- 3 technical to Maya Brown (e.g. "Cannot reset my password")
Left unassigned 3:
- "Partnership idea" (not a support request)
- 2 in a language nobody on the team covers Other ways to ask
- Spread the technical conversations evenly between Maya Brown and Sam Okafor.
- Assign anything from our top ten customers to me and add a note.
- List the unassigned conversations that have waited more than a day and assign none.
- Move conversations that are really sales questions to the Sales mailbox instead of assigning them.
What FreeScout allows, and what to know first
- A FreeScout mailbox has a Permissions option "Hide from Assign list", so an admin can be absent from the Assignee dropdown.
- FreeScout emails an assignee about a new assignment only if that teammate has Notifications configured.
- A non-admin FreeScout profile can have "User can see only assigned conversations", and then the person does not see unassigned ones, so the account behind this job should not have it.
- FreeScout admins have access to all mailboxes, and other agents see only the mailboxes they were given.
- FreeScout Workflows run per mailbox and match conditions such as subject, body, status, assignee and tags.
assign_conversation and add_note ask for your OK by default. To run it daily without you, switch confirmation off for those tools in your dashboard.
Sources: FreeScout Wiki: FAQ · FreeScout: Workflows module · FreeScout: Keyboard Shortcuts module · FreeScout API docs
Call assign_conversation from a script
curl -X POST https://cotlet.dev/api/v1/freescout/conversations/4850/assign \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"user_id":3}' {
"conversation_id": 4850,
"assignee": {
"user_id": 3,
"name": "Sam Okafor"
},
"status": "active"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is freescout_write → assign_conversation. Example data.
Schedule it in n8n, Make, Zapier or cronFreeScout tools this automation uses
| Tool | Parameters |
|---|---|
| list_users | mailbox_id |
| list_conversations | mailbox_id, status, assigned_to, query, page |
| get_conversation | conversation_id |
| assign_conversation | conversation_id, user_id |
| add_note | conversation_id, body |
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.
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.