Smarter Assignment Policies and Mobile Search

Muhsin K
Published on
3 minute read
This release focuses on two core areas: improving how conversations are assigned and making it easier to find information on mobile. As teams scale, both of these become critical to keeping operations efficient.
Alongside these changes, we’ve addressed a range of smaller issues across Captain, conversations, and system performance to make the product more predictable and reliable in day-to-day use.
Assignment Policies
Until now, assignment in Chatwoot relied on simple round-robin. While this works for smaller teams, it doesn’t account for real-world conditions, differences in agent capacity, uneven traffic, or backlog buildup, which means work often ends up distributed inefficiently as volume grows.
We’re introducing Assignment Policies to give you more control over how work flows through your team, instead of relying on a one-size-fits-all approach.
You can define policies that determine how conversations are distributed, how they are prioritized, and how much load each agent should handle. This includes:
- Choosing the assignment method (round-robin or balanced)
- Deciding how conversations are prioritized (earliest created or longest waiting)
- Setting capacity limits to prevent agents from being overloaded

For example, you can cap assignments at 10 conversations per agent per hour. This make sure load is distributed more evenly and prevents individual agents from getting overwhelmed during peak traffic.
Policies are applied at the inbox level. This means you can treat different workflows differently:
- A support inbox can prioritize longest-waiting conversations.
- A sales inbox can distribute leads evenly across agents.
Round-robin assignment is available in the open-source edition. Balanced distribution and capacity limits are available in the Enterprise plan.
Please read more about this feature here
Universal Search on Mobile
Search on mobile now works the same way it does on the web.
You can search across contacts, conversations, and messages from a single place. Results are grouped by type and can be filtered using tabs.

This makes it easier to find context while you’re away from your desk. If a customer references an older conversation, you can quickly locate it from your phone without switching to desktop.
Other Updates.
Captain and AI
- Scenario labels and handoff keys: Captain scenarios now support labels and use handoff key for routing, making multi-step AI flows easier to manage.
- System API key for completions: The completion service now prefers the system-level API key, reducing setup friction for individual users.
- Skip auto-open for templates: Captain no longer auto-opens when sending template messages — it was getting in the way.
- Slimmer help center search results: Search results returned to Captain are now trimmed down, which helps the AI focus on relevant content and reduces token usage.
Conversations and Workflow
- Only confirmed agents in macros and automations: Agent assignment actions in macros and automations now filter out unconfirmed agents. Previously, assigning to an agent who hadn't confirmed their account
would silently fail. - Correct message status indicators for API channel: Sent and delivered indicators were reversed for API channel messages. Fixed.
- Email OAuth replies without global SMTP: If your inbox uses OAuth for email, you can now send replies even without a global SMTP configuration. This was blocking replies for setups that relied entirely on
OAuth. - Configurable transcript rate limit: The rate limit for conversation transcript requests is now configurable instead of hardcoded.
- IME composition fix: Pressing Enter during IME composition (common when typing in Chinese, Japanese, or Korean) no longer accidentally submits the message in AI input fields.
Security and Access
- Restrict sign-in to account members: Existing users can now only sign in to accounts they belong to, closing a gap where the sign-in flow was too permissive.
- Remove double HMAC check: A redundant HMAC verification step was removed, simplifying the authentication path without reducing security.
- Normalize signup config checks: Account signup configuration checks are now consistent across different entry points.
Performance
- Message query optimization: Conversations now force the
account_idindex when fetching messages for push events, avoiding slow sequential scans on large accounts. - Skip redundant contact saves:
ContactIdentifyActionno longer triggers unnecessary database writes when nothing has changed. - Reduce presence update frequency: Presence updates are now less frequent and properly handle background tab throttling, reducing unnecessary WebSocket traffic.
- Remove message touch: Message updates no longer cascade
touchcalls to parent records. A combined update query replaces the previous approach, reducing database writes.
Mobile App
- Fixed custom attribute variables not resolving in canned responses.
- Fixed image scaling issues.
- Fixed conversation card hover state triggering on scroll touch.
We’ve officially released v4.12.0. You can read the full technical changelog on GitHub Discussions → v4.12.0