Helpdesk migration

Migrate from Chatwoot to Freshdesk

Field-level mapping, validation, and rollback between Chatwoot and Freshdesk. We move data and schema; workflows are rebuilt natively in Freshdesk.

Chatwoot logo

Chatwoot

Source

Freshdesk

Destination

Freshdesk logo

Compatibility

60%

6 of 10

objects map 1:1 between Chatwoot and Freshdesk.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Chatwoot to Freshdesk is a structural translation from Chatwoot's conversation-centric model to Freshdesk's ticket-centric model. Chatwoot organizes support around Inboxes and Conversations with a single message thread; Freshdesk organizes around Tickets with a structured conversation log that separates public replies from internal notes. We preserve message order using created_at timestamps, split Chatwoot's assignee and team model into Freshdesk's agent and group structure, and map Chatwoot Labels to Freshdesk Tags at the ticket level. We flag that Automation Rules, SLA Policies, Help Center Articles, and Teams require Business or Enterprise tier on the source and may not exist in the export; we document their existence and deliver a written reconstruction guide for each. Freshdesk's API access requires Blossom tier or higher, and rate limits cap at 3,000 calls per hour on Blossom, requiring batch chunking during migration. Workflows, canned responses logic, and reporting dashboards do not migrate; we deliver a written inventory for the customer's admin to rebuild in Freshdesk's automation builder.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Chatwoot logo

Chatwoot

What's pushing teams away

  • The Hacker free plan caps at 2 agents, 1 inbox, and 30-day data retention — teams that grow quickly hit these walls and feel forced to upgrade before they are ready.
  • G2 reviewers report limited connectivity issues and technical glitches including portal disconnections that interrupt active support sessions.
  • Captain AI credits model charges $20 per 1,000 extra credits beyond the free monthly allocation, creating unexpected billing surprises for teams that adopt AI features heavily.
  • Feature gating is aggressive: Teams, Automation Rules, Help Center, SSO, Audit Logs, and SLA Policies all require paid tiers, making the real cost much higher than the headline per-agent price.
  • Database schema inconsistencies on stable tags v4.2–v4.4 have caused production installation failures, making version upgrades risky without careful pre-testing.

Choosing

Freshdesk logo

Freshdesk

What's pulling them in

  • Free tier for 1-2 agents with no credit card makes initial evaluation risk-free and appeals to startups and small support teams.
  • Per-agent pricing is predictable and scales cleanly as teams grow from Growth at $15/agent/month to Enterprise at $89/agent/month.
  • Freddy AI Copilot and Email AI Agent bring AI assistance without forcing a full platform switch, appealing to teams already embedded in Freshdesk.
  • Multilingual help desk and customer portal features serve global SMB teams without requiring enterprise-level investment.
  • Collaborators up to 5,000 included in paid plans allow non-agent stakeholders to view tickets without additional licensing cost.

Object mapping

How Chatwoot objects map to Freshdesk

Each row shows how a Chatwoot object lands in Freshdesk, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Chatwoot

Conversation

maps to

Freshdesk

Ticket

1:1
Fully supported

Chatwoot Conversations map to Freshdesk Tickets. We preserve conversation status (open, resolved, pending) as Freshdesk Ticket status values, priority mapping from Chatwoot priority to Freshdesk priority (urgent, high, medium, low), assignee mapping from Chatwoot assignee_id to Freshdesk responder_id, and team-to-group resolution where Chatwoot Teams exist on Business+ source plans. Label taxonomy migrates to Freshdesk Tags on the ticket record. The conversation created_at timestamp becomes Ticket created_at; last_message_at becomes Ticket updated_at. Private notes from Chatwoot map to Freshdesk's internal notes using message_type = 'note' on the conversation_message.

Chatwoot

Contact

maps to

Freshdesk

Contact

1:1
Fully supported

Chatwoot Contact records (name, email, phone, custom_attributes) map directly to Freshdesk Contact. The Contact email field is the dedupe key. Chatwoot custom_attributes that attach to Contacts migrate to Freshdesk custom contact fields, which must be pre-created in the Freshdesk schema before import. Chatwoot Contact avatar URLs migrate as contact avatar URLs in Freshdesk if the destination plan supports avatar uploads.

Chatwoot

Message

maps to

Freshdesk

Conversation

1:many
Fully supported

