Skip to main content
واجهة API والبيانات / استيراد البيانات

Importing from Another Helpdesk

Escalated includes a built-in import system that lets you migrate tickets, contacts, agents, and conversation history from your existing helpdesk. A separate adapter plugin is required for each source platform.

Supported platforms

Platform Plugin slug
Zendesk escalated-plugin-import-zendesk
Freshdesk escalated-plugin-import-freshdesk
Help Scout escalated-plugin-import-helpscout
Intercom escalated-plugin-import-intercom

How it works

The import system is split into two layers:

  • Core framework — built into Escalated. Manages import jobs, tracks progress, writes records to the database, and handles retries. You do not need to configure this separately.
  • Adapter plugins — one per source platform. Each adapter knows how to authenticate with the source API, page through its data, and normalize records into the format the core framework expects.

The adapter registers itself via the import.adapters filter hook, and the core framework discovers it automatically at runtime.

General setup

  1. Install the adapter plugin for your source platform (see the platform-specific guide for the plugin slug and any platform prerequisites).
  2. In the Escalated admin panel, navigate to Admin → Import.
  3. Select your source platform from the list of available adapters.
  4. Enter the required credentials and click Test connection.
  5. Review the default field mappings and adjust as needed.
  6. Click Start import to begin.

The import runs in the background. You can monitor progress from the Admin → Import page and resume any interrupted job from the same screen.

Importing from Zendesk

Prerequisites

  • A Zendesk account with Admin role
  • A Zendesk API token (see below)
  • Your Zendesk subdomain (the part before .zendesk.com, e.g. acme)

Generating a Zendesk API token

  1. In Zendesk, go to Admin Center → Apps and Integrations → APIs → Zendesk API.
  2. Under Token Access, enable API token access if it is not already on.
  3. Click Add API token, give it a description, and copy the token.

Note: The token is only shown once. Store it securely before closing the dialog.

Using the import wizard

  1. In Escalated, go to Admin → Import and select Zendesk.
  2. Enter your subdomain, admin email address, and API token, then click Test connection.
  3. Review the field mappings. Defaults are pre-filled (see table below). Adjust any mappings you want to change.
  4. Click Start import. The wizard moves to a progress view showing each entity type as it is processed.

The import fetches entity types in dependency order: agents → tags → custom fields → departments → contacts → tickets → replies → attachments.

Using the CLI

php artisan escalated:import zendesk

You will be prompted for your subdomain, admin email, and API token. Pass --no-interaction to read credentials from environment variables instead:

ESCALATED_IMPORT_ZENDESK_SUBDOMAIN=acme \
ESCALATED_IMPORT_ZENDESK_EMAIL=admin@example.com \
ESCALATED_IMPORT_ZENDESK_TOKEN=your-api-token \
php artisan escalated:import zendesk --no-interaction

Default field mappings

Zendesk field Escalated field
subject title
status status
priority priority
assignee_id assigned_to
requester_id requester
group_id department
tags tags

Status mapping

Zendesk status Escalated status
new open
open in_progress
pending waiting_on_customer
hold waiting_on_agent
solved resolved
closed closed

Priority mapping

Zendesk priority Escalated priority
low low
normal medium
high high
urgent urgent

Resuming a failed import

If an import job is interrupted (server restart, timeout, etc.), you can resume it from Admin → Import by clicking Resume next to the failed job. The adapter uses cursor-based pagination, so it picks up from the last successfully processed batch without re-importing records.

From the CLI, pass the job ID:

php artisan escalated:import zendesk --resume=<job-id>

Troubleshooting

"Authentication failed" on test connection Confirm that your email is entered in the form admin@example.com (not admin@example.com/token) and that Token Access is enabled in Zendesk Admin Center.

Tickets are missing Zendesk's incremental export API only returns tickets updated since epoch 0. Deleted tickets are excluded. Archived tickets in Zendesk's long-term storage may not appear in the incremental export.

Rate limit errors during import The adapter backs off automatically on HTTP 429 responses, respecting the Retry-After header. If you see persistent throttling, contact Zendesk support to request a temporary rate limit increase.

Custom field values are not imported Only non-system custom fields are imported. System fields (subject, description, status, priority, group, assignee) are mapped directly and are not surfaced as custom fields.