🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Chatwoot to WhatsApp, send replies and media clean

Lisa Granqvist Partner Workflow Automation Expert

Your support team replies in Chatwoot, but the customer is waiting on WhatsApp. So someone copies text, re-uploads files, and hopes nothing gets missed. It’s slow. It’s messy. And “private note vs. public reply” mistakes are a little too easy to make.

This Chatwoot WhatsApp forwarding automation hits Support Leads first, but Ops Managers and agency teams running shared inboxes feel it too. The outcome is simple: every public Chatwoot reply (plus media) goes to WhatsApp automatically, while private notes stay private.

Below you’ll see how the workflow routes messages, detects media types, and sends clean WhatsApp-ready content through Evolution API without extra manual steps.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Chatwoot to WhatsApp, send replies and media clean

The Challenge: Forwarding Chatwoot Replies Without Breaking Context

Forwarding from Chatwoot to WhatsApp sounds straightforward until you’re in the middle of a real conversation. A customer asks for an invoice PDF, your agent replies with a note to the team, then adds a voice message, then sends an image. Now someone has to decide what to forward, download attachments, re-upload them, and keep the thread readable. Do that all day and you get delays, missing files, and support that feels “manual” even when you have a helpdesk.

It adds up fast. Here’s where it usually breaks down.

  • Agents end up copying and pasting the same reply twice, which burns focus and invites typos.
  • Attachments get skipped because downloading and re-sending a PDF or video is annoying on a busy shift.
  • Private notes accidentally leak into customer chat when someone forwards the wrong message.
  • Media types behave differently on WhatsApp, so what looked fine in Chatwoot can land as a broken link or wrong format.

The Fix: Clean Chatwoot → WhatsApp Delivery (Text + Media)

This workflow acts like a “delivery layer” between Chatwoot and WhatsApp. When a new Chatwoot message comes in from your main workflow, it immediately checks what kind of message it is and whether it should be forwarded at all. Public replies get packaged into a WhatsApp-friendly message object. Private notes are filtered out so they never leave your team. If the message includes attachments, the workflow builds a list, loops through each file, detects the content type (image, audio, video, document), and sends it using the correct Evolution API action. The end result is a WhatsApp conversation that looks intentional: readable text, properly delivered media, and no internal chatter.

The flow starts with an incoming Chatwoot event handed into this subworkflow. Then routing logic decides “text, media, survey, or nothing,” and a privacy check blocks internal notes. Finally, Evolution API sends the right WhatsApp message format for each item.

What Changes: Before vs. After

Real-World Impact

Say your team handles 40 WhatsApp-bound replies a day from Chatwoot, and about half include some kind of attachment. Manually, even a quick forward is maybe 2 minutes for a text reply and about 5 minutes when there’s a PDF, photo, or voice note. That’s roughly 2–3 hours of busywork daily. With this workflow, the “human time” becomes close to zero after the message is sent in Chatwoot, because WhatsApp delivery happens automatically in the background.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Chatwoot as your customer support inbox.
  • Evolution API to send WhatsApp messages.
  • Evolution API key (get it from your Evolution API provider dashboard).

Skill level: Intermediate. You’ll connect credentials and map a few fields from the Chatwoot payload to the Evolution API nodes.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

A Chatwoot message enters the subworkflow. This is designed to be attached to a “main” workflow that receives Chatwoot events (webhook or native integration) and then calls this subworkflow to handle WhatsApp delivery.

Routing decides what should happen. Switch and If logic check if there’s text, if the message is a private/internal note, and if attachments exist. If it’s private, the workflow intentionally does nothing. Quietly. Honestly, that one decision prevents a lot of awkward incidents.

Attachments are normalized and classified. A code step builds an attachment list from the Chatwoot payload, then a loop processes each file. Another routing check detects the attachment type using the content_type field so the workflow can send it the right way.

WhatsApp receives the final, formatted messages. Evolution API nodes send text, image, audio, video, or document messages as appropriate. If your use case includes surveys, there’s a dedicated “survey text” route too.

You can easily modify the routing rules to match your policy, like forwarding only certain inboxes or skipping large file types based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Execute Workflow Trigger

This workflow starts as a subworkflow and waits for another workflow to call it.

  1. Add the Subworkflow Trigger Start node to your canvas.
  2. Connect Subworkflow Trigger Start to Route Selector to begin routing when the subworkflow is invoked.
  3. Leave the parameters in Subworkflow Trigger Start as default unless the parent workflow sends special input keys.

Step 2: Configure Routing and Message Assembly

These nodes determine how incoming payloads are structured and routed through the workflow.

  1. In Route Selector, define your routing rules (outputs connect to Assemble Message Object or Do Nothing Step).
  2. Configure Assemble Message Object to build the unified message payload used downstream.
  3. Connect Assemble Message Object to Private Message Check to determine whether the message should be processed.
  4. In Private Message Check, route valid messages to Routing Gateway and invalid ones to Do Nothing Step.

