- Migration Guides
- Chatwoot
- Export Your Data
Export Your Data
Part of the Chatwoot migration guide
Learn how to export your customer data, conversation history, and contacts from Chatwoot before migrating to a new platform.
How to Export Your Data from Chatwoot
Chatwoot provides a one-click contact export from the dashboard and a REST API for conversations, messages, canned responses, and labels. Self-hosted users can also back up the PostgreSQL database directly. Here's how to extract everything before switching.
Step 1: Export Contacts via Dashboard
Go to the Contacts screen in your Chatwoot dashboard and click the Export button. Chatwoot generates a CSV file and emails it to your administrator account. Since May 2024 (PR #9347), the export respects any active filters, segments, and labels — so you can export a targeted subset or all contacts at once. The CSV includes name, email, phone number, and any custom attributes you've defined. This feature is available on all plans including the free Hacker tier, but requires admin privileges to trigger.
Step 2: Export Conversations and Messages via API
There is no one-click UI export for conversations. Use the REST API: GET /api/v1/accounts/{account_id}/conversations returns a paginated list of conversations, filterable by status (open, resolved, pending, snoozed), assignee_type, inbox_id, team_id, and labels. For each conversation, call GET /api/v1/accounts/{account_id}/conversations/{id}/messages to retrieve the full message history. There is no single bulk export endpoint — you must iterate conversation by conversation. Script the process with pagination to capture everything.
Step 3: Generate Your API Access Token
To use any of Chatwoot's export APIs, you need a Personal Access Token. Log into Chatwoot, click your avatar in the bottom-left corner, go to Profile Settings, and scroll down to Access Token. Copy the token and use it in your API requests as a header: api_access_token: your_token_here. Admin tokens can access all account data; agent tokens are limited to their assigned conversations. Keep this token secure — it provides full API access to your account.
Step 4: Export Canned Responses, Labels, and Reports
Canned responses (Chatwoot's equivalent of quick replies) can be listed via GET /api/v1/accounts/{account_id}/canned_responses. Labels are available at GET /api/v1/accounts/{account_id}/labels. For reports, navigate to the Reports section in the sidebar — conversation, agent, inbox, label, and team reports are downloadable as CSV on Startups plans and above (the Hacker plan does not include downloadable reports). These reports contain aggregated metrics, not raw conversation data. Note: automation rules, macros, and chatbot configurations are not exportable via the API — document these manually before switching.
Step 5: Self-Hosted Database Backup
If you're running a self-hosted Chatwoot instance, you have full access to the underlying PostgreSQL database. Run pg_dump to create a complete backup of all conversations, contacts, messages, and configurations — significantly easier and more comprehensive than working through the API. Also back up your file upload storage (local filesystem or S3 bucket, depending on your configuration) to preserve any attachments, images, and documents shared in conversations.
Tip: Check your plan's data retention limits before scheduling your migration. Hacker plan data is deleted after 30 days, Startups retains for 1 year, Business for 2 years, and Enterprise for 3 years. If you're on a lower tier, export sooner rather than later — older conversations may already be gone.
Need the full migration guide?
This page covers export your data specifically. For the complete step-by-step migration process:
Read the complete Chatwoot migration guide →Ready to try Converge?
$49/month flat. Up to 15 agents. 14-day free trial, no credit card required.
Start Free Trial