Moving the tickets is the easy part. The problems show up in the details: article links that still point to Freshdesk, images that stop loading a week after go-live, embedded videos that vanish, private notes that end up visible to customers. This page covers what actually moves, how Freshdesk maps to Salesforce, and what we check on every project so none of that happens.
Why teams move from Freshdesk to Salesforce
Freshdesk is quick to set up and good at routing tickets. Teams usually move when support stops being a standalone function:
- Support needs to see sales and account data. In Salesforce, a Case sits on the same Account as the Opportunities, contracts and billing records.
- The company already runs on Salesforce. Keeping a separate helpdesk means duplicate contacts, two logins and a sync to maintain.
- Processes need more control. Entitlements, milestones, approval steps and Flow-based automation go further than Freshdesk's rules.
- The help center needs to grow. Experience Cloud gives you a customer portal where people search Knowledge, log cases and track them, all on the same data.
What actually has to move
A Freshdesk migration usually covers three areas. Each has its own difficulty:
| Area | What's in it | Difficulty |
|---|---|---|
| Setup and process | Service Cloud, queues, profiles, SLA policies, automations, canned responses, integrations | Medium. Rebuilt, not copied. |
| Data | Agents, contacts, companies, tickets, conversations, attachments, time entries, satisfaction ratings | Medium to high, depending on history and attachments |
| Knowledge | Solution categories, folders, articles, translations, inline images, embedded videos, links between articles | High. Content needs cleaning, not just copying. |
| Customer portal | Freshdesk support portal replaced with an Experience Cloud help center | Medium. Built new, fed by the migrated Knowledge. |
Freshdesk to Salesforce object mapping: tickets and people
| Freshdesk | Salesforce | Notes |
|---|---|---|
| Agent | User (Service Cloud license) | Needed before tickets load so Case owners resolve. Former agents map to a default owner. |
| Group | Queue | Unassigned tickets land in the matching queue. |
| Company | Account | Company domains help match contacts that have no company set. |
| Contact | Contact | Contacts linked to more than one company use Contacts to Multiple Accounts. |
| Portal user | Contact + Experience Cloud user | Only if customers log in to the new help center. |
| Ticket | Case | Status, priority, source and type need their own value mapping. Freshdesk ticket ID stored on every Case. |
| Public reply | EmailMessage | Keeps the email thread readable on the Case, in order, with the right direction (incoming or outgoing). |
| Private note | Case Comment (not published) or Feed post | Must stay internal. We test this on every run. |
| Parent / child ticket | Parent Case | Loaded in a second pass once all Cases exist. |
| Attachment | File (ContentVersion) | Linked to the Case or to the exact email it came with. |
| Tags | Topics or a text field | Depends on whether agents report on them. |
| Custom ticket fields | Custom Case fields | Freshdesk nested (dependent) dropdowns become dependent picklists. |
| Time entries, satisfaction ratings | Custom objects | Only if you still report on them. |
| Canned responses | Quick Text or email templates | Placeholders need rewriting to Salesforce merge fields. |
| SLA policies, automations | Entitlements, milestones, assignment and escalation rules, Flow | Rebuilt, not migrated. |
Freshdesk to Salesforce object mapping: Solutions to Knowledge
| Freshdesk Solutions | Salesforce Knowledge | Notes |
|---|---|---|
| Solution article | Knowledge article (Knowledge__kav) | Title, body, summary and URL name mapped. Author and dates kept where possible. |
| Category and folder | Data Category Group and Data Categories | Two Freshdesk levels become a category tree. Assignments are loaded as a separate step. |
| Article type (permanent, workaround) | Record Type or picklist | Only if your team uses the distinction. |
| Draft / published status | Draft / published article version | Published articles are loaded as drafts, then published through the API. |
| Folder visibility | Channels (internal, customer, partner, public) and category visibility | Agent-only folders must never land on the public channel. |
| Translations | Translated article versions | Each language has to be enabled in Knowledge settings first. |
| Inline images | Images stored in Salesforce | Downloaded and re-hosted. Freshdesk image links can't be trusted to keep working. |
| Embedded videos | Embedded videos in the rich text field | Video host added to Salesforce Trusted URLs so the embed isn't stripped. |
| Article attachments | Files linked to the article | Kept with the article version. |
| Links to other articles | Links to the new Salesforce articles | Rewritten in a second pass once every article has a Salesforce URL. |
| SEO title and description | Summary and URL name | Keeps search snippets useful in the new help center. |
What we've learned from recent Freshdesk migrations
These are the details that don't show up in a mapping spreadsheet but decide whether the migration is actually usable after go-live.
Links inside articles still point to Freshdesk
Articles link to each other all the time: "see our setup guide", "for billing issues read this". After a plain copy, every one of those links still goes to the old Freshdesk portal.
What we do: load all articles first, build a map of old article ID to new Salesforce URL, then rewrite every internal link in a second pass. Links to articles that weren't migrated get flagged for review instead of silently breaking.
Inline images can stop loading after go-live
Images pasted into Freshdesk articles and ticket replies are stored on Freshdesk's servers. Once the Freshdesk account is closed, those images go with it.
What we do: download every inline image during extraction, store it in Salesforce, and rewrite the image source so nothing depends on Freshdesk afterwards.
Embedded videos get stripped without the right setting
YouTube, Vimeo, Loom and Wistia embeds are iframes. Salesforce removes iframes from rich text unless the video host is trusted.
What we do: list every video host used across your articles, add them to Trusted URLs before loading, and check a sample of articles with video in the sandbox.
Ticket-to-ticket and ticket-to-article links need a second pass
Parent and child tickets, linked tickets, and replies that say "see ticket #4812" or link to a Solution article all reference records that may not exist in Salesforce yet when the ticket loads.
What we do: load Cases first, then set parent links and rewrite article links once everything exists. The original Freshdesk ticket number is stored on every Case, so agents can still search for old references.
Private notes must stay private
Freshdesk mixes public replies and private notes in one conversation list. Map them to the same Salesforce object without the right flag and internal notes can appear to customers in the portal.
What we do: public replies become EmailMessages, private notes become unpublished comments, and we check visibility from a portal user's login before sign-off.
Folder visibility doesn't carry over by itself
Freshdesk folders can be visible to everyone, logged-in users only, agents only, or specific companies. Salesforce controls this through channels and data category visibility.
What we do: map every folder's visibility to a channel and category rule, and confirm no agent-only article is visible on the public channel.
The Freshdesk API sets the pace
Every ticket's conversations and attachments need their own API calls, and Freshdesk limits calls per minute by plan. Ticket lists also return only recent tickets unless you ask for older ones explicitly.
What we do: extract by date range with throttling and retries, so the full history comes across and the run doesn't stall halfway.
How we run a Freshdesk to Salesforce migration
- Discovery and mapping. We pull record counts, custom fields, folder structure and video hosts from your Freshdesk account, and agree the mapping with you in writing.
- Salesforce setup. Service Cloud, queues, custom fields, Knowledge settings, data categories, languages and Trusted URLs are ready before any data moves.
- Sandbox test run. A sample of tickets and articles, including ones with images, videos, attachments, private notes and cross-links, goes into a sandbox for your team to check.
- Full migration. Agents, companies and contacts first, then tickets and conversations, then articles, then the second pass for links.
- Reconciliation. Record counts compared object by object between Freshdesk and Salesforce, plus spot checks on content.
- Delta and cutover. Tickets created or updated since the main run are moved across, email routing switches to Salesforce, and Freshdesk stays read-only for a short period.
We run all of this with our in-house migration tool, built for Freshdesk extraction, transformation and loading into Salesforce. See our Salesforce data migration services for other systems we move, including HubSpot to Salesforce.
Before the first record loads: our checklist
- One Salesforce user with API access for the migration. It can be deactivated afterwards.
- "Set Audit Fields upon Record Creation" enabled, so tickets and articles keep their original created dates.
- Automation paused for the migration user, so old tickets don't send emails to customers or trigger assignment rules.
- Every agent has a Salesforce user, or a default owner is agreed.
- Knowledge enabled, with languages, data categories, channels and Trusted URLs set up.
- Salesforce file storage checked against the total attachment and image size.
- Spam and deleted tickets excluded, and a decision made on how far back history should go.
- Old portal URLs listed, so redirects from Freshdesk article links to the new help center can be set up if you use a custom domain.
Common mistakes we see
Links, images and videos keep pointing at Freshdesk and break once the account closes.
Internal notes end up visible to customers, or the email thread loses its order and direction.
Thousands of old tickets trigger assignment rules and auto-responses to real customers.
Data categories get built around old folders nobody uses, and search in the new help center suffers.
Integrations
If your Freshdesk tickets link to Jira issues, we can bring the Jira issue numbers into a Case field with an extra API call per ticket. Other integrations (chat, telephony, billing) are rebuilt on the Salesforce side as part of the setup work. See our Salesforce integration services.
Frequently asked questions
How long does a Freshdesk to Salesforce migration take?
For around 10,000 tickets and 1,000 articles, the migration itself takes about 3 days once the mapping is agreed and Salesforce is set up. Larger volumes, heavy attachments, or a lot of translated content add time, mostly because of Freshdesk's API limits.
Can we migrate third-party videos embedded in our articles?
Yes. Videos embedded from YouTube, Vimeo, Loom, Wistia and similar hosts come across as embeds in the Salesforce Knowledge article. The video host has to be added to Salesforce's Trusted URLs first, otherwise Salesforce strips the embed. Videos uploaded directly to Freshdesk are downloaded and stored in Salesforce, or moved to your video host if you prefer.
What happens to links between articles?
They're rewritten. We load all articles first, then update every link that points to another Freshdesk article so it points to the new Salesforce article instead. Links to articles you chose not to migrate are flagged for review.
Do linked tickets and parent-child tickets stay connected?
Yes. Parent and child tickets become parent and child Cases, set in a second pass once every Case exists. Every Case also keeps its original Freshdesk ticket number, so references like "see ticket #4812" can still be looked up.
Will inline images still work after we close Freshdesk?
Yes. We download inline images from articles and ticket replies and store them in Salesforce, so nothing depends on Freshdesk once your account is closed.
Is Freshdesk "Solutions" the same as Salesforce Knowledge?
They do the same job. Freshdesk Solutions (categories, folders, articles) maps to Salesforce Knowledge articles organized with Data Categories. The folder structure usually needs some redesign rather than a direct copy.
Will private notes stay private?
Yes. Public replies and private notes are loaded separately, and we check visibility from a customer portal login before sign-off.
Can we keep the original ticket and article dates?
Yes, with the "Set Audit Fields upon Record Creation" permission enabled for the migration user before loading. Without it, every record shows the migration date.
Do we need extra Salesforce licenses for the migration?
Only one Salesforce user with API access, for the duration of the migration. It can be deactivated once we're done.
Do Freshdesk automations and SLAs move across?
No. They're rebuilt in Salesforce as assignment rules, escalation rules, entitlements, milestones and Flows. It's a good moment to drop the ones nobody relies on anymore.
Moving from Freshdesk to Salesforce?
Tell us roughly how many tickets and articles you have, and whether you use embedded videos or translations. We'll send back a mapping outline and a timeline.
Get a migration estimate