When you migrate from another helpdesk, your old conversations do not come over automatically — they stay in your previous tool. If you want to keep them in Cloud Chat, see below what you need to send us.
What you need to send us
1. Inbox ready. Make sure the migration of your channel is complete and the inbox is created and active in Cloud Chat — we only import the history after that (with no inbox, there is nowhere to import to).
2. The history in JSON format. Export your old conversations in a JSON file with the conversations_data key — a list of tickets. Each ticket has:
-
Ticket dates:
created_at(when it was opened) andupdated_at(last update), in ISO 8601 (e.g.:2024-01-15T10:30:00Z). -
contact:identifier(required, unique and stable per customer) and, optionally,name,email,phone_number(E.164). -
messages: each message withcontent(text),message_type(incoming= customer,outgoing= agent,activity= internal note),created_at(ISO 8601) andprivate(truefor internal notes). -
custom_attributes(recommended): the information you want to keep as a reference. Store the ID of the old ticket inexternal_helpdesk_id(traceability), and include the ticket tags and attributes you want to keep (e.g.:priority,source_queue, tags). These tags come in as reference information/labels on the imported conversation — not as the native tag that filters on the platform. Tell us which ones you want to keep.
Example:
{
"conversations_data": [
{
"contact": { "identifier": "user_6782902", "name": "John Doe", "email": "[email protected]", "phone_number": "+5511988887777" },
"custom_attributes": { "external_helpdesk_id": "ZD-78901", "priority": "high" },
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-16T14:22:00Z",
"messages": [
{ "content": "Meu pedido nĂŁo chegou.", "message_type": "incoming", "created_at": "2024-01-15T10:30:00Z", "private": false },
{ "content": "Oi! Já verifiquei, sai hoje.", "message_type": "outgoing", "created_at": "2024-01-15T10:31:00Z", "private": false },
{ "content": "Cliente VIP, priorizar.", "message_type": "activity", "created_at": "2024-01-15T11:16:00Z", "private": true }
]
}
]
}
3. Agree on the scope with your contact. Align with us the time range (the whole history or a slice, e.g.: the last 12 months), which tags/attributes you want to keep, and whether you want to split it by channel (WhatsApp, Instagram, email…).
4. Send the file. Upload the .json file(s) to the Google Drive folder we share with you — or, if you prefer, send a link to the file (Google Drive, OneDrive, whichever). If you want to keep the channels separate, send one file per channel (e.g.: historico_whatsapp.json).
5. Start with a sample. Before the complete file, send 20–50 tickets in the format — we import them into a validation environment, you check them, and only then do we process everything.
Not imported: images and attachments. The migration covers text (messages, internal notes and metadata). If an attachment was essential, include its link in the message text.
Rules: dates always in ISO 8601 (if you cannot provide them in UTC, let us know the time zone); a truly unique identifier (two customers with the same value become a single one); file in UTF-8.
Cloud Humans does the import for you
Once the file has been sent, the Cloud Humans team runs the import — we import in batches, respecting the platform limits, and we confirm the result with you. You do not need to deal with any API or give us access to your old tool.
Prefer to do it yourself? Here is the step by step
If your team has a developer and prefers to run the import, use the API. Besides the file in the format above, you will need: an API Key (see How to get your API Key), CLOUDCHAT_DOMAIN, ACCOUNT_ID and INBOX_ID.
Endpoint
POST https://{{CLOUDCHAT_DOMAIN}}/api/v1/accounts/{{ACCOUNT_ID}}/inboxes/{{INBOX_ID}}/conversations/import
| Header | Value |
|---|---|
content-type |
application/json |
api_access_token |
Your API token |
The body is the same conversations_data described above.
Limits — each request accepts at most 10,000 tickets or 15 MB. For larger volumes, split it into multiple requests. The contact identifier is unique (dedup). For the custom_attributes to show up formatted in the panel, define them beforehand in Settings → Custom Attributes (scope: Conversation).
Where to find the IDs
CLOUDCHAT_DOMAIN
Part of the URL when you log in to your account:

ACCOUNT_ID
In "Configurações da conta" (Account settings):

API_TOKEN
At https://{{CLOUDCHAT_DOMAIN}}/app/accounts/{{ACCOUNT_ID}}/profile/settings:
INBOX_ID
ID of the inbox that will receive the tickets. You can get it from the URL of the inbox settings tab:


Notes
-
To create new tickets via API (not a historical import): How to create tickets via API in Cloud Chat
-
To import contacts before or together with the ticket import: How to bulk import contacts via API
-
Overview of the available APIs: Master Guide — How to access and operate Cloud Chat data via API