Helpdesk migration

Migrate from Frappe Helpdesk to Zendesk

Field-level mapping, validation, and rollback between Frappe Helpdesk and Zendesk. We move data and schema; workflows are rebuilt natively in Zendesk.

Frappe Helpdesk logo

Frappe Helpdesk

Source

Zendesk

Destination

Zendesk logo

Compatibility

92%

11 of 12

objects map 1:1 between Frappe Helpdesk and Zendesk.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Frappe Helpdesk stores every object as a PostgreSQL DocType, which means we extract at the database level rather than through a documented REST API. That gives us full access to SLA deadline fields, assignment rule conditions, and custom field definitions, but it also means private file attachments require an authenticated session to re-download. We migrate HD Tickets directly to Zendesk Tickets, HD Customer contacts to Zendesk End Users and Contacts, Teams to Zendesk Groups, and Conversations to Ticket Comments in chronological order. SLA Policies and Assignment Rules are migrated as written configuration records so the customer's admin can rebuild their equivalents in Zendesk Triggers and Macros. Knowledge Base Articles from Frappe categories become Zendesk Help Center Sections and Articles with a restructured hierarchy. We do not migrate workflows, server scripts, or Frappe custom apps as code; these are delivered as written inventories for manual rebuild.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Frappe Helpdesk logo

Frappe Helpdesk

What's pushing teams away

  • The agent count and ticket volume that Frappe Helpdesk was designed for caps out around mid-market; large enterprise teams hit scaling limits in self-hosted deployments.
  • Custom field rendering requires manual template configuration in HD Ticket Template, which frustrates non-technical admins who expect standard form behavior.
  • Rate limiting on the Frappe Framework is based on cumulative request time rather than request count, making API-heavy automations unpredictable without load testing.
  • Workflow resets after minor version upgrades, forcing admins to reconfigure assignment rules and triggers after routine system maintenance.
  • Limited third-party integrations outside the Frappe ecosystem means teams using Salesforce or Zendesk on other functions end up maintaining parallel tooling.

Choosing

Zendesk logo

Zendesk

What's pulling them in

  • Mature omnichannel routing across email, chat, phone, messaging, and social — one unified inbox for support teams regardless of size or complexity.
  • Deep automation with Triggers, Automations, and SLA Policies lets high-volume teams enforce consistent workflows without manual ticket handling.
  • Large ecosystem of third-party integrations and a public app marketplace reduce friction for teams already using Salesforce, Jira, or Slack.
  • Industry-leading brand recognition and trust signal — many enterprise buyers default to Zendesk as a known quantity in vendor procurement cycles.
  • Generous documentation library and community mean onboarding teams can self-configure without needing a services engagement to get started.

Object mapping

How Frappe Helpdesk objects map to Zendesk

Each row shows how a Frappe Helpdesk object lands in Zendesk, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Frappe Helpdesk

HD Ticket

maps to

Zendesk

Ticket

1:1
Fully supported

HD Ticket maps directly to Zendesk Ticket. We preserve ticket status, priority, type, creation and modification timestamps, SLA deadline fields (response_by and resolution_by), and description HTML. The Frappe HD Ticket Template configuration does not transfer; we flag every HD Ticket custom field during discovery and create equivalent Zendesk custom ticket fields in Admin before import. Ticket ID from Frappe is stored in a custom field frappe_ticket_id__c for cross-reference.

Frappe Helpdesk

HD Customer

maps to

Zendesk

End User / Contact

1:1
Fully supported

HD Customer records map to Zendesk End Users (requesters) with name, email, phone, and organization link preserved. If the Frappe instance links HD Customer to a Contact DocType outside Helpdesk, we migrate that record as a Zendesk Contact and link it to the End User organization. Custom fields on HD Customer require field-level mapping during scoping; Zendesk custom fields are created before contact import so values land on day one.

Frappe Helpdesk

Communication (Conversations)

maps to

Zendesk

Ticket Comments

1:1
Fully supported

Every HD Ticket has linked Communication records representing agent replies and customer messages. These include timestamp, author, and message body. We preserve chronological order and thread structure by inserting comments in creation-date sequence. The Frappe author reference resolves to the Zendesk agent or end user by email match. Internal notes (communication via is Internal) map to Zendesk private comments; external replies map to public comments.

Frappe Helpdesk

Team

maps to

Zendesk

Group

1:1
Fully supported

Frappe Helpdesk Teams define agent groupings and routing scope. We preserve team structure, team-level SLA assignments, and email inbox routing rules. Zendesk Groups serve the same organizational purpose. Team names migrate as Group names, and agent-to-team membership resolves via the Agent-to-Group assignment during user provisioning. Email inbox routing rules become Zendesk email routing configurations post-migration.