Chatwoot Messages nest inside Conversations as conversation_message records. We flatten the message array and write each message as a Freshdesk Conversation entry (public reply or private note) using the message_type field (incoming/outgoing = public note; activity = internal note). Message created_at timestamps preserve chronological order in Freshdesk's conversation timeline. Attachments migrate as conversation attachment URLs linked to the Freshdesk conversation record. Chatwoot's sender_type (agent vs customer) maps to Freshdesk's body_text_type (reply vs note) to preserve agent-versus-customer attribution.

Chatwoot

Inbox

maps to

Freshdesk

Product

lossy
Fully supported

Chatwoot Inboxes (Website Live Chat, Email, WhatsApp, Facebook, Twitter, API) map to Freshdesk Products (channel configurations). Channel credentials (webhook URLs, page tokens, WhatsApp business account tokens, API keys) are credentials-bound and do not transfer between platforms. We document the inbox type and name from Chatwoot so the customer's admin can configure the corresponding Freshdesk Product with matching channel type at the destination. The live chat widget code snippet does not migrate; Freshdesk provides its own widget script that replaces Chatwoot's widget on the website.

Chatwoot

Agent

maps to

Freshdesk

Agent

1:1
Fully supported

Chatwoot Agents (user accounts with email, name, role, and availability status) map to Freshdesk Agents. We match by email address during import. Chatwoot role values (agent, administrator) map to Freshdesk Role permissions. Agent passwords do not transfer; Freshdesk sends invitation emails to migrated agents. If a Chatwoot agent account is inactive, we create the Freshdesk agent as inactive pending the customer's decision on provisioning.

Chatwoot

Team

maps to

Freshdesk

Group

1:1
Fully supported

Chatwoot Teams (Business tier and above) map to Freshdesk Groups. Teams group agents and route conversations in Chatwoot; Groups serve the same routing function in Freshdesk. If the source Chatwoot plan is Hacker or Startups, no Teams exist in the export and this mapping step is skipped. We create Freshdesk Groups using the Team names from Chatwoot and map agent memberships to Group membership. Team-level routing rules are documented separately as Freshdesk Group assignment automations for the customer's admin to rebuild.

Chatwoot

Label

maps to

Freshdesk

Tag

1:1
Fully supported

Chatwoot Labels (string tags applied to Conversations) map to Freshdesk Tags at the ticket level. We export the full label taxonomy including label names and color metadata where available. Tags are applied to migrated Tickets to preserve the categorization layer. Tag color display metadata from Chatwoot does not transfer; Freshdesk uses a default tag color palette.

Chatwoot

Custom Attribute

maps to

Freshdesk

Custom Field

lossy
Fully supported

Chatwoot Custom Attributes (text, number, dropdown, checkbox) attached to Conversations or Contacts map to Freshdesk Custom Fields. We pre-create the destination schema in Freshdesk (Admin Settings > Custom Fields) before any record import, matching the Chatwoot attribute name, type, and dropdown options. The destination field type must be explicitly mapped: Chatwoot text becomes Freshdesk text, Chatwoot dropdown becomes Freshdesk dropdown, Chatwoot checkbox becomes Freshdesk checkbox. Schema creation is a prerequisite step; migration cannot begin until all custom attribute targets exist in Freshdesk.

Chatwoot

Canned Response

maps to

Freshdesk

Template

1:1
Fully supported

Chatwoot Canned Responses (pre-written reply templates with shortcut codes) map to Freshdesk Canned Templates. We export the full set including template content and shortcut trigger. Canned Responses with variable placeholders ({conversation.snoozed_until}, {contact.name}) are preserved as-is; the customer's Freshdesk admin verifies template variable compatibility post-migration. Canned Responses require Startups tier or higher on Chatwoot; if the source is on Hacker plan, no canned responses exist to migrate.

Chatwoot

Automation Rule

maps to

Freshdesk

Automation

lossy
Fully supported

Chatwoot Automation Rules (Business+ tier only) trigger on Events and execute Actions such as assign, label, or send email. They map conceptually to Freshdesk Scenario Automations, but the rule logic is platform-specific and cannot transfer as executable code. We export the full rule definitions (trigger, conditions, actions) and deliver a written reconstruction guide mapping each Chatwoot automation to the equivalent Freshdesk Scenario Automation step-by-step. If the source Chatwoot plan is Hacker or Startups, no automation rules exist in the export and this documentation step is skipped.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Chatwoot logo

Chatwoot gotchas

High

Hacker plan 30-day data retention permanently deletes conversations

High

Free plan limits silently block new inboxes and agents

Medium

Captain AI credits bill at $20 per 1,000 beyond the monthly allocation

Medium

Database schema inconsistencies on stable tags v4.2–v4.4

Low

Automation Rules and SLA Policies are tier-gated and cannot export from lower plans

