Key takeaways
- A Salesforce case keeps its thread in several objects; they are read separately and merged in date order.
- Email direction decides the author: incoming emails come from the customer, outgoing ones from a teammate.
- Case comments are internal by default; published comments need an explicit decision.
- Salesforce has two attachment models, Attachments and Files, and a migration has to read both.
Object by object
| In Salesforce | In Intercom | Notes |
|---|---|---|
| Account | Company | Keep the Account ID as the company ID, so contacts and cases attach to the right company. |
| Contact | Contact | Matched on email or an external ID, never on name. |
| Case | Conversation or ticket | One per case, created with its original date. |
| EmailMessage | Customer messages and replies | Direction decides the author. |
| CaseComment | Internal notes | Unless a published comment is mapped as a reply on purpose. |
| Attachment, ContentDocument | Attachments on the matching message | Both file models are read. |
| Task | Internal notes, or left in Salesforce | Context, not conversation; never replayed as messages. |
| Queue and owner | Team and teammate assignment | With a default for owners who no longer exist. |
| Record type | Ticket type, or an attribute | Each record type usually reflects a different process. |
Rebuilding the thread
- EmailMessage. The Incoming flag says which way the email went: incoming emails become the customer’s messages, outgoing ones become teammate replies.
- CaseComment. The IsPublished flag says whether customers could see the comment. Unpublished comments become internal notes; decide in writing whether published ones land as notes or replies.
- Dates. Intercom’s create-conversation endpoint accepts the original creation time, recommended for migrating past conversations, and replies accept their own.
- Files. Salesforce stores files as classic Attachments and as Files (ContentDocument, linked to records through ContentDocumentLink). Read both, or files go missing without an error. Intercom’s reply endpoint takes up to 10 files per reply.
Where Salesforce migrations leak
An internal comment written into Intercom as a reply is visible to the customer. Check every kind of entry in a sample run on your own cases before the full migration. With DataGrine, that sample is signed off before the full run, whether you run it self-serve on the platform or the migration team handles it end to end, with 24/7 support either way.
Case fields and custom fields
| Case field | Usual Intercom destination |
|---|---|
| Case number | An attribute, so agents can search old references |
| Subject and description | Ticket title and description, or the opening message |
| Status | Ticket state, value by value, or open or closed |
| Origin, type and reason | List attributes, mapped value by value |
| Custom fields | Conversation, ticket, contact or company attributes |
Picklists map value by value, with a fallback for every value that has no match. Create every attribute in Intercom before the run, with the same list values the mapping uses.