Frappe Helpdesk

Agent

maps to

Zendesk

Agent (User)

1:1
Fully supported

Agent records include user accounts, roles, and permissions. We match agents by email against the Zendesk destination User table. Any Frappe agent without a matching Zendesk user goes to a reconciliation queue for the customer's admin to provision before record import. Agent workload history and assignment counts migrate as activity metadata in a custom field if the customer requires it for reporting continuity.

Frappe Helpdesk

SLA Policy

maps to

Zendesk

SLA Policy

1:1
Fully supported

SLA Policies define response and resolution time windows by priority or ticket type. We migrate policy definitions as Zendesk SLA Policies created in Admin before ticket import. Frappe's response_by and resolution_by timestamps are preserved as custom fields on the Zendesk Ticket so historical SLA performance is visible without recalculation. Zendesk SLA Policies link via schedules; we create the matching schedule during policy migration.

Frappe Helpdesk

Assignment Rule

maps to

Zendesk

Triggers / Macros (manual rebuild)

1:1
Fully supported

Assignment Rules automate ticket routing based on conditions (subject keywords, customer tier, ticket type). These are configuration records stored in Frappe Desk. We do not migrate them as code because Frappe Assignment Rules use DocType conditions that have no direct Zendesk Trigger equivalent. We deliver a written inventory of every active Assignment Rule with its trigger conditions, target team, and recommended Zendesk Trigger or Macro configuration. The customer's admin rebuilds these post-migration.

Frappe Helpdesk

Knowledge Base Article

maps to

Zendesk

Help Center Article

lossy
Fully supported

KB Articles are DocTypes with category assignments and article content in HTML. We migrate articles and category hierarchy into Zendesk Help Center Categories and Sections. Frappe KB categories map to Zendesk Sections; articles map to Zendesk Articles with HTML body preserved. Zendesk's Section nesting depth (up to five levels) accommodates most Frappe category hierarchies. Article view counts and feedback ratings are not always transferable and are documented separately for manual re-entry if required.

Frappe Helpdesk

Canned Response

maps to

Zendesk

Macro

1:1
Fully supported

Pre-written response templates are stored as DocTypes with subject and content fields. They migrate as Zendesk Macros with subject as Macro title and content as Macro body. Dynamic variable substitution syntax in Frappe templates (such as ticket.customer_name or {{ticket.subject}}) does not map directly; we document the variable mapping and advise the customer's admin to update Macro placeholders post-import.

Frappe Helpdesk

Tag

maps to

Zendesk

Tag

1:1
Fully supported

Tags on HD Tickets are stored as Tag entries linked to the ticket. We map tag names to Zendesk Tags on the corresponding Ticket record. Zendesk Tags are flat and managed in Admin; there is no tag hierarchy in Zendesk Support. Tags that represent ticket categories in Frappe may need to be converted to Zendesk custom fields or Topics depending on the customer's reporting needs.

Frappe Helpdesk

Attachment

maps to

Zendesk

Ticket Attachment

1:1
Fully supported

Ticket and communication attachments are stored in Frappe's private files directory or as File records linked to the DocType. We migrate file URLs and re-download attachments where the file is publicly accessible or we have a valid session token. Private files requiring authentication are flagged during the inventory phase; we advise the customer to temporarily make files public or export them manually alongside the structured data export. Zendesk's attachment size limit for API imports is 50 MB per file.

Frappe Helpdesk

Customer Portal Settings

maps to

Zendesk

Support Settings (manual)

1:1
Mapping required

Portal branding, allowed ticket creation types, and visibility settings are Frappe configuration records rather than transactional data. We do not migrate these as configuration artifacts. We deliver a written inventory of current portal settings (portal name, branding, allowed channels, ticket type restrictions, SLA visibility) so the customer's Zendesk admin can configure Zendesk's equivalent Support settings (brand, channels, request form configuration) post-migration.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Frappe Helpdesk logo

Frappe Helpdesk gotchas

Medium

HD Ticket custom fields require HD Ticket Template configuration

Medium

Workflow resets after Frappe version upgrades

High

Errors when Helpdesk is installed on existing ERPNext + HR sites

Low

Rate limiting is time-based, not request-count based

Low

Private file attachments require authentication to re-download

Zendesk logo

Zendesk gotchas

High

Data export requires API scripting on non-Enterprise plans

Medium

Automations cap at 500 active rules and 1,000 tickets per hour

Medium

Help Center has no native export feature

High

