Ferrywell documentation
Ferrywell imports past tickets into Zendesk from the export of your previous help desk or shared inbox, with every comment, its original dates and authors, internal notes and attachments. It runs inside Zendesk, in your browser, as the signed-in admin. Support: hello@greatwork.company (reply within one business day).
Before you start
- Ferrywell needs a Zendesk admin: Zendesk's ticket import is admin-only.
- Create in Zendesk the agents, groups, brands, ticket forms and custom fields your old tickets use. Ferrywell matches to them; it creates only end users (requesters and people who wrote comments).
- Export from your old tool. Ferrywell reads:
- CSV or TSV: a tickets file and a comments file linked by the ticket id, one file with a row per message, or a tickets file alone (the description is the only message).
- JSON or NDJSON: tickets with their messages inside each one (
comments,conversations,messages,threads,notes,_embedded.threads), as most help desk exports write them. - Email archives:
.mboxmailboxes and.emlfiles. Threads become tickets, the first sender is the requester, quoted history is cut from replies, attached files come along. - Attachments: the files themselves, in the zip or picked with the data. A comment's attachments column names them, by path inside the zip or by file name. They are attached where your Zendesk allows uploads from apps (checked at the start of each import); otherwise each file is named in its comment.
- Up to 1 GB per import, 50 MB per attachment.
1. Pick the export
Open Ferrywell from the left navigation bar. Pick files or a zip, pick a folder, or drop them on the page. Ferrywell lists the tables it found and how many attachment files came with them.
2. Match the columns
- Tickets are in: the table with one row per ticket (or per message).
- Comments: messages inside each ticket (JSON, email), one row per message grouped by the original ticket id, a separate comments file linked by the ticket id, or none.
- Ticket: original id, subject, description, status, priority, type, tags, requester email and name, assignee (email or name), group, brand, form, created, updated, solved and due dates. The sample on the right shows the first value of each column.
- Each comment: text, HTML, author email and name, public or internal, sent at, attachment names. A column named "Private", "Internal" or "Note" reads true as an internal note.
- Custom ticket fields: add a row per field. Drop-downs match by option name or tag value, multi-selects by comma-separated names, checkboxes by yes/no or true/false, dates by any date.
- Status, priority and type values: every value in your export, with its count, and the Zendesk value it becomes. Blank means the default (for status) or none.
- Options: default status, whether dates like 03/04/2024 are month or day first, the time zone of dates without one, tags for every ticket, a requester for rows that have none, a text field for the original ticket id, whether the original id becomes the external id, whether comments that do not say are internal, and whether closed tickets go straight to the archive (for very large imports).
3. Preview
Preview import checks every row and changes nothing in Zendesk:
- Errors (the row is left out): nothing to import, no requester, a date in the future or before 1970.
- Warnings (imported, with something left out): an agent, group, brand or form that is not in Zendesk, a drop-down value that is not an option, a date it cannot read, an attachment not in the files, a message over 64 KB (shortened), a due date on a ticket that is not a task.
- People: how many requesters and authors already exist (matched by email) and how many new end users will be created. New users are verified, so Zendesk emails nobody.
- Click a subject to read its conversation as it will be imported. Untick rows you do not want.
4. Import
Name the import and click Import. Ferrywell creates end users, uploads attachments, and sends tickets in batches of up to 100 through Zendesk's ticket import, pacing itself and waiting out rate limits. Keep the tab open. Stop after this batch stops cleanly.
Every ticket keeps its created, updated and solved dates and every comment its author and time.
Each ticket gets the tag ferrywell_<import id>. Zendesk runs no triggers and sends no
notifications for imported tickets, and keeps no reply-time metrics or SLAs for them: filter on
the tag to leave them out of reports.
If the original id becomes the external id (the default when an id column is mapped), you can
find a ticket by its old id later. Otherwise the external id is ferrywell-<import id>-<row>.
5. History: resume, retry, undo
- Resume: for an import that stopped or whose tab closed. Pick the same files; Ferrywell checks they match, keeps your mapping, skips rows that already have a ticket, and first checks any batch it never got an answer for, so nothing is created twice.
- Retry failed: sends again only the rows that failed (after you fix the cause, for example by creating a missing agent).
- Undo: deletes every ticket the import created, found by the ids in the history and by the import's tag. Deleted tickets stay in Admin Center's Deleted tickets for 30 days, where an admin can restore them. Tick Also delete permanently (or use Delete permanently later) to remove them for good. Users Ferrywell created stay.
The history lives in Ferrywell's own app setting in your Zendesk: ids, counts, the column mapping and failure reasons, no ticket content.
Plans
Standard $299 once (up to 5,000 imported tickets), Plus $599 once (up to 25,000), Unlimited $999 once (no limit): a one-time payment per Zendesk account, no trial. Undone tickets give their allowance back. If an import would go past your plan, Ferrywell says how many tickets are left and which plan covers it; change plans in Admin Center > Apps and integrations > Zendesk Support apps.
Not imported
Satisfaction ratings, side conversations, ticket audits and field change history, call recordings that are not attachments, CCs and followers, and updates to tickets that already exist in Zendesk (Ferrywell creates new tickets only).
Common questions
- "Only admins can use Ferrywell": sign in as a Zendesk admin.
- Dates are a month off: switch the date order to day first, or fix the time zone.
- Agent replies show as the customer: map the comment author email column; agents are matched by their Zendesk email address or a unique name.
- Attachments appear as "[Attachments not imported: ...]": the file was not in what you picked, or Zendesk refused the upload from the app (the result says which). Write to us.
- A row says the assignee is not in the group: add the agent to the group in Zendesk, or leave the group or assignee column out.