# Zendesk and Intercom Migration: Move Conversations and Attachments Safely

Move from Zendesk to Intercom with Intercom's native importer when its scope fits your history; move from Intercom to Zendesk through a mapped export and Zendesk's Ticket Import API or a migration provider. The acceptance test is whether agents can find the right customer, read the complete conversation and open its attachments after the move. Keep one reply owner during cutover and reconcile the final changes before retiring the old inbox.

Canonical URL: https://www.martechdevs.com/blog/zendesk-intercom-migration

By [Jafrin Akter Alo](https://www.martechdevs.com/authors/jafrin-akter-alo)

Data Engineer and Co-founder at [Martechdevs](https://www.martechdevs.com) and [Growth and Analytics Partners](https://www.growthandanalytics.com)

[LinkedIn](https://linkedin.com/in/jafrinalo)

Last updated: 2026-11-04

Next step: [Intercom and Zendesk Integration: One Owner for Every Handoff](https://www.martechdevs.com/blog/intercom-zendesk-integration)

## Which migration route fits Zendesk and Intercom?

Choose the route by the records and exceptions you must preserve. Intercom provides a Zendesk importer; Zendesk directs historical ticket imports to its API or migration partners. A live connector serves ongoing handoffs. Use a migration route when the destination must become the durable home of the support history.

| Your requirement | Starting route | Evidence to request before committing |
| --- | --- | --- |
| Standard Zendesk history moving into Intercom | Intercom's native importer | Confirm workspace access and all importer limits |
| Selected history, unusual fields or strict replay controls | A scoped API migration | A repeatable mapping and exception report |
| Intercom conversations moving into Zendesk | Export plus Ticket Import API or migration provider | Preserved authors, privacy, chronology and files |
| Keep Zendesk and add Fin or a shared handoff | An operational integration | One reply owner and a recovery path |

The route choices follow [Intercom's historical migration options](https://www.intercom.com/help/en/articles/9396032-historical-data-migration-to-intercom) and [Zendesk's import guidance](https://support.zendesk.com/hc/en-us/articles/6696005837082-How-can-I-migrate-information-from-another-platform-into-Zendesk). Use our [Intercom and Zendesk integration guide](https://www.martechdevs.com/blog/intercom-zendesk-integration) for coexistence and our [platform comparison](https://www.martechdevs.com/blog/intercom-vs-zendesk) for the replacement decision.

At Martechdevs, we scope [support system migrations and automation](https://www.martechdevs.com/customer-support-automation) around the working queue, historical evidence and the people who own exceptions. Moving a ticket count alone does not demonstrate that the destination is usable.

## What moves, and what needs a separate workstream?

Treat support records, configuration and public knowledge as separate deliverables. A conversation can move while its routing rule, saved reply or article link still points to the old system. Agree the destination representation for each object before comparing migration tools, and record which historical detail will remain in an archive.

This is the mapping sheet we recommend completing with support operations:

| Object | Required mapping | Acceptance evidence |
| --- | --- | --- |
| People and organizations | Stable customer and account keys, membership, owner | One destination identity for each intended person and account |
| Tickets or conversations | Source ID, status, author, timestamps, requester | Search by source ID and reconstruct the discussion |
| Replies and private notes | Message order and visibility | A customer cannot see an internal note |
| Attachments and inline images | Binary file, parent message, filename, type | File opens from the correct destination message |
| Macros and workflows | Text, placeholders, actions and conditions | Applying a saved reply changes only the intended fields |
| Help centre | Article body, language, links and access | Public and restricted readers get the correct result |
| Reporting | Historical baseline and new definitions | Teams can explain the break between old and new metrics |

Keep source identifiers in an explicit migration field or ledger. Email alone is a weak identity key when an address changes or multiple people share an inbox. A ledger can map one source organization to its destination without asking an agent to infer the match from a company name.

For macros, export an inventory, remove obsolete entries, replace platform-specific placeholders and run each approved action on a test ticket. Treat routing and notification rules the same way. A successful record transfer should never be interpreted as proof that those rules were recreated.

## How do you migrate Zendesk to Intercom with the native importer?

Use the native importer only after confirming its whole-dataset scope fits. Intercom documents fewer than 150,000 tickets, no selected-ticket or failed-record-only import, and exclusions for tags, side conversations and call recordings. Re-running updates organizations and customers but deletes and reimports previously imported tickets. [Intercom importer limits](https://www.intercom.com/help/en/articles/9307237-import-your-zendesk-ticket-user-and-organization-data).

1. Confirm the feature is enabled for the Intercom workspace and that the connecting Zendesk user is an administrator.
2. Create the destination teams, teammates and customer-facing and back-office ticket types.
3. Open Settings > Data > Imports & exports > Import from Zendesk.
4. Review organization, customer, field and teammate mappings. Record each skipped field and fallback owner.
5. Disable Ticket Updates under Settings > Channels > Email > Email Settings > Notifications before the import, following Intercom's notification warning.
6. Import, inspect the history and compare the result against the agreed mapping.

Intercom supports notes, attachments and inline images, with up to ten attachments and ten inline images. Multiselect and lookup fields need a compatible representation. Changes made in Zendesk after the import snapshot are excluded. These are [native-import behaviours](https://www.intercom.com/help/en/articles/9307237-import-your-zendesk-ticket-user-and-organization-data), so include them in the cutover decision.

If a material exception falls outside that route, stop before a full import. Do not use a production rerun as an experimental repair: its replacement behaviour can invalidate destination IDs, links or work already done there. Agree a supported custom route or retain the exception in an approved archive.

## How do you transfer Intercom conversations to Zendesk?

Export the conversation content, map contacts and organizations, then import each history through Zendesk's Ticket Import API. Keep the source conversation ID in your migration ledger and preserve message privacy and authorship. Reporting CSVs are insufficient for reconstructing a discussion because they contain metadata rather than the full conversation text. [Intercom export methods](https://www.intercom.com/help/en/articles/2046229-export-your-conversations-data).

The operational order should be:

1. Define whether one Intercom conversation becomes one Zendesk ticket, and how linked conversations or tickets are represented.
2. Export users, companies, conversations and their required parts through the selected supported route. Pin the API version used by any custom script.
3. Create or match destination organizations, end users and agents. Save the resulting IDs before creating tickets.
4. Download approved attachments, preserve their source-message association and upload them to the destination.
5. Import tickets with the mapped requester, comments, authors, visibility and historical timestamps.
6. Read back each destination record and reconcile it against the source ledger before marking it complete.

[Zendesk's Ticket Import API](https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_import/) accepts historical ticket and comment timestamps. For non-closed imported tickets, triggers do not run during import; subsequent updates can run them. Imported tickets do not carry reliable native Zendesk SLA and ticket metrics. Tag that cohort and exclude it from operational comparisons that would otherwise mix old and new definitions.

A crucial extraction check is long discussions. Intercom's [conversation retrieval endpoint](https://developers.intercom.com/docs/references/rest-api/api.intercom.io/conversations/retrieveconversation) limits returned conversation parts to 500, returning the most recent parts when the limit is exceeded. The documented endpoint also exposes time filters. Prove full coverage for unusually long histories with the chosen version and export method; a successful response is insufficient evidence of completeness.

Keep a separate exception queue for missing authors, deleted users, restricted files and unsupported content. Give each exception an owner and a disposition: repaired, intentionally archived or excluded with approval. A migration that silently drops those records cannot pass reconciliation.

## How do you keep ticket attachments intact?

Move the file bytes and their message associations, then test access from the destination. A working URL in an export may still depend on the source account, its permissions or an expiring link. Store an attachment manifest so you can prove which files were downloaded, uploaded and attached to the intended comment.

Use these fields in your migration ledger:

```csv
source_system,source_ticket_id,source_message_id,source_attachment_id,filename,byte_count,sha256,destination_ticket_id,destination_attachment_id,status
intercom,example-101,example-part-8,example-file-4,invoice.pdf,24576,example-digest,example-901,example-file-44,verified
```

This is an illustrative schema, with fictional identifiers and a placeholder digest. The key is the source attachment ID together with its parent record, not the filename. Two unrelated tickets can both contain `invoice.pdf`.

[Zendesk's attachment API](https://developer.zendesk.com/api-reference/ticketing/tickets/ticket-attachments/) uploads a file first and returns an upload token; the comment creation consumes that token. Tokens expire after 60 minutes. Upload near the corresponding import, preserve the correct file extension and MIME type, and never forward Zendesk credentials automatically to an external attachment host.

Compare file size and, where you control both retrieved files, a cryptographic digest. Then open representative files through the destination interface with the intended reader's permissions. Digest equality proves byte equality; it does not prove that an internal document remains private or that an inline image renders in the right message.

For every failed download, distinguish unavailable source content from a transient request failure. Retry only the latter with controlled backoff. Keep an explicit exception for a source file that was already deleted. Repeatedly creating the same destination ticket will not recover a missing source binary.

## Should you use a third-party migration tool?

Use a migration provider when it can demonstrate the exact direction, object mapping and delta behaviour your move requires. Evaluate a sample from your own difficult records, then put the accepted scope in the order. Record count, attachments, language variants and custom work can change the quote and the result.

[Help Desk Migration's Intercom-to-Zendesk service](https://help-desk-migration.com/intercom-to-zendesk-migration/) advertises transfer of conversation history, contacts, companies, attachments and knowledge content, plus a 20-record demo and delta migration. Treat that as a shortlist candidate. Require the demo to show your actual private notes, long conversations and attachment types before accepting a broad completeness promise.

Its [automated options](https://help-desk-migration.com/automated-options/) include controls such as selected demo records, inline images as attachments and article cross-link updates. Availability depends on the migration route. A converted inline image may be preserved as a file while changing how the original message reads; decide whether that result is acceptable.

Compare a provider's price against the full custom alternative: engineering time, reconciliation work, error handling, secure storage, repeated runs and source-account overlap. Ask who owns the scripts and mapping after completion, how exceptions are delivered, and when the provider deletes temporary data. Do not select solely on the headline transfer duration.

## How should you move the help centre and saved replies?

Choose where knowledge will be edited after cutover, then migrate article content and links as a separate release. A sync that continues reading Zendesk leaves Zendesk as the source of truth. A one-time import is the appropriate starting point when the team will maintain the material inside Intercom.

Intercom distinguishes [importing public Zendesk articles](https://www.intercom.com/help/en/articles/56643-import-public-articles-from-zendesk) from [syncing Zendesk articles](https://www.intercom.com/help/en/articles/6717804-sync-public-articles-with-zendesk). In the opposite direction, Zendesk points article imports to its [Help Center API](https://support.zendesk.com/hc/en-us/articles/6696005837082-How-can-I-migrate-information-from-another-platform-into-Zendesk). Validate restricted content and translated variants separately from public English articles.

Build an old-to-new article URL map. Check links in macros, automated messages, product help menus and high-traffic search landing pages. Where you control the old URLs, apply suitable redirects and test the destination. Where you cannot redirect a vendor-owned URL, replace the links you do control and document the remaining exposure.

Have an agent use the ten most common saved replies on test records. Check personalization, links, field updates and whether the action sends a public reply or saves an internal note. That short operational test catches failures that an article-count comparison cannot.

## What must pass before the support cutover?

Cut over only when the agreed record population reconciles, privacy checks pass, outstanding exceptions are accepted and one queue owns new replies. The final migration must also account for changes made during the initial transfer. Set a precise source cutoff and distinguish newly created records from updates to existing ones.

The diagram shows a release decision with a repair loop. It applies to both directions; the selected importer determines how the test and final reconciliation can be performed.

![Choose a supported native or custom migration, validate histories, files and privacy, repair failures, then reconcile the final changes before switching reply ownership.](https://www.martechdevs.com/assets/blog/zendesk-intercom-migration.svg)

### Choose the migration route

The shared validation step connects the route choice with the release decision.

![Select the native importer only when it meets the scope; otherwise use a scoped provider or API route. Both lead to validation.](https://www.martechdevs.com/assets/blog/zendesk-intercom-migration-choose-route.svg)

### Repair before switching the reply owner

The shared validation step connects the route choice with the release decision.

![Validate histories, files and privacy; repair failures and repeat checks before final reconciliation and cutover.](https://www.martechdevs.com/assets/blog/zendesk-intercom-migration-validate-cutover.svg)

Diagram connections:

- Define objects and reply owner to Native route fits all requirements. 
- Native route fits all requirements to Prepare supported native import: Yes. 
- Native route fits all requirements to Scope provider or API migration: No. 
- Prepare supported native import to Validate histories files and privacy. 
- Scope provider or API migration to Validate histories files and privacy. 
- Validate histories files and privacy to Acceptance checks pass. 
- Acceptance checks pass to Repair mappings and exceptions: No. 
- Repair mappings and exceptions to Validate histories files and privacy. 
- Acceptance checks pass to Reconcile final changes and switch owner: Yes. 
- Reconcile final changes and switch owner to Monitor new queue and retain rollback archive

Use a stratified test set. Include an open escalation, a solved case, a private note, a deleted author, a large attachment, an inline image, a long thread, an unusual field value and a multilingual article. A random set of twenty short email tickets will not expose failures in those cases.

A hypothetical reconciliation illustrates the release rule. Suppose the approved scope contains 12,000 conversations. You observe 11,982 verified destination records, 12 failures and six records intentionally excluded by the owner. The accounting balances: 11,982 + 12 + 6 = 12,000. The migration still fails its acceptance gate while the twelve failures remain unresolved. A matching total is necessary, but status and content matter too.

For a custom importer, keep a stable mapping from source ID to destination ID and reserve work before creation. After a timeout, reconcile the previous attempt before retrying a create. Never assume an external-ID field automatically enforces uniqueness. The same principle is covered in our [support handoff design](https://www.martechdevs.com/blog/intercom-zendesk-integration).

## Checklist

- [ ] Each in-scope record is verified, failed with an owner, or explicitly excluded.
- [ ] Public replies and private notes retain the intended visibility.
- [ ] Attachments open from the right conversation after source access is removed from the test user.
- [ ] New messages reach the destination once and are assigned to a working team.
- [ ] The final delta includes changed records as well as new ones.
- [ ] Historical metrics are labelled separately from destination operational reports.
- [ ] The rollback owner knows where replies made after cutover would be recovered.
- [ ] API credentials and temporary exports have a documented retirement date.

## How do you budget the move and decide when to retire the source?

Budget migration work, overlapping subscriptions and operational repair separately. Retire the source when the retention plan is approved and the destination has passed a real support cycle, including an escalation and an attachment request. A cheaper destination can still produce an expensive switch if historical access is lost too early.

For an illustrative business case, assume a $4,000 migration project, $1,200 of subscription overlap and $800 of internal validation effort. The one-time total is $6,000. If the accepted replacement saves $300 per month after all required add-ons, simple payback is twenty months. These are planning assumptions, not vendor prices or a Martechdevs quotation.

Use the actual negotiated totals from our [Intercom pricing](https://www.martechdevs.com/blog/intercom-pricing) and [Zendesk pricing](https://www.martechdevs.com/blog/zendesk-pricing) guides as questions for your order forms. Include AI usage, specialist access, knowledge products and storage obligations. A migration decision should also price the support problems it is meant to solve, such as duplicated replies or slow access to customer context.

If the mapping or final-delta plan is the uncertain part, bring the object inventory and a redacted sample to [Martechdevs' support automation team](https://www.martechdevs.com/customer-support-automation#offer). An implementation scope can then name the records, acceptance checks and cutover responsibilities before work begins.

## Frequently asked questions

### Can I use an Intercom reporting CSV as a complete migration backup?

An Intercom reporting CSV is not a complete conversation backup because it contains reporting metadata rather than every message and attachment. Choose a supported content export or API route, then compare it with representative source discussions. Keep files, private notes, authors and associations in the acceptance criteria, and retain a readable archive for exceptions.

### Will historical Zendesk response-time reports survive an import?

Historical response-time reporting needs a separate baseline because Zendesk's imported tickets do not support complete native ticket metrics and SLA calculations. Preserve the source reports and their definitions, tag imported records, and start a clearly identified destination operating cohort. Comparing historical imported tickets with newly handled tickets can otherwise create misleading performance changes.

### Can I keep Zendesk while using Fin?

You can use Fin with Zendesk through its [dedicated integration](https://www.intercom.com/integrations/connectors/zendesk) without moving the whole human support operation to Intercom. That choice needs its own channel, ownership and billing review. Use the integration guide linked above when the goal is AI assistance or a controlled handoff; use a migration plan when historical ownership must move.

### Should every old closed ticket move into the active queue?

Move the history that agents need to serve customers and meet approved retention obligations. An accessible archive can be suitable for some closed records if search, permissions and attachment access are proven. Define the selection before choosing the importer, because a whole-dataset native route may not support the filtered scope you want.

### How long should both systems remain available?

Keep both systems available for the period needed to validate the new queue, reconcile late changes and fulfil the agreed historical-access plan. Define concrete exit checks instead of choosing an arbitrary number of days. Include source subscription renewal dates in the plan so a missed validation step does not force an unexpected full renewal.

## Sources

1. [Intercom: historical data migration](https://www.intercom.com/help/en/articles/9396032-historical-data-migration-to-intercom)

2. [Zendesk: importing information from another platform](https://support.zendesk.com/hc/en-us/articles/6696005837082-How-can-I-migrate-information-from-another-platform-into-Zendesk)

3. [Intercom: native Zendesk ticket, user and organization importer](https://www.intercom.com/help/en/articles/9307237-import-your-zendesk-ticket-user-and-organization-data)

4. [Intercom: conversation export methods](https://www.intercom.com/help/en/articles/2046229-export-your-conversations-data)

5. [Zendesk: Ticket Import API](https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_import/)

6. [Intercom: retrieve a conversation](https://developers.intercom.com/docs/references/rest-api/api.intercom.io/conversations/retrieveconversation)

7. [Zendesk: ticket attachments API](https://developer.zendesk.com/api-reference/ticketing/tickets/ticket-attachments/)

8. [Help Desk Migration: Intercom to Zendesk](https://help-desk-migration.com/intercom-to-zendesk-migration/)

9. [Help Desk Migration: automated migration options](https://help-desk-migration.com/automated-options/)

10. [Intercom: import public articles from Zendesk](https://www.intercom.com/help/en/articles/56643-import-public-articles-from-zendesk)

11. [Intercom: sync public articles with Zendesk](https://www.intercom.com/help/en/articles/6717804-sync-public-articles-with-zendesk)


12. [Intercom: Fin with Zendesk](https://www.intercom.com/integrations/connectors/zendesk)
