What changed at Chatwoot Cloud in July 2026
In July 2026, the Chatwoot team published an update to the free Cloud plan policy. According to the associated blog posts, the following features were moved behind a paid plan:
- REST API access: all routes /api/v1/profile, /api/v1/accounts/{id}/conversations, contacts, labels, and all management endpoints now return HTTP 401 for free plan accounts.
- Outbound webhooks: conversation_created, message_created, conversation_status_changed and other events are no longer triggered to configured URLs.
- Third-party integrations: any n8n, Activepieces, Zapier or Make workflow relying on a Chatwoot Cloud API token stops working without visible prior warning in the dashboard.
The full scope is documented in the analysis published on dev.to by Pavel Hostim.
What is blocked on the free Chatwoot Cloud plan
- REST API calls: all
/api/v1/…routes return HTTP 401 for tokens issued by a Free plan account - Outbound webhooks: conversation and message events are no longer sent to configured URLs
- n8n integrations: Chatwoot nodes and direct HTTP calls to the Cloud API fail silently or return an authentication error
- Activepieces integrations: any trigger or action consuming a Chatwoot Cloud API token is inoperative
- CRM synchronisation: connectors that push Chatwoot conversations to a CRM via the API are cut off
- Automated reports: scripts that aggregate support statistics via the API can no longer authenticate
Free Cloud plan vs self-hosted: comparison table
Scroll the table
| Criterion | Free Cloud | Self-hosted |
|---|---|---|
| REST API access | Blocked since July 2026 | Full, unrestricted |
| Outbound webhooks | Disabled | Freely configurable |
| Number of agents | Limited (2 on the Free plan) | No fixed cap (based on your resources) |
| Monthly cost | Free but no API | VPS cost only — no software surcharge |
| Data and GDPR | Data hosted at Chatwoot Inc. | Data under your control, on your servers |
| Updates | Managed by Chatwoot | Your responsibility (Docker pull) |
| n8n / Activepieces integrations | Impossible on the free plan | Functional from deployment |
Exporting your data from Chatwoot Cloud
Before dismantling your Cloud account, export all useful data. Chatwoot offers two export paths from the dashboard.
Export procedure from Chatwoot Cloud
Export contacts
In the Chatwoot Cloud dashboard, go to Contacts → download icon (top right). Chatwoot generates a CSV file with each contact's first name, last name, email, phone and labels. Keep this file — it will be used for import on your self-hosted instance.
Export conversations via the API (if your plan still allows it)
If you still have API access or are on a paid plan being terminated, export conversations with:
curl -H "api_access_token: <YOUR_TOKEN>" \ "https://app.chatwoot.com/api/v1/accounts/<ACCOUNT_ID>/conversations" \ -o conversations-export.jsonReplace
<YOUR_TOKEN>and<ACCOUNT_ID>with your values. Repeat with?page=2,?page=3… until you get an empty array.Download attachments
Files attached to conversations are served from the Chatwoot Cloud CDN. Note the URLs of the form
https://app.chatwoot.com/rails/active_storage/…in the exported JSON. Awgetorcurlscript can download them in bulk if your access quota still permits.Export agent profiles
In Settings → Agents, note the email address of each agent. You will need them to recreate accounts on your self-hosted instance. CSV export is available from the same page.
Export inboxes and their settings
In Settings → Inboxes, document each configuration: channel type (email, web widget, WhatsApp Business, etc.), SMTP settings, channel API keys. This data is not automatically exportable — a screenshot or copy-paste is sufficient.
Export labels and canned responses
In Settings → Labels and Canned Responses, export or copy the entries. Canned responses are not natively exportable as CSV — copy them manually or via the API if you still have access:
GET /api/v1/accounts/<ID>/canned_responses.Archive your Cloud account
Once the data is retrieved, you can deactivate your Chatwoot Cloud account from Account Settings → Danger zone → Delete account. This action is irreversible.
Deploying Chatwoot self-hosted on a ServOrbit VPS
Chatwoot deploys via Docker Compose. The usual objection — 'self-hosting is too complex to maintain' — is addressed by the ServOrbit Marketplace: the Chatwoot template configures Docker, nginx and TLS in a single operation. You keep root access and full API.
Deployment from the ServOrbit Marketplace
Choose the right VPS
Chatwoot requires at least 2 vCPU and 4 GB of RAM for everyday use (a few agents, a few hundred active conversations). For a team of 10 or more agents, plan for 4 vCPU / 8 GB. The PostgreSQL database is the most memory-intensive component.
In your ServOrbit client area, select a VPS with these specs and choose Ubuntu 22.04 or Debian 12 as the base image.
Activate the Chatwoot template from the Marketplace
In the ServOrbit client area, go to Marketplace → Collaboration → Chatwoot (or use the direct link at /marketplace/collaboration/chatwoot). Select your target VPS and launch the deployment. The template installs Docker, Docker Compose, nginx and Certbot, then configures Chatwoot via
docker-compose.yml.Configure environment variables
After deployment, SSH into your VPS and edit the generated
.envfile in/opt/chatwoot/:SECRET_KEY_BASE=<generate with openssl rand -hex 64> FRONTEND_URL=https://chat.your-domain.com DEFAULT_LOCALE=en [email protected] SMTP_ADDRESS=<your-smtp> SMTP_USERNAME=<login> SMTP_PASSWORD=<password>Then restart the containers:
docker compose down && docker compose up -d.Point your domain and activate TLS
In Cloudflare (or your DNS manager), add an A record for
chat.your-domain.compointing to your VPS IP. The nginx template includes a Certbot configuration: runcertbot --nginx -d chat.your-domain.comto obtain and automatically renew your Let's Encrypt certificate.Create the first administrator account
Go to
https://chat.your-domain.comand follow the initial setup wizard. Create your administrator account, then import agents via Settings → Agents → Invite agents. Use the email addresses exported in the previous step.Import contacts
In Contacts → Import, upload the CSV file exported from Chatwoot Cloud. Chatwoot recognises the
name,email,phone_numberandidentifiercolumns. Duplicates are detected during import.
Restoring an n8n or Activepieces integration
Once your self-hosted instance is operational, API tokens are available without restriction. Here is how to reconfigure an n8n workflow that queries Chatwoot.
Example — n8n workflow with the self-hosted Chatwoot API
Generate an API token on your instance
In Chatwoot self-hosted, go to Profile Settings → API Access. Copy the generated token. This token does not expire and grants access to all REST routes on your instance.
Configure Chatwoot credentials in n8n
In n8n, add credentials of type Chatwoot API. Fill in:
- Base URL:https://chat.your-domain.com
- Access Token: the token copied in the previous stepValidate the connection — n8n should respond with HTTP 200 and your account profile.
Reconfigure webhook triggers
In Chatwoot self-hosted, go to Settings → Integrations → Webhooks and add the n8n webhook URL (of the form
https://n8n.your-domain.com/webhook/<uuid>). Check the events to listen to:conversation_created,message_created,conversation_status_changed.Trigger a test conversation and verify in n8n that the execution is received.
Adapt Activepieces workflows
Activepieces has a native Chatwoot connector. In the Activepieces dashboard, edit each flow that used Chatwoot Cloud and update the connection: replace
app.chatwoot.comwithchat.your-domain.comand regenerate credentials with the new token. Webhook triggers follow the same procedure as for n8n.
Monitor your instance after migration
After migration, set up a simple HTTP probe on your instance: Chatwoot exposes a health endpoint at https://chat.your-domain.com/auth/sign_in (HTTP 200 expected). A tool like Uptime Kuma or Gatus, also deployable from the ServOrbit Marketplace, can monitor this URL and alert you in case of outage.
Also monitor disk space: attachments and avatars are stored in docker volume chatwoot_storage. For an active team, plan to regularly purge or archive old conversations.
Troubleshooting — common errors after migration
Here are the five most frequent errors when migrating from Chatwoot Cloud to self-hosted, and how to resolve them.
Common errors and solutions
- HTTP 401 on the API: the token was generated on the old Cloud instance. Regenerate a token from Profile → API Access on your self-hosted instance and update all your n8n / Activepieces credentials.
- HTTP 422 Unprocessable Entity when creating a conversation: the target inbox does not yet exist on the self-hosted instance. Recreate inboxes in Settings → Inboxes before importing conversations.
- Webhook not received: check that the n8n or Activepieces webhook URL is reachable from your VPS (
curl -I <webhook-url>). If your n8n is behind a reverse proxy, ensure port 443 is open and the TLS certificate is valid. - SMTP error on startup: if Chatwoot cannot send confirmation emails, check the
SMTP_ADDRESS,SMTP_PORT(587 for STARTTLS, 465 for SSL) andSMTP_AUTHENTICATIONvariables in your.env. Restart the containers after any change. - Interface in English despite
DEFAULT_LOCALE=en: the environment variable applies to the default locale for new accounts. Each agent can change their own language in Profile → Language. To force a locale on all existing accounts, update thelocalecolumn directly in PostgreSQL viadocker compose exec postgres psql -U chatwoot -c "UPDATE users SET locale='en';"— back up the database before any direct modification.
Regaining control of your customer support
The removal of the API and webhooks from the free Chatwoot Cloud plan in July 2026 broke dozens of n8n, Activepieces and CRM integrations without visible notice in the dashboards. Self-hosting is not a degraded alternative: it is the unrestricted version, with root access, full API, free webhooks and data under your control.
The main objection — maintenance — is addressed by the ServOrbit Marketplace Chatwoot template: Docker, nginx and TLS are configured at deployment. Updates come down to a docker compose pull && docker compose up -d. On a VPS sized at 2 vCPU / 4 GB, a self-hosted Chatwoot instance supports several dozen simultaneous agents with latency indistinguishable from the Cloud.
If your n8n or Activepieces integrations call the Chatwoot API, migration is the only sustainable path: the free Cloud plan will not restore API access in its current form.