Helpdesk migration

Migrate from Chatwoot to HubSpot Service Hub

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

Chatwoot logo

Chatwoot

Source

HubSpot Service Hub

Destination

HubSpot Service Hub logo

Compatibility

67%

8 of 12

objects map 1:1 between Chatwoot and HubSpot Service Hub.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Chatwoot to HubSpot Service Hub is a shift from a self-hosted, channel-first support tool to a CRM-native service layer that ties support tickets directly to CRM Contacts and Companies. Chatwoot organizes support around Inboxes (live chat, email, WhatsApp, API) and Conversations; HubSpot uses Tickets attached to Contacts with optional Company associations. We map Chatwoot Conversations to HubSpot Tickets, preserve the full message thread on each Ticket, and resolve the Contact-to-Company relationship so that ticket history is accessible from the CRM record. Chatwoot Custom Attributes on Conversations and Contacts migrate to HubSpot Custom Properties, which requires schema creation before import. Channel configuration (webhook URLs, WhatsApp templates, Facebook page tokens) does not transfer because credentials are platform-bound. We do not migrate Automation Rules, Canned Responses (migratable), SLA Policies, Help Center Articles (HubSpot's pre-built importer is recommended), or Reports as derived data. We deliver a written inventory of every Chatwoot automation and Help Center article requiring rebuild at the destination.

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

HubSpot Service Hub logo

HubSpot Service Hub

What's pulling them in

  • Unified CRM context means every support ticket links directly to the Contact and Company record without a separate integration
  • Free tier provides unlimited support seat access with basic ticketing and a shared inbox for small teams to validate fit before committing
  • Omnichannel routing consolidates email, live chat, Facebook Messenger, WhatsApp, and Instagram DM into one queue
  • Built-in customer success workspace gives health scores and portfolio views that other standalone helpdesks cannot match
  • AI-powered Breeze agent automates common resolutions and surfaces knowledge base articles without agent intervention

Object mapping

How Chatwoot objects map to HubSpot Service Hub

Each row shows how a Chatwoot object lands in HubSpot Service Hub, 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

HubSpot Service Hub

Ticket

1:1
Fully supported

Chatwoot Conversations map directly to HubSpot Tickets. We preserve Conversation status (open, resolved, pending, snoozed) as HubSpot Ticket status values, priority as Ticket priority, assignee as Ticket owner via email resolution, and Labels as Ticket tags. The Conversation created_at timestamp becomes the Ticket create date. Closed-at timestamp from Chatwoot becomes the Ticket close date. Closed-Lost reason from Chatwoot priority or custom fields maps to a HubSpot Ticket custom property.

Chatwoot

Message

maps to

HubSpot Service Hub

Ticket Thread (Engagement records)

1:many
Fully supported

Chatwoot Messages belong to Conversations and carry content, sender_type (agent or customer), attachments, and private notes. We preserve message order by created_at timestamp and reconstruct the full conversation thread as a chronological sequence of Ticket Engagements on the destination Ticket. Agent messages appear as internal notes; customer messages appear as Ticket_thread_message records. Attachments are stored as URLs in Chatwoot and migrate as Attachment records on the Ticket.

Chatwoot

Contact

maps to

HubSpot Service Hub

Contact

1:1
Fully supported

Chatwoot Contacts map directly to HubSpot Contacts. Email is the dedupe key. Standard Chatwoot attributes (name, email, phone, external_id) map to HubSpot Contact properties. Chatwoot custom_attributes on Contacts migrate to HubSpot Custom Properties, which we pre-create in HubSpot with matching types (string, number, dropdown, checkbox) before the Contact import phase begins.

Chatwoot

Company

maps to

HubSpot Service Hub

Company

1:1
Fully supported

If Chatwoot has Company-linked Contacts (available through the API for certain inbox types), we map to HubSpot Company records as well. Chatwoot Company name maps to HubSpot Company name, and domain maps to Website. Company associations to Contacts resolve via the Contact import after Company records are created first to satisfy the lookup.

Chatwoot

Inbox

maps to

HubSpot Service Hub

Channel configuration (manual rebuild)

lossy
Fully supported

Chatwoot Inboxes (website live chat, email, WhatsApp, Facebook, Twitter, API) do not have a direct HubSpot equivalent as standalone objects. We document the full Inbox taxonomy including channel type, associated Agents, and working hours as a written inventory for the customer to reconfigure in HubSpot's Channels settings. Webhook URLs, WhatsApp Business API tokens, and Facebook page tokens are credential-bound and cannot transfer.

Chatwoot

Agent

maps to

HubSpot Service Hub

User

1:1
Fully supported

Chatwoot Agents map to HubSpot Users by email address. Role and availability status from Chatwoot map to HubSpot User permissions and presence. Any Chatwoot Agent without a matching HubSpot User goes to a reconciliation queue for the customer's admin to provision before the Ticket import phase. Passwords cannot transfer and require the HubSpot password-reset flow.

Chatwoot

Team

maps to

HubSpot Service Hub

Team (HubSpot native or Assignment Rule)

1:1
Fully supported

Chatwoot Teams (Business and Enterprise only) group Agents and route Conversations. If the source is on Hacker or Startups, no Teams exist to migrate. Where Teams exist, we create HubSpot Teams or assignment rule groups and map the agent-to-team membership. Round-robin and load-based routing from Chatwoot maps to HubSpot Ticket assignment rules.

Chatwoot

Label

maps to

HubSpot Service Hub

Tag

1:1
Fully supported

Chatwoot Labels are string tags applied to Conversations. We export the full label taxonomy including label name and color metadata where available, and re-apply them as Tags on migrated HubSpot Tickets. Label color and display metadata (Chatwoot's hex color per label) store in a Ticket custom property for the admin to surface in Ticket views if needed.

Chatwoot

Custom Attribute

maps to

HubSpot Service Hub

Custom Property

lossy
Fully supported

Chatwoot Custom Attributes on Conversations and Contacts (text, number, dropdown, checkbox types) require HubSpot Custom Property schema creation before import. We extract the Chatwoot attribute definitions, map types to HubSpot field types (text for string, number for integer/float, select for dropdown, boolean for checkbox), create the properties in HubSpot, then import attribute values as Ticket or Contact custom property values during the respective import phase.

Chatwoot

Canned Response

maps to

HubSpot Service Hub

Snippets (or Knowledge Base article)

1:1
Fully supported

Chatwoot Canned Responses are pre-written reply templates with shortcut codes. They map to HubSpot Snippets as a one-to-one migration of content and shortcut trigger. If the destination plan includes Knowledge Base, the customer may choose to convert Canned Responses into Knowledge Base articles instead; we document both options during scoping.

Chatwoot

Help Center Article

maps to

HubSpot Service Hub

Knowledge Base Article

lossy
Fully supported

Chatwoot Help Center Articles (Startups tier and above) export as markdown with title, body, category, and locale. HubSpot's pre-built Knowledge Base importer (linked from HubSpot's own migration checklist) handles article ingestion more reliably than a custom field import. We recommend using the HubSpot-native importer for Help Center articles and assist with field mapping for any articles stored as custom attributes rather than native Help Center.

Chatwoot

Report

maps to

HubSpot Service Hub

Report (not migrated)

1:1
Fully supported

Reports in Chatwoot (CSAT, conversation metrics, agent performance) are derived data calculated at query time. We do not export report snapshots. The underlying Conversation and Message data that drives reports migrates fully, and the customer's admin rebuilds reports in HubSpot's reporting suite using migrated Ticket and Contact data. We document the full Chatwoot report taxonomy as a rebuild reference.

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

HubSpot Service Hub logo

HubSpot Service Hub gotchas

High

Rate limits throttle large migration API calls

High

Side conversations and Zendesk macros have no HubSpot equivalent

High

HubSpot stores ticket history as fragmented engagement objects

Medium

Custom Objects require Enterprise tier in HubSpot

Medium

Ticket pipeline stage probability values do not export cleanly

Pair-specific challenges

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

    Chatwoot's free Hacker plan retains only 30 days of conversation data before permanent deletion. If the source account is on Hacker and older than 30 days, historical conversations cannot be recovered. We flag this during scoping, recommend an immediate data export if history is business-critical, and note that the customer should upgrade to a paid tier before migration if historical data is needed. The migration scope documents the retention gap and any data loss resulting from the source plan.

  • Inline images, CC in tickets, and groups do not migrate to HubSpot

    HubSpot's own migration checklist explicitly states that inline images, CC in tickets, and groups are not supported in inbound migrations to Service Hub. Chatwoot messages with inline images require re-upload to HubSpot as attachments; ticket CCs do not transfer and must be re-added manually or documented as a rebuild task; and Chatwoot Teams (Business and Enterprise) do not map to HubSpot Groups. We document each of these gaps in the migration inventory and provide a workaround checklist for the customer to address post-migration.

  • Chatwoot channel credentials do not transfer

    Webhook URLs, WhatsApp Business API tokens, Facebook page access tokens, and Twitter API credentials stored in Chatwoot Inbox configurations are platform-bound and cannot be used at HubSpot. We document the full Inbox configuration inventory (channel type, associated email, webhook endpoint, bot settings) as a rebuild guide for the customer's admin. WhatsApp Business API templates require re-approval through Meta's Business Manager, which is a separate process outside migration scope.

  • Custom Attribute schema must exist in HubSpot before import

    Chatwoot Custom Attributes on Conversations and Contacts require HubSpot Custom Property schema to be created before any attribute values can be imported. We create the properties during the pre-migration schema phase, but HubSpot's property creation limits (500 custom properties per object on Professional, 1,000 on Enterprise) must be respected. Attributes with dropdown or multi-select types must have their picklist values pre-defined in HubSpot; we extract the Chatwoot attribute values as the value set and create the corresponding picklist in HubSpot before import.

  • HubSpot onboarding fees apply at Professional and Enterprise

    HubSpot Service Hub Professional carries a $1,500 onboarding fee and Enterprise carries a $3,500 onboarding fee. These are billed by HubSpot directly and are not part of the FlitStack AI migration fee. We confirm the destination HubSpot plan during scoping so the customer accounts for these fees in their budget. Starter and Free Tools plans have no onboarding fees and are the most common destinations for migrations from Chatwoot's lower tiers.

Migration approach

Six steps for a successful Chatwoot to HubSpot Service Hub data migration

  1. Discovery and plan assessment

    We audit the source Chatwoot portal across plan tier (Hacker/Startups/Business/Enterprise), inbox count and channel types, agent count and role assignments, conversation volume and date range, custom attribute definitions and types, label taxonomy, Help Center article count and structure, and whether Automation Rules or SLA Policies are present (Business and Enterprise respectively). We pair this with a HubSpot Service Hub edition recommendation based on the customer's seat count, SLA needs, and whether Breeze AI is required. The discovery output is a written migration scope document covering all objects present and absent from the source.

  2. Schema pre-creation in HubSpot

    We create HubSpot Custom Properties for every Chatwoot Custom Attribute before any data import begins. This includes property type mapping (string to text, integer to number, dropdown to select with value set, checkbox to boolean), assigning properties to the correct HubSpot object (Contact or Ticket), and setting visibility and editability permissions. We also create HubSpot Teams and assignment rules where Chatwoot Teams exist. Schema is deployed into a HubSpot test portal first for validation before production migration.

  3. Demo migration and reconciliation

    We run a demo migration into the customer's HubSpot portal using a representative subset of conversations (typically 50-200 tickets) and contacts. The customer reconciles record counts, spot-checks message thread completeness, verifies custom property values, and validates label application. We correct any mapping errors in this phase. Sign-off on the demo reconciliation is required before production migration begins.

  4. Agent-to-User reconciliation

    We extract every distinct Chatwoot Agent email referenced on Conversations, Messages, and custom attributes and match by email against the HubSpot destination User table. Agents without a matching HubSpot User go to a reconciliation queue. The customer's HubSpot admin provisions any missing Users (active or inactive depending on whether the Chatwoot Agent is still employed). Migration cannot proceed past Agent reconciliation because Ticket owner references require a valid HubSpot User.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Contacts first (with Custom Properties from Chatwoot custom_attributes), then Companies (if present), then Tickets with full message thread reconstruction, then Labels applied to Tickets, then Canned Responses as Snippets, then Help Center articles (documented for the HubSpot-native importer rather than custom-imported). Each phase emits a row-count reconciliation report. We use HubSpot's REST API for record-level imports and bulk import endpoints for high-volume Contact and Ticket batches.

  6. Cutover, validation, and rebuild handoff

    We freeze Chatwoot writes during the cutover window, run a final delta migration of any records modified during the migration, then set HubSpot Service Hub as the system of record. We deliver the Channel Configuration Rebuild Guide (Inbox mapping, webhook setup, WhatsApp re-approval process), the Help Center Import Instructions (using HubSpot's native importer), the Automation Rules Inventory (for Business and Enterprise sources), and the SLA Policy summary. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild Chatwoot automations in HubSpot as part of the migration scope; that is a separate engagement.

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.
HubSpot Service Hub logo

HubSpot Service Hub

Destination

Strengths

  • Unified CRM object model means support context is always linked to sales and marketing data
  • Generous free tier with unlimited tickets and a shared inbox for small teams
  • Omnichannel inbox consolidates email, live chat, and major messaging platforms natively
  • Customer Success Workspace provides portfolio-level health scores without a separate tool
  • AI agent (Breeze) handles Tier-1 resolutions and knowledge base deflection automatically

Weaknesses

  • Per-seat pricing with mandatory onboarding fees inflates year-one cost significantly
  • Ticket history stored as fragmented engagement objects across APIs complicates export and migration
  • Custom Objects locked behind Enterprise tier limits portability for mid-market teams
  • Help desk depth—routing rules, SLA management, advanced reporting—trails dedicated tools like Zendesk
  • Setup and configuration requires real time investment; out-of-box defaults rarely fit existing workflows

Complexity grading

How hard is this migration?

Standard Helpdesk migration. 2 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Chatwoot and HubSpot Service Hub.

  • Object compatibility

    B

    2 of 7 objects need a mapping; the rest are 1:1.

  • 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 HubSpot Service Hub 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 HubSpot Service Hub data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Straightforward migrations under 5,000 conversations, fewer than 20 agents, and no complex custom attribute schema land between three and five weeks. Migrations with 10,000+ conversations, multiple inbox channels, extensive custom attribute definitions across Conversations and Contacts, or Help Center article migration require eight to twelve weeks because of HubSpot schema pre-creation, bulk message threading, and the HubSpot-native Knowledge Base import step. We start with a demo migration in week one and require customer sign-off on demo reconciliation before production migration begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Chatwoot.
Land in HubSpot Service Hub, 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