Skip to main content
Helpdesk Imports

Update options, teammates, fields or the company match

Changes the choices of an import. Only what you send changes: one teammate, one field, or one option at a time is fine, and changes sent at the same time are merged one after another (with many at once, a change that keeps losing answers 409 revision_conflict: send it again). Many fields fit in one call.

PATCH
/v2/helpdesk_imports/{id}
  • options (before the pull): what to import (streams), conversationsSince, openConversations (close / keep_open), snoozedConversations, syncContactsToCrm, importAttachments.
  • mapping (before the pull): source agent → teammate, source team → team (or new), Freshdesk product → brand. Ids of the source come from GET /v2/helpdesk_imports/{id}/teammates.
  • fieldMapping (once the pull started, until the start; the field list is read then): source custom field → attribute ({ "kind": "attribute", "attributeId": "…" }), a new attribute ({ "kind": "new", "name": "Plan" }), a Featurebase field (builtin), or { "kind": "skip" }; null = back to the suggestion. Keys come from GET /v2/helpdesk_imports/{id}/fields. Example, to skip two contact fields: { "fieldMapping": { "contact": { "cf_a": { "kind": "skip" }, "cf_b": { "kind": "skip" } } } }.
  • companyMatch (until the start): how imported companies find yours.
Authorizationstringheaderrequired

API key as Bearer token. Use: Authorization: Bearer sk_...

idstringrequired

The import id (from POST /v2/helpdesk_imports or GET /v2/helpdesk_imports).

Pattern: ^[a-f0-9]{24}$
Example: 6720b1c2d3e4f5a6b7c8d9e0
Featurebase-Versionenum<string>header

API version for this request. Defaults to your organization's configured API version if not specified.

Available options: 2026-08-19.orbit, 2026-01-01.nova, 2025-12-12.clover
Example: 2026-08-19.orbit

Body

application/json
companyMatchobject
fieldMappingobject

Custom fields, by the key from GET /v2/helpdesk_imports/{id}/fields. Only the fields you send change; a field without a choice gets the suggestion. Can change until the import starts adding data.

mappingobject

Teammates, teams and brands (before the pull only). Only the entries you send change; the others keep their choice.

optionsobject

Only the options you send change.

Response

application/json

Success

accountobjectrequired
companyMatchobject

How imported companies find yours (sources with matchesCompanies only).

continuesobject | nullrequired

Set for "Import new changes" (POST /v2/helpdesk_imports/{id}/sync).

createdAtstringrequired
createdByobjectrequired
expiresAtstring | nullrequired

While the import waits for you (draft, ready, paused, needs_reconnect): when it is cancelled if nothing happens.

Example: 2026-11-02T12:00:00.000Z
fieldsobject | nullrequired

The field mapping. Null for a draft (the fields are known after the pull).

finishedAtstring | nullrequired

When the import ended.

Example: 2026-11-02T12:00:00.000Z
idstringrequired

The import id.

Example: 6720b1c2d3e4f5a6b7c8d9e0
lastErrorobject | nullrequired

The last problem.

mappingobjectrequired

The saved teammate, team and brand choices (see GET /v2/helpdesk_imports/{id}/teammates for what each one maps to).

nextStepobjectrequired

What to do next.

objectenum<string>required

Object type identifier

Available options: helpdesk_import
Example: helpdesk_import
optionsobjectrequired
phaseenum<string>required

pull: reads the source into a private staging area; nothing is added to your workspace. write: adds the data.

Available options: pull, write
Example: pull
pullobject[]required

Progress of reading the source, per stream.

sourcestringrequired

The tool it imports from.

Example: intercom
sourceNamestringrequired
Example: Intercom
startedAtstring | nullrequired

When the pull started.

Example: 2026-11-02T12:00:00.000Z
startedByobject | nullrequired
statusenum<string>required

draft: connected, not started. running: reading the source (phase: pull) or adding the data (phase: write). ready: everything was read; map the fields, then start. paused. needs_reconnect: the source refused the key. completed, cancelled, failed.

Available options: draft, running, paused, needs_reconnect, ready, completed, cancelled, failed
Example: ready
teammatesToInviteobjectrequired

Invite them (in the dashboard) and their imported messages become their own when they join.

totalsobject | nullrequired

What the pull found. Null until the pull ends.

waitobject | nullrequired

Why a running import waits (for example the source's rate limit), and until when. It continues by itself.

writeobject[]required

Progress of adding the data, per object.