Custom Objects and full data export are Enterprise-only

Pair-specific challenges

  • HD Ticket Template custom fields must be manually added in Zendesk Admin

    Custom fields created on HD Ticket do not automatically render in the Frappe agent form view without explicit HD Ticket Template configuration. This same class of issue exists in reverse during migration: Frappe custom field definitions are portable as data, but Zendesk requires each custom field to be created in Admin before import so that values land on the correct field. We flag all HD Ticket custom fields during discovery, create equivalent Zendesk custom ticket fields before import begins, and store the original Frappe field name in a custom field note for reconciliation. If a custom field is missed during scoping, its data migrates to the Zendesk Ticket description or a fallback custom field and requires a correction pass.

  • Private Frappe file attachments require authentication to re-download

    Frappe stores some attachments as private files that require an authenticated session or API token to access. During migration, we cannot re-download private files without the Frappe site's session cookie or API access token. We inventory all attachments during the discovery phase and flag those requiring authentication. The customer must either temporarily make these files public in Frappe, provide a valid API token for the extraction phase, or export them manually alongside the structured data export. Files exceeding Zendesk's 50 MB attachment limit require a separate delivery method (file share or cloud storage link).

  • Frappe Helpdesk workflows and server scripts do not migrate to Zendesk

    Frappe Helpdesk workflows, assignment rules, and server scripts are DocTypes stored in the Frappe Desk database. They use Frappe-specific condition builders and action types that have no direct Zendesk Trigger or Macro equivalent. We do not migrate automation as code. We deliver a written inventory of every active workflow and server script with its trigger conditions, target actions, and recommended Zendesk Trigger or Macro configuration. SLA Policy definitions migrate cleanly; assignment automation and custom server-side logic require manual rebuild. Post-migration, Zendesk Triggers, Macros, and Automations must be configured by the customer's admin.

  • Zendesk Help Center articles require separate API export from ticket data

    Frappe KB Articles are DocTypes linked to HD Ticket through the same database. Zendesk stores Help Center content (Categories, Sections, Articles) at separate Help Center API endpoints that are distinct from the Support ticket API. These two export pipelines must run independently, and the KB article HTML bodies must be restructured to match Zendesk's section-article hierarchy. Zendesk's Help Center API rate limits (200-2,500 req/min by plan) apply to article migration but not to ticket migration, so we run these as parallel extraction jobs and merge the delivery timeline. On plans without Help Center access, KB migration is not available and articles must be documented as a manual rebuild scope.

  • Zendesk notification triggers fire on import unless explicitly disabled

    Zendesk triggers and automations fire on ticket creation by default. If notification triggers are active during migration, agents and customers will receive automated emails for every imported historical ticket. We coordinate with the customer's Zendesk admin to disable active triggers and macros during the migration import window, run the import, then re-enable triggers after validation. Tickets imported during the disabled-window can be tagged (e.g., migrated_from_frappe) and excluded from future automation runs to prevent duplicate notifications.

Migration approach

