How to Migrate from Zendesk to Chatwoot
·OSSAlt Team
zendeskchatwootmigrationcustomer supportguide
How to Migrate from Zendesk to Chatwoot
Zendesk starts at $19/agent/month and quickly climbs to $55-115/agent for useful features. A 10-agent team pays $2,280-13,800/year. Chatwoot is the open source alternative — omnichannel support (chat, email, social, WhatsApp) with no per-agent fees.
What Transfers
| Zendesk Feature | Chatwoot Status |
|---|---|
| ⚠️ Ticket history | Manual export/import via API |
| ✅ Contact list | CSV export → import |
| ✅ Live chat widget | Chatwoot widget (similar) |
| ✅ Email support | Email channel |
| ✅ Social channels | Facebook, Twitter, WhatsApp, Telegram |
| ⚠️ Macros/canned responses | Recreate as canned responses |
| ❌ Automations/Triggers | Rebuild in Chatwoot |
| ❌ Knowledge base | Use separate tool (BookStack) |
| ❌ Community forums | Not available |
Step 1: Deploy Chatwoot
# Docker Compose
git clone https://github.com/chatwoot/chatwoot.git
cd chatwoot
cp .env.example .env
# Edit .env:
# FRONTEND_URL=https://support.yourdomain.com
# RAILS_ENV=production
# SECRET_KEY_BASE=$(openssl rand -hex 64)
docker compose up -d
Create your admin account at the setup page.
Step 2: Set Up Channels
Website live chat:
- Settings → Inboxes → Add Inbox
- Select Website
- Configure name, greeting, and widget color
- Copy the widget code into your website:
<script>
window.chatwootSettings = { position: "right", type: "standard" };
(function(d,t) {
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src="https://support.yourdomain.com/packs/js/sdk.js";
g.defer=true; g.async=true;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.chatwootSDK.run({ websiteToken: 'YOUR_TOKEN', baseUrl: 'https://support.yourdomain.com' })
}
})(document,"script");
</script>
Email channel:
- Add inbox → Email
- Configure forwarding from support@yourdomain.com to Chatwoot
- Set SMTP for outgoing email
Social channels:
- WhatsApp → Twilio or 360dialog integration
- Facebook → Connect Facebook Page
- Twitter → Connect Twitter account
- Telegram → Bot token
Step 3: Import Contacts
Export from Zendesk:
- Zendesk → Customers → Export
- Download CSV
Import to Chatwoot: Use the API to import contacts:
curl -X POST https://support.yourdomain.com/api/v1/accounts/1/contacts \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@example.com",
"phone_number": "+1234567890"
}'
Or build a script to batch-import from CSV.
Step 4: Set Up Canned Responses
Recreate Zendesk macros as Chatwoot canned responses:
- Settings → Canned Responses → Add
- Set a shortcode (e.g.,
/greeting,/refund,/escalate) - Write the response template
Example:
- Shortcode:
/greeting - Response: "Hi {{contact.name}}! Thanks for reaching out. How can I help you today?"
Step 5: Configure Automations
Chatwoot automation rules replace Zendesk triggers:
- Settings → Automation → Add Rule
- Set conditions (e.g., "message contains 'refund'")
- Set actions (e.g., "assign to Billing team", "add label 'refund'")
Step 6: Set Up Teams and Agents
- Settings → Teams → Create teams (Sales, Support, Billing)
- Settings → Agents → Invite agents
- Assign agents to teams
- Configure auto-assignment rules
Cost Comparison
| Agents | Zendesk Suite Team | Chatwoot Self-Hosted | Savings |
|---|---|---|---|
| 5 | $275/month | $15/month (VPS) | $3,120/year |
| 10 | $550/month | $30/month | $6,240/year |
| 25 | $1,375/month | $50/month | $15,900/year |
| 50 | $2,750/month | $80/month | $32,040/year |
Migration Timeline
| Week | Task |
|---|---|
| Week 1 | Deploy Chatwoot, set up channels, import contacts |
| Week 2 | Create canned responses, configure automations |
| Week 3 | Train agents, run both platforms for incoming tickets |
| Week 4 | Switch live chat widget, redirect email |
| Month 2 | Full cutover, cancel Zendesk |
Compare customer support tools on OSSAlt — channel support, agent features, and self-hosting options side by side.