Freshdesk logo

Freshdesk gotchas

High

API access is blocked on the free plan

High

Per-minute rate limits are account-wide and endpoint-specific

Medium

Multi-channel source types do not map 1:1 to all destinations

Medium

Custom objects created in-product cannot be accessed by other apps

Low

Contact import requires at least 10 existing tickets in the account

Pair-specific challenges

  • Chatwoot Hacker plan 30-day data retention permanently deletes history

    Chatwoot's free Hacker plan retains only 30 days of conversation data before permanent deletion. Teams that have been running on Hacker for more than 30 days cannot export historical conversations regardless of the destination platform. We flag this during scoping and recommend either upgrading to a paid Chatwoot tier before export or accepting that conversations older than the retention window are unrecoverable. If the source account is active on Hacker and older than 30 days, we document which conversations are available and scope the migration to what exists, not what the team wishes existed.

  • Freshdesk API access requires Blossom tier or higher

    Freshdesk's Sprout plan (free) does not include API access. The platform requires an API key generated from the profile settings, which is only available on Blossom ($19/agent/month) and above. If the destination Freshdesk account is on Sprout, we cannot write migrated records via API and the customer must upgrade before migration proceeds. We confirm the destination Freshdesk plan during scoping and coordinate API key generation from the profile settings page before any data transfer begins.

  • Freshdesk per-hour API rate limits require batch chunking

    Freshdesk API rate limits are plan-dependent: Blossom and Garden cap at 3,000 calls per hour, Estate and Forest cap at 5,000 calls per hour. Older plan tiers (Blossom, Garden, Estate, Forest) use per-minute limits (100-700 calls/minute). We monitor the X-RateLimit-Remaining and Retry-After headers from the Freshdesk API and implement batch chunking with exponential backoff to stay within limits. Without rate-limit-aware chunking, migrations exceed the hourly ceiling and receive 429 responses that stall the migration. We also warn that invalid requests count toward the limit, so a single malformed record can consume a quota slot without advancing migration progress.

  • Chatwoot Help Center and SLA Policies may not exist on lower-tier sources

    Help Center Articles require Chatwoot Startups tier or higher; SLA Policies require Enterprise Edition. If the source account is on Hacker or Startups plan, these objects do not exist in the data export. We document which objects are absent based on the source plan during scoping, export what exists (Conversations, Contacts, Messages, Labels, Canned Responses), and deliver a written reconstruction plan for Help Center Articles and SLA Policies to be rebuilt manually in Freshdesk (where Help Center requires Garden tier and SLA Policies are available from Blossom). This gap is a plan-gating issue on the source, not a mapping limitation.

Migration approach

Six steps for a successful Chatwoot to Freshdesk data migration

  1. Discovery and plan verification

    We audit the source Chatwoot account across plan tier (Hacker/Startups/Business/Enterprise), data retention window, conversation volume, active inbox count, and which tier-gated objects exist (Teams, Automation Rules, Help Center Articles, SLA Policies). We verify the destination Freshdesk plan and confirm API access is enabled (Blossom+ required). The discovery output is a written migration scope listing every object that will migrate, every object that will not migrate, and the reason for each exclusion. This document serves as the migration contract before any data extraction begins.

  2. Schema pre-creation in Freshdesk

    Before any record import, we pre-create the destination schema in Freshdesk. This includes Freshdesk Groups (mapped from Chatwoot Teams if present), custom contact fields (mapped from Chatwoot contact custom_attributes), custom ticket fields (mapped from Chatwoot conversation custom_attributes), and product channel configurations (inbox types documented from Chatwoot for admin to configure). We cannot import records with custom field values until the custom fields exist in Freshdesk, so schema creation is a hard prerequisite step. We coordinate with the customer's Freshdesk admin to verify field types, dropdown options, and group structure before proceeding.

  3. Data extraction from Chatwoot

    We extract records from Chatwoot via the REST API using the conversations, contacts, messages, agents, teams, labels, and custom_attributes endpoints. For conversations, we paginate using the created_at_after and created_at_before parameters to handle volume in chunks. We validate the export against Chatwoot's internal record counts and flag any records that fail to export due to schema bugs (documented in Chatwoot GitHub issues on v4.2-v4.4). If the source is on Hacker plan and older than 30 days, we document the conversation gap explicitly. We do not extract Captain AI state, report snapshots, or webhook configurations.

  4. Test migration and reconciliation

    We run a full migration into a Freshdesk sandbox or trial account using a subset of the exported data (typically 500-1,000 records per object type). The customer's Freshdesk admin reconciles record counts, spot-checks 25-50 migrated tickets against the Chatwoot source for field accuracy, and verifies that message chronology, tag application, and assignee mapping are correct. We correct any mapping errors identified during test migration before running the production migration. Freshdesk API rate-limit behavior is validated against the destination plan tier during this phase so production chunk sizes are tuned correctly.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Agents (Users), Groups (from Teams), Contacts (with email dedupe key resolved), Conversations as Tickets (with Group assignment and assignee resolved), Messages as Conversation entries (preserving chronological order by created_at), Tags (applied to migrated tickets), Canned Responses as Templates, and Custom Field values on both Contact and Ticket records. Each phase emits a row-count reconciliation report. We apply exponential backoff and batch chunking against the Freshdesk API based on the confirmed plan tier rate limits.

  6. Cutover, validation, and automation reconstruction handoff

    We freeze Chatwoot writes during cutover and run a final delta migration of any records modified during the migration window. We deliver the written automation reconstruction guide for Chatwoot Automation Rules mapped to Freshdesk Scenario Automations, the Help Center reconstruction guide (if applicable), and the SLA Policy configuration guide. We do not rebuild automations, canned response logic, or SLA policies inside the migration scope. We support a three-day post-migration window to resolve data integrity issues; we do not provide ongoing admin support or training as standard scope.

