[{"data":1,"prerenderedAt":42},["Reactive",2],{"blogPosts-captain-custom-tools":3,"featurePages":41},{"slug":4,"id":5,"uuid":6,"title":7,"html":8,"comment_id":5,"feature_image":9,"featured":10,"visibility":11,"created_at":12,"updated_at":13,"published_at":14,"custom_excerpt":7,"codeinjection_head":15,"codeinjection_foot":15,"custom_template":15,"canonical_url":15,"authors":16,"tags":28,"primary_author":35,"primary_tag":36,"url":37,"excerpt":7,"reading_time":38,"access":39,"comments":10,"og_image":15,"og_title":15,"og_description":15,"twitter_image":15,"twitter_title":15,"twitter_description":15,"meta_title":7,"meta_description":40,"email_subject":15,"frontmatter":15,"feature_image_alt":15,"feature_image_caption":15},"captain-custom-tools","69cf5fbd4a1c2004e083aa52","e01dec9c-8c59-4c20-9746-7997f1de8947","Captain Custom Tools","\u003Cp>Captain can now call external APIs during a conversation. You define the tool endpoints your systems expose, and Captain decides when to use them based on the context.\u003C/p>\u003Cp>This helps answer questions like warranty checks, order lookups, or service availability instantly, without involving an agent.\u003C/p>\u003Cp>Tools are configured in Captain settings. You define the API endpoint, specify the parameters Captain should extract from the conversation, and describe what the tool does. Captain uses this description to determine when the tool is relevant.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://www-internal-blog.chatwoot.com/content/images/2026/04/1.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1608\" height=\"1128\" srcset=\"https://www-internal-blog.chatwoot.com/content/images/size/w600/2026/04/1.png 600w, https://www-internal-blog.chatwoot.com/content/images/size/w1000/2026/04/1.png 1000w, https://www-internal-blog.chatwoot.com/content/images/size/w1600/2026/04/1.png 1600w, https://www-internal-blog.chatwoot.com/content/images/2026/04/1.png 1608w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>For example, if a customer asks \"Is my laptop still under warranty?\", Captain can call your warranty API with the serial number from the conversation, get a response, and reply with the result all without involving an agent.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://www-internal-blog.chatwoot.com/content/images/2026/04/2.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1522\" height=\"876\" srcset=\"https://www-internal-blog.chatwoot.com/content/images/size/w600/2026/04/2.png 600w, https://www-internal-blog.chatwoot.com/content/images/size/w1000/2026/04/2.png 1000w, https://www-internal-blog.chatwoot.com/content/images/2026/04/2.png 1522w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Read more about \u003Ca target=\"_blank\" rel=\"noopener\" href=\"https://www.chatwoot.com/hc/user-guide/articles/1775045339-v2-_-how-to-set-up-custom-tools-for-captain?ref=www-internal-blog.chatwoot.com\" rel=\"noreferrer\">setting up custom tools\u003C/a>\u003C/p>\u003Ch3 id=\"other-updates\">Other Updates. \u003C/h3>\u003Cp>\u003C/p>\u003Cp>\u003Cstrong>Captain &amp; AI \u003C/strong>\u003C/p>\u003Cul>\u003Cli>Share contact attributes with Captain: You can now toggle whether Captain has access to contact attributes like name, email, or custom fields. This gives Captain more context when it needs it useful when your responses depend on who the customer is.\u003C/li>\u003Cli>Auto-resolve gibberish and no-intent messages: If a conversation has been idle and the last message was gibberish or had no clear intent, Captain can now auto-resolve it instead of leaving it open.\u003C/li>\u003Cli>Improved hand-off behavior: We refined the hand-off prompt so Captain is less likely to escalate when a conversation is being auto-resolved. Separately, Captain now skips the hand-off entirely if the conversation is no longer in a pending state.\u003C/li>\u003Cli>Agent name in widget bubble: When Captain replies and the conversation is unread, the widget now shows the assigned agent's name instead of a generic label.\u003C/li>\u003Cli>Bulk manage Captain documents: You can now select multiple Captain knowledge base documents and delete them in bulk.\u003C/li>\u003C/ul>\u003Cp>\u003Cstrong>Webhooks &amp; API\u003C/strong>\u003C/p>\u003Cp>We made several changes to how webhook payloads are structured, aimed at making integrations more predictable.\u003C/p>\u003Cul>\u003Cli>Raw message content in payloads: Webhook payloads now send the raw message content instead of channel-rendered HTML. If you're parsing webhook data downstream, this makes the content more consistent\u003Cbr>regardless of which channel it came from.\u003C/li>\u003Cli>Attachment metadata: Attachment payloads now include the file extension and content_type, so you don't need to infer the file type from the URL.\u003C/li>\u003Cli>Agent bot retry logs: When an agent bot webhook retry fails, the log now includes the event payload. Previously you'd see the failure but not what was being sent.\u003C/li>\u003Cli>Better error messages on API channel creation: When creating an API channel fails, the error message now reflects the actual backend error instead of a generic failure.\u003C/li>\u003Cli>Webhook on agent bot assignment: Assigning an agent bot to a conversation now dispatches a webhook event, so bots respond correctly even when assigned after the conversation has started.\u003C/li>\u003C/ul>\u003Cp>\u003Cstrong>Channels &amp; Integrations\u003C/strong>\u003C/p>\u003Cul>\u003Cli>Configurable Dialogflow language: You can now set a language code for Dialogflow queries, with support for auto-detection. Helpful if your bot handles multiple languages.\u003C/li>\u003Cli>LINE media URLs: Image and video messages from LINE now use non-expiring URLs, so media doesn't break when viewed later.\u003C/li>\u003Cli>WhatsApp health check skip on reauth: Reauthorizing a WhatsApp inbox no longer triggers a health check, which was sometimes causing false disconnect alerts.\u003C/li>\u003Cli>Instagram attachment URL scoping: Attachment URL overrides are now scoped to Instagram DM conversations only, instead of applying broadly.\u003C/li>\u003Cli>Auto-linkify in email messages: URLs in email channel messages are now automatically converted to clickable links.\u003C/li>\u003C/ul>\u003Cp>\u003Cstrong>Help Center\u003C/strong>\u003C/p>\u003Cul>\u003Cli>GuideJar embed support: You can now embed GuideJar content in Help Center articles.\u003C/li>\u003Cli>Fixed tables in markdown articles.\u003C/li>\u003C/ul>\u003Cp>\u003Cstrong>UI Improvements\u003C/strong>\u003C/p>\u003Cul>\u003Cli>Auto-focus on reply: Clicking \"reply\" on a message now automatically focuses the editor, so you can start typing immediately.\u003C/li>\u003Cli>Paste and linkify: URLs pasted into the editor are now auto-linkified right away, instead of remaining as plain text until you send.\u003C/li>\u003Cli>Channel character limits: Message trimming now respects channel-specific character limits instead of applying a single default.\u003C/li>\u003Cli>Estonian language support: Estonian has been added to the language options.\u003C/li>\u003C/ul>\u003Cp>\u003Cstrong>Platform &amp; Infrastructure\u003C/strong>\u003C/p>\u003Cul>\u003Cli>File descriptor limit: Raised the default file descriptor limit to 65,536 to prevent EMFILE errors during deploys.\u003C/li>\u003Cli>DNS error handling in push notifications: Browser push notifications now handle DNS resolution failures gracefully instead of crashing.\u003C/li>\u003Cli>Locale load fix: A silent SyntaxError that occurred when the account API call failed during locale loading has been fixed.\u003C/li>\u003Cli>OAuth credential rotation: When an account is unconfirmed, the OAuth password is now rotated to close a credential reuse gap.\u003C/li>\u003Cli>Stripe double-pay prevention: If an invoice is already covered by credit balance after finalization, the pay call is now skipped to avoid double charges.\u003C/li>\u003C/ul>","https://www-internal-blog.chatwoot.com/content/images/2026/04/captain-custom-tools.png",false,"public","2026-04-03T06:35:41.000+00:00","2026-04-03T10:26:00.000+00:00","2026-04-03T06:38:39.000+00:00",null,[17],{"id":18,"name":19,"slug":20,"profile_image":21,"cover_image":22,"bio":23,"website":24,"location":25,"facebook":15,"twitter":26,"meta_title":15,"meta_description":15,"url":27},"6118d8d14b8f26503f72d51b","Muhsin K","muhsin","https://www-internal-blog.chatwoot.com/content/images/2026/02/CleanShot-2026-02-23-at-12.44.10@2x.png","https://www-internal-blog.chatwoot.com/content/images/2021/08/1500x500.jpeg","Product-minded engineer building across backend, frontend, mobile and AI systems.","https://www.muhsi.me","Bengauluru, India","@muhsin_keloth","https://www-internal-blog.chatwoot.com/author/muhsin/",[29],{"id":30,"name":31,"slug":31,"description":32,"feature_image":15,"visibility":11,"og_image":15,"og_title":15,"og_description":15,"twitter_image":15,"twitter_title":15,"twitter_description":15,"meta_title":15,"meta_description":15,"codeinjection_head":15,"codeinjection_foot":15,"canonical_url":15,"accent_color":33,"url":34},"6118da7b4b8f26503f72d52e","releases","We release a new and improved version of Chatwoot every mid-month. We make sure to tell you all about it and how you can use it to improve your Chatwoot experience, in our series of product updates.","#189aff","https://www-internal-blog.chatwoot.com/tag/releases/",{"id":18,"name":19,"slug":20,"profile_image":21,"cover_image":22,"bio":23,"website":24,"location":25,"facebook":15,"twitter":26,"meta_title":15,"meta_description":15,"url":27},{"id":30,"name":31,"slug":31,"description":32,"feature_image":15,"visibility":11,"og_image":15,"og_title":15,"og_description":15,"twitter_image":15,"twitter_title":15,"twitter_description":15,"meta_title":15,"meta_description":15,"codeinjection_head":15,"codeinjection_foot":15,"canonical_url":15,"accent_color":33,"url":34},"https://www-internal-blog.chatwoot.com/captain-custom-tools/",3,true,"Captain now calls your APIs mid-conversation",[],1775212113107]