Fesk
  • Features
  • Pricing
  • FAQ
  • Documentation
  • Get Started Free
  • Sign In
  • Go to App

Getting Started

  • Quick Start
  • Creating Tickets
  • Getting Around
  • Keyboard Shortcuts

Account & Security

  • Account & Security
  • Single Sign-On (SSO)

User Guide

  • The Board
  • List View
  • Working with Tickets
  • Rich-Text Editor
  • Resolution Types
  • Ticket Templates
  • Canned Responses
  • Time Tracking
  • AI Features
  • Ticket Translation
  • Customer Portal
  • Profiles & Account Switching
  • Knowledge Base
  • Saved Views
  • Dashboards
  • Activity Feed
  • Search
  • Notifications
  • Push Notifications
  • Install & Offline Use
  • Collision Detection
  • Reports
  • Team Workload
  • Ticket Linking
  • Bulk Operations
  • Ticket Merging

Admin Guide

  • Workspace Setup
  • User Management
  • Ticket Types & Custom Fields
  • Workflow Statuses
  • Email Integration
  • Email Notification Templates
  • Public Contact Form
  • Automation
  • AI Ticket Workflows
  • Recurring Tickets
  • Import / Export
  • SLA Policies
  • Customer Satisfaction
  • Webhooks
  • Connectors
  • AI Configuration
  • Audit Logs
  • Data & Privacy
  • Billing & Subscription
  • Workspaces

API & Developers

  • API Overview
  • Interactive API Reference

Import / Export

Bulk import tickets from CSV or JSON files, or export your project's tickets as CSV.

Access: Team Lead role or higher. Found in Settings → Import / Export.

Migrating from another help desk

Use this sequence when moving from Zendesk, Freshdesk, Help Scout, or another ticket system. Fesk's file importer creates tickets from CSV or JSON; it does not connect to the old service or restore a complete conversation archive.

1. Prepare an export

Keep an untouched copy of the source export and its attachments. Prepare one row per ticket in a UTF-8 CSV file, or one object per ticket in a JSON array. For a nested API export, extract the ticket fields into that flat structure first.

| Source | Fields to prepare for Fesk | |---|---| | Zendesk | Ticket ID → External ID; subject → Title; chosen ticket text → Description | | Freshdesk | Ticket ID → External ID; subject → Title; chosen ticket text → Description | | Help Scout | Conversation ID → External ID; subject → Title; chosen conversation text → Description |

These are mapping examples, not required source column names. Map the actual columns in your file after upload. Prefix external IDs when combining sources, for example zendesk-123 and freshdesk-123, so unrelated tickets do not look like duplicates.

2. Prepare the destination

Create the destination workspace's statuses and ticket types, and add the agents who should own imported tickets. Map old statuses to the destination's configured labels or slugs and priorities to low, medium, high, or critical. Assignee emails must belong to active project members. Importing a file does not create or invite users; a reporter email only resolves an existing project member, otherwise the importing user is recorded as creator.

3. Trial, verify, then import

Upload a small representative sample, map its columns, and inspect validation errors before executing. Check descriptions, dates, assignments, status and External ID on the created tickets. Save a mapping preset for the remaining files. Files are limited to 5 MB and 10,000 rows; split larger exports, keep external IDs stable, and enable Skip duplicates when rerunning an import. This skips existing tickets rather than updating them.

There is no fixed migration duration. Time a representative sample and scale its processing time to your row count, allowing extra time for export preparation, validation and reconciliation. Up to 500 rows execute synchronously; larger imports queue for background processing. Check Import History for completion before continuing with the next file. Keep the source system available until counts and sample tickets match your expectations, then arrange the inbox cutover separately.

4. Know what is preserved

The file import supports ticket fields, description text, original creation dates and external IDs. It does not import individual replies, internal notes, attachments, audit history, source ticket numbers, user accounts or passwords. Fesk assigns its own ticket numbers. Keep the original archive for conversation history and attachment files; any links placed in a description still require access to their original destination.

For a bad trial or completed batch, use Import History → Roll back. Rollback soft-deletes the tickets created by that import, including tickets edited afterwards; those edits are not preserved as separate tickets. It does not change the source system. Review a trial before allowing the team to work on its imported tickets.

Importing Tickets

Preparing Your File

Fesk accepts CSV and JSON files up to 5 MB and 10,000 rows.

CSV Format

A standard comma-separated file with a header row:

Title,Status,Priority,Assignee,External ID
Fix login bug,open,high,alice@company.com,JIRA-1234
Add dark mode,in_progress,medium,bob@company.com,JIRA-1235
Update docs,open,low,