Six steps for a successful Frappe Helpdesk to Zendesk data migration

  1. Discovery and source audit

    We audit the Frappe Helpdesk PostgreSQL database to inventory HD Ticket records, HD Customer contacts, Communication threads, SLA Policy definitions, Assignment Rules, Knowledge Base articles and categories, canned responses, Tags, and attachment file references. We assess site health for known conflicts (GitHub #3003), identify private file attachments requiring authentication tokens, and extract the Frappe HD Ticket Template to enumerate all custom fields. We pair this with a Zendesk destination audit to confirm the Support plan tier, Help Center availability, existing custom fields, and active trigger/macro inventory. The discovery output is a written migration scope with object counts, a field-level mapping draft, and a ticket freeze recommendation.

  2. Schema preparation and custom field creation in Zendesk

    We create all equivalent Zendesk custom fields in Admin before any data import. This includes custom fields for HD Ticket extended attributes, HD Customer custom fields, and a frappe_ticket_id__c field for cross-reference. We create Zendesk SLA Policies using the migrated Frappe SLA Policy definitions, configure Zendesk Groups matching the Frappe team structure, and create Help Center Categories and Sections matching the Frappe KB category hierarchy. Triggers and Macros are not created in this step; we inventory the existing Zendesk triggers and advise the admin to disable them before import. We verify Zendesk plan features (Help Center, SLA Policies, custom fields) match the migration scope before proceeding.

  3. Data extraction from Frappe PostgreSQL

    We connect to the Frappe database at the DocType level to extract HD Ticket, HD Customer, Communication, SLA Policy, Assignment Rule, KB Article, Canned Response, and Tag records. We extract attachment file URLs and attempt re-download for each. Private file attachments requiring authentication are flagged for customer remediation (temporary public access or manual export). We use Frappe API calls where available and direct database queries where the API is insufficient (custom fields not in the public API, attachment metadata). Rate limiting is time-based on Frappe, so we implement exponential backoff and request throttling to stay within the cumulative-time budget.

  4. Transformation, deduplication, and sandbox import

    We transform extracted records to Zendesk format: HD Customer becomes End User, Communication becomes Ticket Comments in chronological order, SLA deadlines become custom date fields on Ticket, and Tags map to Zendesk Tags. We deduplicate by email for End Users and by ticket reference for Tickets. We run a full import into a Zendesk Sandbox or staging environment first. The customer reconciles record counts, spot-checks 25-50 records for field accuracy and thread integrity, and signs off the mapping before production migration begins. Any mapping corrections happen here.

  5. Production migration in dependency order

    We run production migration in record-dependency order: End Users and Organizations first (from HD Customer), then Groups (from Teams), then Tickets with Comments last so the full thread lands on the correct requester and group. SLA Policies are created before Tickets so they are available for linking. Custom fields are populated during ticket import using the pre-created Zendesk field IDs. We disable Zendesk triggers and macros before import begins and re-enable after validation. We tag migrated tickets for post-migration automation exclusion. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, delta migration, and handoff

    We freeze HD Ticket writes during cutover, run a final delta export of any records modified during the migration window, then enable Zendesk as the system of record. We deliver the Assignment Rule and Server Script inventory document to the customer's admin team with recommended Zendesk Trigger and Macro configurations. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild Frappe workflows as Zendesk Triggers or custom apps as Zendesk apps within the migration scope; those are separate engagements or admin tasks.

Platform deep dives

Context on both ends of the pair

Frappe Helpdesk logo

Frappe Helpdesk

Source

Strengths

  • Open-source with AGPL-3.0 license, no per-agent or per-ticket billing
  • Deep ERPNext integration connecting support tickets to financial transactions
  • Full SLA configuration with response and resolution deadline tracking
  • Customizable agent portal and customer portal with white-label branding
  • Built-in knowledge base, canned responses, and customer rating collection

Weaknesses

  • Smaller community and plugin ecosystem compared to Zendesk or Freshdesk
  • Self-hosted deployments require server administration and backup management
  • API documentation is sparse; integrations often require custom Frappe scripting
  • Version upgrade path can break custom apps and custom field configurations
  • Limited native AI or advanced automation capabilities compared to newer SaaS competitors
Zendesk logo

Zendesk

Destination

Strengths

  • Well-documented REST API with broad endpoint coverage for Tickets, Users, Organizations, and Help Center.
  • Rich automation primitives: Triggers (event-driven), Automations (time-based), and Macros with variable substitution.
  • Multi-brand support enables large organizations to route and isolate support by product line or subsidiary.
  • Scalable from small teams on Team plan to global enterprises on Enterprise Plus with sandbox and disaster recovery options.
  • Large partner ecosystem and marketplace with hundreds of pre-built integrations reduces integration work at deployment.

Weaknesses

  • Per-agent pricing with aggressive feature gating makes lower tiers feel artificially limited.
  • No native full-KB export — Help Center content requires API scripting to extract.
  • AI features are add-on priced and behave inconsistently, not deeply embedded in core workflows.
  • Implementation timelines for complex multi-channel setups routinely exceed initial estimates by weeks or months.
  • Knowledge base and help center functionality are separate from core ticketing with their own permission model and versioning.

Complexity grading

How hard is this migration?

Standard Helpdesk migration. 2 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Frappe Helpdesk and Zendesk.

  • Object compatibility

    B

    2 of 7 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Frappe Helpdesk: Fixed-window rate limiting based on cumulative request time; no public per-endpoint limit documented.

  • Data volume sensitivity

    B

    Frappe Helpdesk doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Frappe Helpdesk to Zendesk migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Frappe Helpdesk to Zendesk data migrations

Answers to the questions buyers ask most during Frappe Helpdesk to Zendesk migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Frappe Helpdesk to Zendesk migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 15,000 tickets, 500 KB articles, and no private file attachment remediation. Migrations with large conversation threads (over 500,000 comments), private file attachment handling, Frappe Cloud-hosted instances requiring site-conflict resolution before extraction, or multi-language KB article restructuring move to eight to twelve weeks because of direct database access complexity, attachment re-download timelines, and Help Center API rate limiting.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Frappe Helpdesk.
Land in Zendesk, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day