Platform deep dives

Context on both ends of the pair

Chatwoot logo

Chatwoot

Source

Strengths

  • Fully self-hostable on Docker with PostgreSQL and Redis, giving engineering teams complete data residency control.
  • Free tier covers 2 agents with live chat and 500 conversations, providing a genuine no-cost evaluation path.
  • Omni-channel inbox consolidates website chat, email, WhatsApp, Facebook, Twitter, and API into a single agent queue.
  • Clean, intuitive UI means new agents are productive on day one with minimal training overhead.
  • Open-source MIT codebase is publicly auditable; enterprise edition extends Ruby backend without affecting the open core.

Weaknesses

  • Feature gating is pervasive: Teams, automations, Help Center, SSO, audit logs, and SLA all require paid tiers, making the free plan a severe false floor.
  • 30-day data retention on the Hacker plan means conversation history is permanently lost if not migrated before the cutoff.
  • Database schema bugs on stable releases v4.2–v4.4 have caused Docker Compose installation failures in production-like environments.
  • Captain AI credit model adds unpredictable cost: $20 per 1,000 extra credits on top of per-agent subscription fees.
  • Limited connectivity and portal disconnections reported by G2 reviewers affect communication reliability in active support sessions.
Freshdesk logo

Freshdesk

Destination

Strengths

  • Generous free tier with no credit card required for 1-2 agents for 6 months.
  • Per-agent pricing model is transparent and scales linearly with team growth.
  • Freddy AI Copilot integrates assistance directly into the agent workspace without requiring separate tooling.
  • Multilingual help desk and customer portal serve global teams on Pro and Enterprise plans.
  • Shared inbox, threads, and tasks keep ticket context unified across multi-channel conversations.

Weaknesses

  • Freddy AI is a separate paid add-on charged per session, making AI costs unpredictable and hard to budget.
  • Performance issues including delayed loading and duplicate tickets are recurring user complaints during high-volume periods.
  • Customization is more limited than Zendesk, with fewer workflow options and reporting flexibility.
  • Add-ons for chat, advanced routing, and custom reporting are gated behind higher tiers or separate module purchases.
  • API access is completely disabled on the free plan, blocking any programmatic data export or migration tooling.

Complexity grading

How hard is this migration?

Standard Helpdesk migration. All 7 core objects map 1:1 between Chatwoot and Freshdesk.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Chatwoot and Freshdesk.

  • Object compatibility

    A

    All 7 core objects map 1:1 between Chatwoot and Freshdesk.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Chatwoot: Not publicly documented.

  • Data volume sensitivity

    B

    Chatwoot doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Chatwoot to Freshdesk migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Chatwoot to Freshdesk data migrations

Answers to the questions buyers ask most during Chatwoot to Freshdesk migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Chatwoot to Freshdesk migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and three weeks for accounts under 10,000 conversations with no tier-gated objects (Help Center, Teams, Automation Rules) on the source. Migrations with Help Center Articles, large custom attribute schemas on both Conversations and Contacts, or conversation volumes exceeding 50,000 records move to four to six weeks because of article tree reconstruction, schema coordination, and extended batch chunking against Freshdesk API rate limits.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Chatwoot.
Land in Freshdesk, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day