Rules:

  • First row must be column headers
  • Title is the only required field, everything else is optional
  • Quoted fields supported: "Value with, commas" or multiline "Line 1\nLine 2"
  • Encoding: UTF-8 recommended. UTF-16 and ISO-8859-1 are auto-detected.
  • Delimiter: Comma, semicolon, or tab, detected automatically from the first 5 rows

JSON Format

An array of objects where each object is one ticket:

[
  {
    "title": "Fix login bug",
    "status": "open",
    "priority": "high",
    "assignee_email": "alice@company.com",
    "external_id": "JIRA-1234"
  },
  {
    "title": "Add dark mode",
    "status": "in_progress",
    "priority": "medium"
  }
]

Rules:

  • Must be a JSON array of objects (not a single object or nested structure)
  • Field names become the column headers for mapping

Supported Fields

After upload, you map each source column to a Fesk ticket field:

| Target Field | Accepted Values | Default if Unmapped | |---|---|---| | Title (required) | Any text | - | | Description | Ticket description text | Empty | | Status | Workflow status slug or label (e.g. open, In Progress) | Project's default status | | Priority | low, medium, high, critical | medium | | Ticket Type | Ticket type name (e.g. Bug, Feature Request) | Project's default type | | Assignee (email) | Active project member's email | Unassigned | | Reporter (email) | Any email | Importing user | | Created Date | ISO-8601, US (MM/DD/YYYY), or EU (DD/MM/YYYY) | Now | | External ID | Any text (e.g. Jira key PROJ-123) | Empty | | Source Type | manual, email, api, webhook | manual | | Labels | Comma-separated text | Empty | | Due Date | Any supported date format | Empty | | Skip | - | Column ignored |

Status and Ticket Type must match values configured in your project (Settings → Workflow Statuses / Ticket Types). If a value doesn't match, you'll see an error with a suggestion: "Status 'In Review' not found, did you mean 'In Progress'?"

Assignee must be an active user who is a member of the project. Deactivated or non-member emails produce row errors.

Import Workflow

  1. Upload: Drag-and-drop or browse for your file. Fesk detects format, encoding, and delimiter automatically.
  2. Map Columns: Each source column is paired with a Fesk field via a dropdown. Auto-suggestions appear based on common header names (e.g. "Summary" → Title). Columns you don't need → set to "Skip."
  3. Preview & Import: Review the first 10 rows. Validation runs on all rows. Choose options:
    • Skip invalid rows: rows with errors are skipped instead of blocking the import
    • Skip duplicates: rows whose External ID already exists in the project are skipped (prevents duplicates on re-import)
  4. Execute, Files ≤500 rows import instantly. Larger files queue in the background, check Import History for status.

Mapping Presets

If you import regularly from the same source (e.g. a weekly Jira export), save your column mapping as a preset. Next time, select it from "Load preset" to skip manual mapping.

Rolling Back an Import

Made a mistake? Go to Import History and click Roll back on any completed import. This soft-deletes all tickets created by that import. Tickets modified after import are still rolled back but flagged in the confirmation.

Common Issues

| Problem | Solution | |---|---| | "Status 'In Review' not found" | That status doesn't exist in this project. Check Settings → Workflow Statuses for valid values. | | "No active project member with email" | The email isn't a member of this project, or the user is deactivated. | | Row count exceeds 10,000 | Split your file into smaller parts. | | File larger than 5 MB | Remove unnecessary columns or split the file. | | "An import is already in progress" | Only one import runs per project at a time. Wait for the current one to finish. |


Exporting Tickets

Download your project's tickets as a CSV file.

Columns

Select which fields to include in the export. Defaults: Ticket Number, Title, Status, Priority, Assignee, Created Date. Additional options: Description, External ID, Labels, Updated Date, Reporter.

Filters

Narrow the export to specific tickets. All filters are optional: leave them empty to export all non-deleted tickets in the project.

| Filter | What to Enter | Examples | |---|---|---| | Status | A workflow status slug or label from your project | open, closed, in_progress | | Priority | One of: low, medium, high, critical | high | | Created after | Only include tickets created on or after this date | Use the date picker |

Tips

  • Soft-deleted tickets are excluded automatically
  • The file is UTF-8 encoded and named tickets-export-YYYY-MM-DD.csv
  • To re-import an export into another project, use the Import tab with the exported CSV
  • Large exports (thousands of tickets) stream efficiently, no timeout risk
Fesk

A shared ticket board for support teams.

Product

  • Features
  • Pricing
  • Documentation
  • Status

Company

  • Contact

Resources

  • Help Center
  • FAQ
  • API Docs

Legal

  • Privacy Policy
  • Terms of Service
  • Security
  • GDPR
  • Data Processing Agreement
  • Legal Notice

© 2026 Fesk. All rights reserved.

  • English
  • Deutsch