Helpdesk migration
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
Source
HubSpot Service Hub
Destination
Compatibility
8 of 12
objects map 1:1 between Chatwoot and HubSpot Service Hub.
Complexity
BStandard
Timeline
3-5 weeks
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Source platform
Chatwoot platform overview
Scorecard, SWOT, gotchas, and pricing for Chatwoot.
Destination platform
HubSpot Service Hub platform overview
Scorecard, SWOT, gotchas, and pricing for HubSpot Service Hub.
Data migration guide
The complete HubSpot Service Hub migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
HubSpot Service Hub migration checklist
Pre- and post-cutover tasks for moving onto HubSpot Service Hub.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
HubSpot Service Hub
Ticket
1:1Chatwoot 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
HubSpot Service Hub
Ticket Thread (Engagement records)
1:manyChatwoot 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
HubSpot Service Hub
Contact
1:1Chatwoot 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
HubSpot Service Hub
Company
1:1If 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
HubSpot Service Hub
Channel configuration (manual rebuild)
lossyChatwoot 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
HubSpot Service Hub
User
1:1Chatwoot 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
HubSpot Service Hub
Team (HubSpot native or Assignment Rule)
1:1Chatwoot 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
HubSpot Service Hub
Tag
1:1Chatwoot 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
HubSpot Service Hub
Custom Property
lossyChatwoot 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
HubSpot Service Hub
Snippets (or Knowledge Base article)
1:1Chatwoot 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
HubSpot Service Hub
Knowledge Base Article
lossyChatwoot 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
HubSpot Service Hub
Report (not migrated)
1:1Reports 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.
| Chatwoot | HubSpot Service Hub | Compatibility | |
|---|---|---|---|
| Conversation | Ticket1:1 | Fully supported | |
| Message | Ticket Thread (Engagement records)1:many | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Inbox | Channel configuration (manual rebuild)lossy | Fully supported | |
| Agent | User1:1 | Fully supported | |
| Team | Team (HubSpot native or Assignment Rule)1:1 | Fully supported | |
| Label | Tag1:1 | Fully supported | |
| Custom Attribute | Custom Propertylossy | Fully supported | |
| Canned Response | Snippets (or Knowledge Base article)1:1 | Fully supported | |
| Help Center Article | Knowledge Base Articlelossy | Fully supported | |
| Report | Report (not migrated)1:1 | Fully supported |
Gotchas + challenges
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 gotchas
Hacker plan 30-day data retention permanently deletes conversations
Free plan limits silently block new inboxes and agents
Captain AI credits bill at $20 per 1,000 beyond the monthly allocation
Database schema inconsistencies on stable tags v4.2–v4.4
Automation Rules and SLA Policies are tier-gated and cannot export from lower plans
HubSpot Service Hub gotchas
Rate limits throttle large migration API calls
Side conversations and Zendesk macros have no HubSpot equivalent
HubSpot stores ticket history as fragmented engagement objects
Custom Objects require Enterprise tier in HubSpot
Ticket pipeline stage probability values do not export cleanly
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
Chatwoot
Source
Strengths
Weaknesses
HubSpot Service Hub
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 2 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Chatwoot and HubSpot Service Hub.
Object compatibility
2 of 7 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
Chatwoot: Not publicly documented.
Data volume sensitivity
Chatwoot doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Chatwoot to HubSpot Service Hub migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Chatwoot
Other ways to arrive at HubSpot Service Hub
Same-Helpdesk migrations
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.