Skip to content
DataGrine home

Importing support tickets from CSV, Excel, JSON or XML into a helpdesk

Helpdesk CSV importers are built for people, not tickets. Zendesk’s data importer takes users and organizations, Freshdesk’s CSV import takes contacts and companies, and Intercom’s takes users and leads; none of the vendor articles we checked offers a CSV import for tickets. Ticket history from a spreadsheet, a database dump or a JSON or XML export goes in through each helpdesk’s API, in order: companies, then people, then tickets with their replies, each carrying its old ID.

By the DataGrine team · Updated · 3 min read

Key takeaways

  • Use the CSV importer for contacts and companies if it fits. Use the API for tickets.
  • A flat CSV with one row per ticket often loses the thread. Check where replies, authors and internal notes live first.
  • Keep every legacy ID: it links replies to tickets and tickets to people, and makes re-runs safe.
  • Validate with counts per status and a read-through of your longest threads, not just a total.

What each helpdesk’s CSV import covers

DestinationCSV import coversTickets go in through
ZendeskUsers and organizationsThe Ticket Import API, which keeps original dates and does not run triggers on tickets that are not closed
FreshdeskContacts and companiesThe Tickets API, which has no creation date on create, so the date goes in a custom field
IntercomUsers or leads; not companiesThe API, following Intercom’s Import Tickets guide
Help ScoutA built-in import tool for the sources it listsThe Inbox API, with imported set to true so no emails go out

Data preparation checklist

  • IDs: a unique, stable ID for every company, person, ticket and reply, kept as text so leading zeros survive.
  • Relationships: every ticket points to a requester ID, every reply to a ticket ID and an author ID.
  • Timestamps: ISO 8601 with a time zone, or Unix time. A date without a zone is a guess.
  • Authors and visibility: a flag for agent or customer, and for public or private, on every reply. An internal note imported as a public reply is visible to the customer.
  • Statuses and dropdowns: the full list of values in use, each mapped to a destination value.
  • Attachments: files on disk or URLs reachable at import time, with the reply they belong to.
  • Encoding: UTF-8 throughout.

Load order and validation

  1. 1.Companies first, with your legacy ID stored on each.
  2. 2.People next, matched on email or an external ID so nobody is created twice.
  3. 3.Agents and teams created on the destination, then mapped.
  4. 4.Tickets, each looked up by legacy requester ID, with the legacy ticket ID stored in a field.
  5. 5.Replies and notes in date order, with attachments on the reply they came with.
  6. 6.Count tickets per status on both sides, and read your longest threads top to bottom.

Moving from an in-house or legacy tool?

DataGrine works from a written mapping, a sample you sign off and an itemised reconciliation report. Run it self-serve on the platform or have the migration team handle it end to end, with 24/7 support either way. Tell us what your export looks like.

Questions

Asked about this, often.

Can I import tickets into Zendesk from a CSV file?

Not with Zendesk’s data importer, which handles users and organizations. Tickets are imported through the Ticket Import API, which keeps original dates and comment history.

Can I import tickets into Freshdesk from CSV?

Freshdesk’s documented CSV import covers contacts and companies. Tickets are created through the API, and because the Create a Ticket API has no creation date parameter, the original date is kept in a custom field.

Can Intercom import tickets from a spreadsheet?

Intercom’s CSV import takes users or leads, not tickets or companies. Its developer guide shows how to import tickets through the API.

What is the most common mistake in a CSV ticket import?

Losing the thread. A one-row-per-ticket export often has no replies, or puts every reply into one cell with no author or date. Check that before mapping anything else.

Let’s move your data forward.

Tell us where you are moving from and to. Run it yourself on the DataGrine platform or let our migration team handle it end to end, with 24/7 support either way.

  • A written mapping document before anything moves
  • A sample migration you review before the live run
  • Delta sync at cut-over and rollback per run
  • 24/7 premium support until you sign off