Tip: Keep Do Nothing Step in place as a safe sink for unsupported or filtered messages during testing.

Step 3: Handle Attachments and Batch Processing

This section checks for attachments, builds a list, and iterates through each item to detect type.

  1. From Routing Gateway, send attachment-related traffic to Attachment Present Check.
  2. Configure Attachment Present Check to route true cases to Build Attachment List and false cases to Text Present Check.
  3. In Build Attachment List, aggregate incoming attachments into a list suitable for iteration.
  4. Connect Build Attachment List to Iterate Attachments to split attachments into batches.
  5. From Iterate Attachments, route items to Detect Attachment Type to branch by media format.

⚠️ Common Pitfall: If Build Attachment List outputs an empty array, Iterate Attachments will not emit items. Ensure the list is always an array, even when empty.

Step 4: Configure Message Dispatch Actions

These nodes send text, survey, and media content through the Evolution API integration.

  1. From Text Present Check, send text messages to Dispatch Text Message.
  2. In Routing Gateway, route survey traffic to Send Survey Text.
  3. In Detect Attachment Type, map each attachment type to the corresponding sender: Send Document File, Send Image Content, Send Audio Content, and Send Video Content.
  4. After each media sender, ensure the flow returns to Iterate Attachments to continue processing remaining items.
  5. Connect Evolution API credentials to all evolution nodes (6 total): Dispatch Text Message, Send Video Content, Send Audio Content, Send Image Content, Send Document File, and Send Survey Text.

⚠️ Common Pitfall: If Evolution API credentials are missing, all sender nodes will fail silently in testing. Verify connection before activation.

Step 5: Test and Activate Your Workflow

Run a manual test to validate routing, attachment handling, and sending behavior.

  1. Click Execute Workflow and invoke the parent workflow to trigger Subworkflow Trigger Start.
  2. Confirm that Route Selector routes correctly to Assemble Message Object and that Private Message Check forwards to Routing Gateway.
  3. Test with a message that includes attachments to ensure Build Attachment List, Iterate Attachments, and Detect Attachment Type route to the correct sender nodes.
  4. Verify that Evolution API nodes send the expected text or media output.
  5. Once successful, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Evolution API credentials can expire or need specific permissions. If things break, check your Evolution API key status and base URL configuration in the Evolution API node first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Common Questions

How quickly can I implement this Chatwoot WhatsApp forwarding automation?

About an hour if your Chatwoot and Evolution API credentials are ready.

Can non-technical teams implement this Chatwoot WhatsApp forwarding?

Yes, but you’ll want someone comfortable with mapping fields in n8n. No coding is required if your Chatwoot payload structure is already known.

Is n8n free to use for this Chatwoot WhatsApp forwarding workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Evolution API costs from your provider.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

How do I adapt this Chatwoot WhatsApp forwarding solution to my specific challenges?

Start with the routing logic: the “Routing Gateway” and “Route Selector” Switch nodes decide which kinds of messages get forwarded. If you need stricter privacy rules, adjust the “Private Message Check” so only public replies pass through. For media, the “Detect Attachment Type” Switch node is where you can block certain file types, set size limits, or route PDFs to a different WhatsApp template. You can also modify the “Assemble Message Object” code step to add prefixes like agent name, ticket ID, or business hours notices.

Why is my Chatwoot connection failing in this workflow?

Usually it isn’t Chatwoot itself, it’s the incoming payload shape from your main workflow. Confirm the subworkflow is receiving the expected Chatwoot fields (message text, attachments array, and the content_type values). If those are present, check the Evolution API node credentials next, because a valid Chatwoot event can still fail at delivery time due to an expired key or wrong base URL.

What’s the capacity of this Chatwoot WhatsApp forwarding solution?

On n8n Cloud, capacity depends on your plan’s monthly executions, and this workflow typically uses multiple executions per conversation when attachments are present. If you self-host, there’s no execution cap, but throughput depends on your server and how fast Evolution API responds. In practice, most small teams can run this all day without thinking about it, then upgrade only when volume spikes.

Is this Chatwoot WhatsApp forwarding automation better than using Zapier or Make?

Often, yes. The big difference is how comfortably n8n handles branching logic and looping through multiple attachments in one message, without turning your automation into a fragile chain of mini-zaps. You can also self-host, which matters when message volume grows and pricing starts to sting. Zapier and Make can still work for simple text-only forwarding, but they get awkward once you need content-type detection for images, audio, video, and documents. If you’re undecided, Talk to an automation expert and describe your message volume and media mix.

Once this is running, Chatwoot stays your workspace and WhatsApp stays the customer’s channel. The workflow handles the repetitive forwarding so your team can just support people.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal