Methodology: built from Freshservice and ServiceNow documentation, pricing pages and newsroom posts, all checked on 7 Oct 2026. No vendor reviewed or paid for this article. We did not run hands-on tests.
A Freshservice to ServiceNow migration pulls tickets, problems, changes, users, knowledge and assets out of Freshservice through its API and exports, then loads them into ServiceNow through Import Sets, Transform Maps and the Table and Attachment APIs. Records and conversations move. Workflows, SLA policies, automations and catalog items are rebuilt in ServiceNow.
If you have outgrown Freshservice and plan to migrate from Freshservice to ServiceNow, this guide maps both data models field by field, with each vendor's documented limits.
Key takeaways
- Freshservice caps a ticket list export at 10,000 tickets with ticket-level fields, and points to the API or the account-wide XML export for full conversation history (Freshservice support, as of 7 Oct 2026).
- Freshservice's List All Tickets call returns only tickets created in the past 30 days by default, and include=conversations returns up to ten (Freshservice API docs, as of 7 Oct 2026).
- Priority scales run in opposite directions: Freshservice Urgent is 4, ServiceNow Critical is 1, and ServiceNow sets priority from impact and urgency (vendor docs, as of 7 Oct 2026).
- The ServiceNow Table API treats sys_ fields as system-generated and not updatable, so original dates need their own fields (ServiceNow docs, as of 7 Oct 2026).
Why teams move from Freshservice to ServiceNow
Most teams move because the service desk has become a platform question. Freshservice puts problem, change, release and major incident management on Pro at $99 per agent per month billed annually, and sandbox and audit logs on Enterprise (Freshservice pricing page, as of 7 Oct 2026). Teams that need them across many departments, with a CMDB at the center, look at ServiceNow.
ServiceNow sells ITSM as Foundation (incident, request, catalog, Asset Management/CMDB), Advanced (adds problem, change, major incident, on-call) and Prime (adds AI Agents for ITSM), by custom quote (ServiceNow ITSM pricing page, as of 7 Oct 2026). On 9 Apr 2026 ServiceNow said AI, data, security and governance "are now in every ServiceNow offering", not a separate purchase (ServiceNow newsroom).
This is not a weak tool losing to a strong one. Both vendors announced Leader placements in the 2026 Gartner Magic Quadrant for IT Service Management Platforms, published 27 Jul 2026 (Freshworks press release, 29 Jul 2026; ServiceNow Gartner page). The move is about scope and CMDB depth, and that shapes what you migrate.
What moves, what's rebuilt, what's at risk
Records and history move, configuration is rebuilt, and anything that depends on time or links is at risk.
| Moves (with mapping) | Rebuilt in ServiceNow | At risk without a plan |
|---|---|---|
| Incidents, problems, changes, conversations | Workflow Automator rules, approvals, business rules | Original created and resolved dates |
| Requesters, agents, agent groups, departments | SLA policies, business hours, escalations | SLA history; running timers never move |
| Public replies and private notes | Service catalog items and forms | Note visibility if the private flag is mapped wrong |
| Attachments | Assignment rules, priority matrix, notifications | Links between incidents, problems, changes and assets |
| Knowledge articles | Portal and knowledge bases | Inline images hosted on the old domain |
| Assets and asset relationships | CI class model and identification rules | Duplicate CIs on reruns |
Freshservice says catalog items cannot be exported from the Service Catalog (Freshservice support, as of 7 Oct 2026). Treat the catalog as a design task.
Freshservice to ServiceNow field mapping
Field mapping decides whether the move works. The platforms disagree on record types, state names and which way priority numbers run.
Record types
In ServiceNow, Incident, Problem and Change Request extend the Task table (ServiceNow table extension docs, as of 7 Oct 2026). Freshservice incident tickets map to Incident; its API notes the ticket type field supports "only type 'incident' as of now", with a separate service request endpoint (Freshservice API docs). Service requests map to ServiceNow request and requested item records, whose catalog items must exist first.
Freshservice change types are Minor, Standard, Major and Emergency (Freshservice support). ServiceNow's are standard, normal and emergency, and a standard change starts from a published template (ServiceNow Change Management API docs, as of 7 Oct 2026). Load closed historical changes as normal or emergency and keep the Freshservice type in a field.
States and statuses
| Freshservice (API value) | ServiceNow incident state | Note |
|---|---|---|
| Open (2) | New or In Progress | Split on whether an agent is assigned |
| Pending (3) | On Hold | Add a reason: Awaiting Caller, Change, Problem or Vendor |
| Resolved (4) | Resolved | Keep resolution notes |
| Closed (5) | Closed | Load closed so no workflow reopens it |
| Custom statuses | In Progress or On Hold | Keep the original in a field |
Values come from the Freshservice API docs and ServiceNow incident state model (as of 7 Oct 2026). Freshservice lets admins toggle the SLA timer on Pending and custom statuses, so check each timer before mapping to On Hold.
Priority, impact and urgency
Freshservice priority runs Low 1 to Urgent 4, and impact and urgency Low 1 to High 3 (Freshservice API docs, as of 7 Oct 2026). ServiceNow runs the other way: impact and urgency are 1 High to 3 Low, sample lookup rules give priority 1 Critical to 4 Low, and the Priority field is read-only by default (ServiceNow docs, as of 7 Oct 2026). Map impact and urgency, let ServiceNow derive priority, and keep the original priority in a field, because Freshservice agents can override the matrix (Freshservice support).
Users, groups and departments
Requesters and agents become ServiceNow users, and agent groups become assignment groups; the Table API examples reference the sys_user and sys_user_group tables (ServiceNow docs). Freshservice requesters carry department_ids and reporting_manager_id (Freshservice API docs), so load departments and managers before users.
Notes: public vs private
Map public replies to Additional comments and private notes to Work notes. ServiceNow says "All users who can view incidents see additional comments" (ServiceNow incident docs, as of 7 Oct 2026). One wrong default exposes every internal note to the caller.
Attachments
Freshservice caps attachments at 40 MB in total per ticket (Freshservice API docs). The ServiceNow Attachment API takes one file per request, with a 1,024 MB default maximum (ServiceNow docs, as of 7 Oct 2026). Size is rarely the issue; request count is.
Links between records
The ServiceNow incident form has Problem, Change Request, Caused by Change and Configuration item fields (ServiceNow docs). Freshservice exposes them through ticket includes such as problem, change, assets and related_tickets (Freshservice API docs). Load problems and changes first, then write references onto incidents.
Assets and CIs
Freshservice asset relationships have default and custom types, each with a normal and inverse direction such as "Depends on" and "Used by" (Freshservice support, as of 7 Oct 2026). ServiceNow stores them in CI Relationship [cmdb_rel_ci] as parent CI, child CI and type (ServiceNow CMDB docs). Map asset types to CI classes and load relationships once both ends exist. ServiceNow's Identification and Reconciliation Engine prevents duplicate CIs, applies to import sets, and can match on source_name and source_native_key (ServiceNow IRE docs, as of 7 Oct 2026). Use the Freshservice asset ID as that key.
Export from Freshservice, import into ServiceNow
Treat ServiceNow data migration as two jobs: a rate-limited extract and a staged load.
Export from Freshservice
The ticket list export gives CSV or Excel, up to 10,000 tickets per export, and the account-wide export emails the entire service desk data as XML to the account admin (Freshservice support, as of 7 Oct 2026). Neither carries links and files in a loadable shape, so the API is the practical route.
The Freshservice API allows 100, 200, 400 or 500 calls per minute on Starter, Growth, Pro and Enterprise, "on an account wide basis", and "even invalid requests will count towards the rate limit" (Freshservice API docs, as of 7 Oct 2026). List All Tickets has a sub-limit of 40, 70, 120 or 140 per minute, pages hold at most 100 objects, and Pro and Enterprise can buy add-ons for 1,000 or 2,000 calls per minute.
On Pro, conversations need at least one call per ticket against the shared 400 per minute, so a 100,000-ticket history needs at least 250 minutes of the whole account's budget before attachments and retries. That is arithmetic from the documented limits, not a benchmark.
The Freshservice Bulk API is documented for partners importing into Freshservice, not exporting, and its limits are marked "to be confirmed post load testing" (Freshservice support, as of 7 Oct 2026). Leave it out of the extract plan.
Import into ServiceNow
Load through Import Sets: rows land in a staging table and a Transform Map moves them to the target. The Import Set API's insertMultiple call stages many rows per request, and "transformation is asynchronous by default" (ServiceNow docs, as of 7 Oct 2026). On coalesce, a match updates, no match inserts, and with several matches only the first is updated.
| Step | Documented limit or behavior | Source (as of 7 Oct 2026) |
|---|---|---|
| Freshservice ticket list export | 10,000 tickets per export | Freshservice support |
| Freshservice API | 100 / 200 / 400 / 500 calls per minute; 100 per page | Freshservice API docs |
| Freshservice ticket view | include=conversations returns up to ten | Freshservice API docs |
| ServiceNow Import Set API | insertMultiple, asynchronous by default | ServiceNow docs |
| ServiceNow staging tables | Contents older than seven days cleared | ServiceNow employee community post |
| ServiceNow Table API | sysparm_limit default 10,000; sys_ fields not updatable | ServiceNow docs |
| ServiceNow Attachment API | One file per request; 1,024 MB default | ServiceNow docs |
Read loaded records back with Table API sysparm_offset paging, and keep your own load logs, because staging rows do not last (ServiceNow employee community post, modified 2 Feb 2025).
Plan the migration in phases
- Discover. Count records by type, workspace and year. List custom statuses, fields, asset types and relationship types. Note your Freshservice plan, because it sets the API budget.
- Map. Build the mapping tables above. Decide where original IDs, dates, priority and change type live. Agree the history scope.
- Test migration. Load a sample covering every status, priority, record type and attachment type into sub-production. Check comment visibility with a requester login.
- Cutover with delta sync. Run the full load before the freeze window. At cutover, freeze Freshservice, pull records changed since the full load with the updated_since filter (Freshservice API docs), and load the delta. Make go/no-go on reconciliation results.
- Reconcile. Compare counts per table, state and year, then sample records end to end: conversations, attachments, links and CI relationships.
- Hypercare. Watch assignment, notifications, SLAs and reports. Keep Freshservice read-only until sign-off.
Pair-specific failure points
- The 30-day default. Freshservice says that by default "only tickets that have been created within the past 30 days will be returned" (Freshservice API docs, as of 7 Oct 2026). An extract without updated_since looks complete in testing and misses most of the history.
- Ten conversations. Long tickets fetched with include=conversations arrive truncated. Use GET /api/v2/tickets/[id]/conversations.
- Inverted priority. Copying priority 4 straight across turns an Urgent ticket into a Low incident.
- Original dates. sys_ fields are system-generated, so store Freshservice dates in their own fields.
- SLA history. ServiceNow SLA repair recreates SLA records "from the start" using the Task's history (ServiceNow SLA docs, as of 7 Oct 2026). Imported records carry little of it, so load Freshservice SLA outcomes as data.
- Weak coalesce keys. Coalescing on a non-unique field such as name updates only the first match.
Freshservice to ServiceNow migration checklist
- Record your Freshservice plan, its API limit and every integration sharing it.
- Count tickets, problems, changes, assets and articles by year and workspace.
- List custom statuses and their SLA timer settings.
- Decide the history scope and where archived records live.
- Build the ServiceNow change model and catalog items before loading changes and requests.
- Map impact and urgency, and keep the original priority in a field.
- Map public replies to Additional comments and private notes to Work notes.
- Create fields for Freshservice ID, created date, resolved date and change type.
- Load departments and managers, then users, then records.
- Map asset types to CI classes and set IRE identification on the Freshservice asset ID.
- Choose a unique coalesce key for every Transform Map.
- Plan the delta with updated_since and agree the freeze window.
- Reconcile before go/no-go and keep Freshservice read-only through hypercare.
FAQ
Methodology
We read Freshservice and ServiceNow documentation, API references, support articles, pricing pages and newsroom posts on 7 Oct 2026. Every limit is quoted from the vendor that owns the platform. The API-budget figure is our arithmetic from Freshservice's published limits, not a measured benchmark. We did not run hands-on tests.
Disclosure: MigrateX, the publisher of this article, runs ITSM data migrations, including between platforms named here. No vendor reviewed or paid for this article.