How to Migrate from Dixa to Zendesk: The Complete Guide
Complete guide to migrating from Dixa to Zendesk — object mapping, API rate limits, Flow decomposition, telephony migration, KB transfer, and what can't be moved.
Planning a migration?
Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.
Schedule a free call- 1,500+ migrations completed
- Zero downtime guaranteed
- Transparent, fixed pricing
- Project success responsibility
- Post-migration support included
Why Teams Migrate from Dixa to Zendesk
A Dixa-to-Zendesk migration moves conversation records, contacts, files, and operational configuration from a real-time, offer-based routing platform to a ticket-lifecycle, view-based support platform. The data transfer is straightforward; the workflow redesign is not.
Teams switch for concrete, platform-specific reasons:
- Marketplace ecosystem: Zendesk offers 1,500+ marketplace apps versus Dixa's smaller app library. (dixa.com)
- Reporting depth: Zendesk Explore provides custom report building, pre-built dashboards, and cross-channel analytics that Dixa's native reporting cannot match.
- Knowledge base maturity: Zendesk Guide supports categories, sections, community forums, and content versioning — a more mature KB product than Dixa Knowledge.
- Enterprise compliance: Zendesk offers FedRAMP LI-SaaS authorization and a HIPAA BAA path. Dixa holds SOC 2 Type II but does not publicly advertise ISO 27001 or HIPAA. (dixa.com)
- Consolidation: The rest of the org already runs on Zendesk, and running a second support platform creates data silos and reporting gaps.
Three architectural differences make this migration non-trivial:
- Offer-based routing vs. view-based pulling. Dixa pushes conversations to agents based on real-time availability and skills. Zendesk uses views and Omnichannel Routing rules to surface work. (dixa.com)
- Visual Flow builder vs. flat business rules. Dixa's Flow Builder is a single canvas that handles queue assignment, priority, auto-replies, IVR, and escalation with branching logic. Zendesk spreads the same behavior across triggers, automations, SLA policies, groups, views, and Talk settings. (dixa.com)
- Native voice vs. separate voice add-on. Dixa includes phone, IVR, callback, and recording in-platform. Zendesk Talk is a separate paid add-on with its own pricing tiers, or you can use a third-party CTI like Aircall or Talkdesk. (dixa.com)
Zendesk Plan Requirements for Migration Features
Not every Zendesk plan supports every feature you need for a complete migration. Match your Dixa feature set to the minimum Zendesk tier before purchasing:
| Feature Needed | Minimum Zendesk Plan | Notes |
|---|---|---|
| Ticket Import API | All plans (Team+) | API access required; enabled by default |
| Multiple ticket forms | Suite Professional | Suite Team supports only 1 form |
| Skills-based routing | Suite Professional | Required to replicate Dixa's agent skill/proficiency model |
| Omnichannel Routing | Suite Professional | Needed for Dixa-style real-time assignment |
| Zendesk Talk (voice) | Talk Team (add-on) | IVR and callback require Talk Professional |
| Custom SLA policies | Suite Professional | Required if Dixa uses per-queue SLA overrides |
| Zendesk Explore (custom reports) | Suite Professional | Suite Team gets pre-built dashboards only |
| Sandbox environment | Suite Enterprise | For dry-run migration testing (see below) |
| Custom agent roles | Suite Enterprise | If Dixa uses granular permission sets |
Dixa to Zendesk Object and Field Mapping
Every Dixa object maps to a Zendesk equivalent, but not every mapping is 1:1. Define your ticket model before you start coding.
- Dixa Conversations (email, chat, phone, Messenger, WhatsApp, contact form) → Zendesk Tickets. Each Dixa conversation becomes one Zendesk ticket. Dixa's unified conversation model is channel-agnostic; Zendesk tickets carry channel metadata but work the same way across channels. (developer.zendesk.com)
- Dixa Messages (customer replies, agent replies, system messages) → Zendesk Ticket Comments. Each message becomes a comment with correct
author_id,created_at,value, andpublicflag to preserve threaded history. (developer.zendesk.com) - Dixa Internal Notes → Zendesk Private Comments. Internal notes live under
conversation_wrapup_notesin Dixa's conversations export, not in the message export. If you only usemessage_export, you lose internal notes. (docs.dixa.io) - Dixa Contacts → Zendesk End Users (requesters). Zendesk end-users are unique by email address. Dixa may have duplicate contacts with the same email — define a merge strategy before import. Per-user custom attributes require the single-user endpoint (
GET /v1/endusers/{userId}), not the list endpoint. (docs.dixa.io) - Dixa Companies/Organizations → Zendesk Organizations. Direct mapping for shared ticket visibility.
- Dixa Agents → Zendesk Agents. Profiles must be recreated. Dixa's skill/proficiency model has no direct equivalent unless Skills-based routing (Suite Professional+) is configured.
- Dixa Teams → Zendesk Groups. Direct mapping.
- Dixa Tags → Zendesk Tags. Tags map directly, but Zendesk tags must be lowercase with no spaces (spaces convert to underscores). Zendesk tags also cannot contain characters like
#,@, or!. Run a normalization pass before import. (support.zendesk.com) - Dixa Custom Attributes (on conversations) → Zendesk Custom Ticket Fields. Type matching is required: Dixa text → Zendesk text, Dixa dropdown → Zendesk dropdown with all option values pre-created. For dropdowns, Zendesk expects option tag values, not display labels, and option tags cannot be reused across custom ticket fields. (developer.zendesk.com)
- Dixa Custom Attributes (on contacts) → Zendesk Custom User Fields. Same type-matching requirements.
- Dixa Conversation Forms → Zendesk Ticket Forms (Suite Professional+). Forms must be recreated manually; field values migrate as custom field data on tickets. The Zendesk Team plan supports only one ticket form. (support.zendesk.com)
- Dixa Phone Conversations → Zendesk Tickets with voice artifacts. Call recordings migrate as ticket attachments or linked URLs. Native telephony metadata (call duration, hold time, IVR path, queue wait time) must be stored in custom ticket fields. If Dixa recording links are private, you need authenticated retrieval from
files.dixa.io. (docs.dixa.io) - Dixa Canned Responses → Zendesk Macros. Must be recreated manually.
- Dixa Knowledge Base articles → Zendesk Guide articles via the Help Center API.
- Dixa CSAT scores → Zendesk custom ticket field values. They will not appear in Zendesk's native CSAT reporting — store them in a custom field and query via Zendesk Explore.
What has no clean equivalent: Dixa Queues (redesign as Zendesk Views + Omnichannel Routing), Dixa Flows (manual decomposition into triggers/automations), offer-based agent assignment, in-Flow chatbot paths, per-queue SLA overrides, in-flight callback state, and Dixa's unified analytics dashboard.
Data Volume Estimation
Before starting extraction, estimate the total data footprint to forecast migration duration and storage requirements:
Formula:
Total data ≈ (conversations × avg messages per conversation × avg message size)
+ (conversations with attachments × avg attachment size)
+ (phone conversations × avg recording size)
Typical benchmarks from mid-market support teams:
| Metric | Typical Range |
|---|---|
| Messages per conversation | 4–8 (email), 10–30 (chat) |
| Average message body size | 1–3 KB |
| Average attachment size | 200 KB–2 MB |
| Average call recording size | 5–25 MB (depends on duration and codec) |
| Conversations per agent per year | 3,000–8,000 |
Example: A team with 40 agents, 200K conversations over 3 years, 6 messages/conversation avg, and 15% attachment rate:
- Text data: 200K × 6 × 2 KB ≈ 2.4 GB
- Attachments: 30K × 500 KB ≈ 15 GB
- Recordings (if 10K phone conversations): 10K × 10 MB ≈ 100 GB
- Total: ~117 GB
This estimate drives decisions about extraction parallelism, storage provisioning, and whether large call recordings need compression or external hosting before upload to Zendesk.
Migration Approaches for Dixa to Zendesk
CSV Export + Zendesk Data Importer — Low Complexity
Export contacts and organizations from Dixa's admin panel, then import via Zendesk's data importer. Current importer limits are 1 GB per CSV, approximately 500,000 rows, and 200 columns. Organizations should be loaded before users when both are in scope. (support.zendesk.com)
Limitation: Zendesk's CSV import cannot import tickets with threaded history, individual message timestamps, or per-message author attribution. This path works for contacts and organizations only.
API-Based Migration — Medium-High Complexity
The primary method for migrating conversation history. Extract conversations via Dixa's Exports API (exports.dixa.io/v1/conversation_export) and messages via the message export endpoint, then load into Zendesk using the Ticket Import API (POST /api/v2/imports/tickets). This is the only method that preserves original created_at timestamps and avoids triggering Zendesk automations on imported tickets. (developer.zendesk.com)
Important: The Zendesk Ticket Import API does not support true bulk import the way the user creation endpoint does. Each POST /api/v2/imports/tickets call creates one ticket. There is no batch equivalent like create_many. Plan your throughput calculations accordingly — at 400 req/min on Professional, importing 200K conversations takes approximately 8.3 hours of continuous API calls, not counting comment assembly or attachment uploads.
Rate limits to plan around:
| API | Rate Limit | Notes |
|---|---|---|
| Dixa Exports API | Max 31-day date window per request | Historical extraction requires iterating through date windows; Dixa does not publish a requests-per-minute limit for the Exports API, but large exports return paginated results with pageKey cursors (docs.dixa.io) |
| Dixa Core API (contacts, users) | ~60 requests/minute (observed, not officially documented) | The single-user endpoint for custom attributes is especially slow at scale |
| Zendesk Ticket Import API | 400 req/min (Professional), 700 req/min (Enterprise) | Returns Retry-After header on 429 responses (developer.zendesk.com) |
| Zendesk Upload API (attachments) | Shared with Support API rate limit | Large files consume more of the rate limit budget |
In most projects, Dixa extraction is the bottleneck, not Zendesk ingestion.
Third-Party Migration Service (Managed) — Low Internal Effort
A provider handles extraction, mapping, transformation, loading, and advises on routing redesign. Use this when you have >50K conversations, complex Dixa Flows, heavy phone channel usage, a large KB, or limited engineering bandwidth.
Custom ETL Pipeline — High Complexity
Build extract-transform-load scripts (Python/Node.js) for full control over transformation logic. Best for non-standard Dixa configurations, per-channel branching, dedupe rules, or when combining the migration with other system integrations. Also the right fit when Dixa user custom attributes require per-user enrichment calls via the single-user endpoint. (docs.dixa.io)
Hybrid: CSV + API + KB Rebuild — Medium Complexity
Import contacts/orgs via CSV, conversation history via Ticket Import API, and rebuild the knowledge base manually in Zendesk Guide (or script it via the Help Center API if >50 articles). This is the pragmatic middle ground for most mid-sized teams.
Quick decision guide:
- Small team (<10 agents, <10K conversations, simple routing) → Hybrid or API
- Enterprise (100+ agents, 500K+ conversations) → Managed service or full ETL
- Must preserve full threaded history → API-based or managed
- Clean break acceptable → CSV contacts + fresh start
- Heavy telephony dependency → Managed service that includes Zendesk Talk setup
Step-by-Step Dixa to Zendesk Migration Process
The order of operations matters. Zendesk's Ticket Import API requires valid requester_id and submitter_id values — end-users and organizations must exist before you import tickets. Custom fields must be created with all dropdown values enumerated before tickets reference them.
1. Audit and extract Dixa data.
Export conversations (in 31-day date windows due to the Exports API limit) and messages from exports.dixa.io. Pull contacts and custom attributes from the core API. Per-user custom attributes require the single-user endpoint. Dixa's pageKey values are opaque — do not attempt to construct them manually. (docs.dixa.io)
Important: Check Dixa's data retention policy before scheduling migration. Dixa's Exports API returns data based on your account's data retention settings. If your contract specifies a retention window (e.g., 2 years), conversations older than that window may not be available via API. Confirm your retention period with Dixa support before planning extraction, and if you need data beyond the retention window, request an extended export before account cancellation.
curl -H 'Authorization: bearer $DIXA_TOKEN' \
'https://exports.dixa.io/v1/conversation_export?updated_after=2024-01-01&updated_before=2024-01-31'2. Clean and deduplicate. Merge duplicate contacts (same email). Normalize tags to lowercase with underscores. Audit all custom attribute values for completeness — especially dropdown values, which must exactly match pre-created Zendesk options. Use E.164 format for phone data. Zendesk rejects CSV rows when an email, external ID, or phone matches more than one user. (support.zendesk.com)
3. Set up the Zendesk instance. Create custom ticket fields, custom user fields, ticket forms, groups, and agent accounts. Pre-create all dropdown field values before importing tickets that reference them. Confirm the target Zendesk plan supports the number of ticket forms you need.
4. Run a dry-run migration in a sandbox. If you are on Zendesk Suite Enterprise, use the sandbox environment to test the full migration pipeline before running against production. Import a representative sample (1,000–5,000 tickets spanning all channels, date ranges, and custom field values) and validate:
- Timestamps render correctly in the ticket UI
- Custom field values land in the right fields
- Attachments and recordings are accessible
- Tags display properly
- Agent assignment and requester attribution are correct
If you are on Suite Professional or lower (no sandbox), create a test Zendesk trial instance for dry-run validation. Delete the trial after testing. This step catches mapping errors that would otherwise require re-importing thousands of tickets in production.
5. Load end-users and organizations first.
Use POST /api/v2/users/create_many (up to 100 per request) and POST /api/v2/organizations/create_many. Map Dixa contact IDs to new Zendesk user IDs — tickets require valid requester_id values.
6. Import tickets with full comment history.
Use the Zendesk Ticket Import API — not the regular ticket create endpoint. Each ticket includes a comments array with per-comment author_id, created_at, value (body), and public flag. Read more in /blog/best-practices-for-help-desk-data-migration/.
import requests
import time
def import_ticket(zendesk_subdomain, auth, ticket_data):
url = f"https://{zendesk_subdomain}.zendesk.com/api/v2/imports/tickets.json"
payload = {
"ticket": {
"subject": ticket_data["subject"],
"requester_id": ticket_data["requester_id"],
"created_at": ticket_data["dixa_created_at"], # preserves original timestamp
"status": "closed",
"tags": ["migrated_from_dixa"],
"comments": [
{
"author_id": comment["author_id"],
"value": comment["body"],
"created_at": comment["timestamp"],
"public": comment["is_public"]
}
for comment in ticket_data["comments"]
]
}
}
response = requests.post(url, json=payload, auth=auth)
if response.status_code == 429:
wait = int(response.headers.get("Retry-After", 60))
time.sleep(wait)
return import_ticket(zendesk_subdomain, auth, ticket_data)
return responseCritical: The Zendesk Ticket Import API rejects tickets with custom field values that don't match predefined dropdown options. Run a complete value audit before import — a single unrecognized value will fail the entire ticket payload. Imported tickets also do not get historical SLA metrics or first reply metrics backfilled, so tag imported records and exclude them from live SLA reporting. (developer.zendesk.com)
7. Upload attachments and call recordings.
Use POST /api/v2/uploads to upload files, then reference the returned tokens in ticket comments. For Dixa call recordings with private URLs, authenticate against files.dixa.io with bearer:<token>. Note that Zendesk has a 50 MB limit per attachment — large call recordings may need compression or external hosting. (docs.dixa.io, developer.zendesk.com)
8. Migrate knowledge base articles. Use the Zendesk Help Center API to create categories, sections, and articles. Help Center API requests do not count against the Support API quota, so KB migration can run as a separate parallel workstream. (developer.zendesk.com)
9. Validate and reconcile. Record-count reconciliation, timestamp verification, field-level spot checks. See the full validation section below and our QA checklist.
How to Migrate Dixa Flows to Zendesk Triggers and Automations
Dixa Flows cannot be programmatically migrated to Zendesk. Every Flow must be manually decomposed into Zendesk triggers, automations, SLA policies, views, and routing rules. This is the single most time-consuming part of the migration and the one most teams underestimate.
Dixa Flows are visual, multi-step routing programs on a single canvas. A single Flow can handle queue assignment, priority setting, auto-replies, IVR menus, business hours routing, and escalation — all with branching conditions and channel-specific logic. Zendesk decomposes this into separate object types:
- Triggers — fire on ticket create/update
- Automations — fire on time-based conditions
- SLA Policies — response/resolution targets
- Views — agent-facing ticket lists
- Omnichannel Routing — real-time assignment (Professional+)
The decomposition process: take each Dixa Flow and break it into its component decisions. Each decision branch becomes one or more Zendesk triggers or automations. A complex Dixa Flow with 10 branches may become 10–15 individual Zendesk triggers.
IVR migration: Dixa's in-Flow IVR menus must be rebuilt in Zendesk Talk's IVR configuration (requires Talk Professional or higher). Zendesk Talk's callback feature cannot be configured as an IVR menu option, so Dixa callback branches usually need redesign rather than a literal copy. (support.zendesk.com)
Voice routing difference: Zendesk Talk's default call routing assigns calls by agent availability and longest time since last answered — this is not Dixa-style offer routing. If you enable Omnichannel Routing, Zendesk can choose between highest-priority/oldest work or soonest SLA breach, which helps when replacing Dixa queue priority logic. (support.zendesk.com)
Use the migration as an opportunity to simplify. Many Dixa Flows accumulate complexity over time. Rebuilding in Zendesk forces a review — eliminate unused branches and consolidate redundant rules. Expect this rebuild to take 1–3 weeks for a team with 5–15 active Flows. For deeper guidance, see our guide on migrating automations, macros, and workflows.
How to Migrate Dixa's Knowledge Base to Zendesk Guide
If your Dixa KB has fewer than 50 articles, manual copy-paste into Zendesk Guide is often faster than scripting. For larger knowledge bases, use the Zendesk Help Center API:
POST /api/v2/help_center/categoriesPOST /api/v2/help_center/categories/{category_id}/sectionsPOST /api/v2/help_center/sections/{section_id}/articles
Zendesk's articles API supports body, title, locale, and translation payloads, so multilingual Dixa articles can be scripted rather than manually recreated. (developer.zendesk.com)
Key migration tasks:
- Re-upload embedded images. Images hosted on Dixa's infrastructure will break if the URLs expire. Download all images, re-upload them to Zendesk or a CDN, and update the image URLs in article bodies.
- Update internal links. Article-to-article links change when you move platforms. Update all internal references to point to new Zendesk Guide URLs.
- Set up 301 redirects. Bookmarked Dixa KB article URLs will break. Redirect old URLs to new Zendesk Guide URLs.
- Verify formatting. HTML rendering can differ between platforms. Spot-check articles after import.
If Dixa KB content is outdated or inconsistent, the migration is a natural trigger for a content audit. Migrate structure via API, then review and update content in Zendesk Guide's editor rather than migrating stale content as-is.
How Long Does a Dixa to Zendesk Migration Take?
A typical Dixa-to-Zendesk migration for a team with 40 agents and 200K conversations takes 4–8 weeks end-to-end. The data load is usually the easy part; Flow decomposition, phone cutover, and KB QA stretch schedules.
Realistic phase breakdown:
- Discovery and planning: 1–2 weeks — audit Dixa data, inventory Flows, assess telephony dependency, scope KB migration, define custom field mapping
- Zendesk instance setup: 1–2 weeks — custom fields, ticket forms, groups, agent accounts (runs in parallel with data prep)
- Dry-run migration in sandbox: 3–5 days — full pipeline test with representative sample, catch mapping errors before production
- Flow decomposition and automation rebuild: 1–3 weeks — manual; often the critical path
- Contact/org migration: 1–3 days
- Conversation history migration: 3–10 days — bottleneck is usually Dixa-side extraction, not Zendesk-side import
- Knowledge base migration: 3–7 days
- Telephony migration: 1–2 weeks — Zendesk Talk setup, IVR rebuild, number porting (runs in parallel)
- Validation and UAT: 1 week
- Go-live and monitoring: 1 week
Risk register:
| Risk | Likelihood | Mitigation |
|---|---|---|
| Flow decomposition takes longer than estimated | High | Start Flow audit in week 1; assign a dedicated person to routing redesign separate from data migration |
| Zendesk Talk does not cover a Dixa telephony feature | Medium | Run feature gap analysis against Zendesk Talk during planning; evaluate Aircall or Talkdesk as alternatives |
| Dixa API rate limits throttle extraction | Medium | Use month-sized date windows; run extraction during off-peak hours; parallelize extraction across date ranges |
| KB article images break after migration | Medium | Re-upload all images to Zendesk Guide; update URLs in article bodies post-migration |
| Legacy call recordings exceed 50 MB limit | Medium | Download early; compress or host externally before upload to Zendesk |
| Dixa data retention window excludes old conversations | Medium | Confirm retention period with Dixa support before planning; request extended export if needed |
| Dry-run reveals mapping errors requiring pipeline changes | Medium | Budget 3–5 days for sandbox testing; better to catch in dry-run than in production |
What Happens to Customers and Agents During Migration?
Customers usually notice less than the support team does. If channels are cut over at go-live (not mid-migration), there is typically no downtime.
- Email: Looks the same to customers. One caveat — customers who reply to old email threads may create new tickets rather than appending to imported ones, since imported tickets may not have the original
Message-IDheaders for email threading. Test this before go-live. - Chat/Messaging: Customers will see Zendesk's Messaging widget instead of Dixa's — different UI, different behavior.
- Phone: If you port numbers from Dixa to Zendesk Talk, the porting window takes 1–3 business days. Plan a fallback via call forwarding or a parallel number.
- Knowledge base: Bookmarked Dixa KB URLs will break. Set up 301 redirects from old URLs to new Zendesk Guide URLs.
Agents feel the operating-model change immediately. Plan agent training around this sentence: Dixa agents accept offered conversations; Zendesk agents work from views or routed queues. That shift is bigger than the UI change. Plan for 1–2 weeks of agent adjustment.
Conversation history continuity: Imported tickets preserve original timestamps and threading. Agents can search and reference past tickets in Zendesk.
CSAT data: Dixa CSAT ratings do not flow into Zendesk's native CSAT reporting. Store historical Dixa CSAT scores in a custom ticket field to query them in Zendesk Explore.
Edge Cases and Known Challenges
Help desk migrations fail in the edge cases. These are the known traps for Dixa-to-Zendesk specifically:
- Expiring call recording URLs. Dixa-hosted recording URLs are not guaranteed to persist. Download all recordings before migration and re-upload as Zendesk ticket attachments. Private recordings require authenticated retrieval from
files.dixa.io. (docs.dixa.io) - Queue-based SLA overrides. Dixa allows per-queue SLA configurations. Each override becomes a separate Zendesk SLA policy with matching conditions (priority, group, form, tags).
- Disposition/wrap-up codes. Zendesk has no native wrap-up code object. Create a custom dropdown ticket field with all disposition values pre-populated before import.
- Duplicate contacts. Dixa may have contacts with the same email address. Zendesk end-users are unique by email. Resolve duplicates before import; Zendesk rejects rows when an email matches more than one user.
- Internal notes in the wrong export. If you only use Dixa
message_export, you lose internal notes. Pull them from the conversations export underconversation_wrapup_notes. (docs.dixa.io) - Dropdown field mapping by label vs. tag. If you map Dixa dropdown fields by display label instead of Zendesk option tags, imports fail or mis-land. (developer.zendesk.com)
- Multi-channel conversations. A single Dixa conversation that spans chat and email may not map cleanly to a single Zendesk ticket channel type. Decide whether to preserve as one ticket with mixed comment types or split.
- 31-day export window. Dixa's Exports API limits each query to 31 days. For a 3-year history, that is ~36 sequential API calls per data type minimum. (docs.dixa.io)
- 50 MB attachment limit. Zendesk's attachment-based workflow has a 50 MB file limit. Large call recordings may need compression or external hosting. (developer.zendesk.com)
- Agent skills. Dixa's agent skill proficiency model does not transfer. Recreate using Zendesk's Skills-based routing on Suite Professional+.
What Can't Be Migrated from Dixa to Zendesk
These elements have no programmatic migration path and must be rebuilt manually:
- Flows → Decompose into Zendesk Triggers, Automations, SLA Policies, Views, and Routing rules
- IVR trees → Rebuild in Zendesk Talk's IVR configuration or a third-party telephony platform
- Chatbot/automation paths → Rebuild using Zendesk AI Agents
- Queue configuration and priority ordering → Redesign as Zendesk Groups + Views + Omnichannel Routing
- Agent skills and proficiency levels → Recreate in Zendesk's Skills-based routing (Suite Professional+)
- Analytics dashboards → Rebuild in Zendesk Explore
- Offer-based assignment model → No Zendesk equivalent; agents adapt to view-based or routed assignment
- In-flight callbacks → Zendesk Talk handles callbacks differently; pending callback requests cannot be migrated
- Integration configurations → Reconfigure via Zendesk Marketplace
- Historical SLA and ticket metrics → Imported tickets do not get SLA or ticket metric backfill in Zendesk (support.zendesk.com)
- Real-time queue metrics and wallboard data → Does not transfer
Rollback Plan
Define a rollback procedure before go-live. Migration failures happen — incomplete data loads, broken routing, or agent productivity drops can require reverting to Dixa temporarily.
Rollback procedure:
- Keep Dixa active in read-only mode for 8–12 weeks post-migration. Do not cancel the Dixa subscription at go-live. Agents should not work in Dixa, but it remains available as a reference archive and fallback.
- Do not port phone numbers until migration is validated. Use call forwarding from Dixa numbers to Zendesk Talk during the transition period. Initiate number porting only after 1–2 weeks of stable Zendesk operation.
- Maintain email forwarding, not MX record changes, during the first week. Forward incoming email to Zendesk while Dixa remains capable of receiving. Switch MX records permanently after validation.
- Document the revert path for each channel. If Zendesk routing fails, agents must know how to log into Dixa and resume operations within 30 minutes.
- Set a rollback decision deadline. Typically 5 business days after go-live. If critical issues are unresolved by this date, revert to Dixa and reschedule migration.
Post-migration Dixa decommission checklist:
- Export a final data snapshot from Dixa for legal/compliance retention (conversation records, CSAT data, call recordings)
- Confirm all data is accessible in Zendesk and validated
- Deactivate Dixa integrations (CRM, e-commerce, etc.)
- Cancel Dixa subscription per contract terms — note that some contracts require 30–90 days written notice
- Archive Dixa API credentials securely (you may need them to retrieve data during the retention period)
- Update internal documentation to remove Dixa references
Validation and Testing After Migration
Do not sign off on record counts alone. Validate behavior, authorship, timestamps, attachments, and agent usability.
Minimum QA set:
- Record-count reconciliation. Compare Dixa conversation counts against Zendesk ticket totals. Reconcile messages vs. comments, users vs. end-users, and KB items vs. articles. Acceptable variance: <0.5% (typically caused by duplicate contact merges or filtered spam conversations).
- Timestamp verification. Verify that imported tickets show original Dixa conversation dates, not the date the migration script ran. Check both
created_atand individual comment timestamps. - Field-level spot checks. Check custom fields, tags, and ticket statuses across a random sample (minimum 50 tickets). Sample across channels and date ranges, not just recent email tickets.
- Attachment/recording checks. Open random phone tickets (minimum 10) and verify recordings play correctly or links resolve.
- Agent UAT. Have 2–3 agents work a real day in Zendesk using rebuilt views, macros, and routing. Focus on the workflow shift from offer-based assignment to view-based pulling.
- Email threading test. Send test replies to old email threads and verify they create or append correctly.
- Trigger and automation test. Create test tickets that match conditions from decomposed Flows. Verify triggers fire correctly, SLA policies attach, and routing assigns to the right groups.
See our QA checklist for the complete post-migration validation framework.
Should You Migrate Dixa to Zendesk In-House or Use a Service?
In-house works when: volume is small (<10K conversations), routing is simple (1–3 Flows, no IVR), telephony dependency is minimal, the KB is small or you plan to rebuild from scratch, and engineering time is available.
In-house is the wrong call when: you have a large historical archive, complex multi-Flow routing with IVR, heavy phone channel usage requiring number porting, a large knowledge base, a tight timeline, or the engineering team is committed elsewhere.
The hidden costs of DIY: Flow decomposition is the most common time overrun — teams estimate 2–3 days and spend 2–3 weeks. Telephony migration (number porting, IVR rebuild, Talk configuration) is the second. Data migration errors (wrong custom field values, broken tag formatting, missing attachments) cause re-runs that double the timeline.
For a broader look at the build-vs-buy tradeoff, see our analysis of in-house vs. outsourced data migration.
ClonePartner has completed 1,500+ data migrations across helpdesk, CRM, HRIS, ATS, and ITSM platforms. For Dixa-to-Zendesk specifically, we handle full conversation history migration via the Ticket Import API (including phone conversations and call recordings), contact and organization mapping, custom attribute-to-field mapping with value enumeration, knowledge base article migration to Zendesk Guide, tag normalization, and advisory on Flow-to-trigger decomposition and Zendesk Talk setup.
Dixa to Zendesk Migration FAQ
How long does a Dixa to Zendesk migration take? A typical migration for a team with 40 agents and 200K conversations takes 4–8 weeks end-to-end. The critical path is usually Flow decomposition (1–3 weeks), not data transfer. Data migration itself takes 3–10 days depending on volume and Dixa API extraction speed.
Can I keep my full Dixa conversation history in Zendesk?
Yes. Zendesk's Ticket Import API preserves original created_at timestamps, full comment threading with per-message author attribution, and the public/private flag on each message. Every Dixa conversation becomes a Zendesk ticket with its complete history intact. (developer.zendesk.com)
What data is lost when migrating from Dixa to Zendesk?
No conversation data is lost if extracted correctly (remember to pull internal notes from conversation_wrapup_notes, not just message_export). What you lose is runtime behavior: Dixa Flows, IVR trees, chatbot paths, queue configurations, agent skills, analytics dashboards, and integration configurations cannot be programmatically migrated. They must be manually rebuilt. Imported tickets also do not get historical SLA or ticket metric backfill.
Can I migrate Dixa Flows to Zendesk triggers and automations? Not programmatically. Each Dixa Flow must be manually decomposed into individual Zendesk triggers, automations, SLA policies, and views. A complex Flow with 10 branches may become 10–15 separate Zendesk objects. This is typically the most time-consuming part of the migration.
Is there a free tool to migrate from Dixa to Zendesk? There is no free automated tool for a full Dixa-to-Zendesk migration with threaded conversation history. The Dixa API and Zendesk Ticket Import API are both free to use, but building the ETL pipeline requires engineering work. Self-serve tools like Help Desk Migration can automate standard record transfer but do not handle routing redesign, IVR, or reporting. (help-desk-migration.com)
Do I need to shut down Dixa during migration? No. Data migration runs against Dixa's APIs while agents continue working. Only the go-live cutover requires switching agent workflows from Dixa to Zendesk, which can be done during a low-traffic window. Keep Dixa active in read-only mode for 8–12 weeks post-migration as a fallback and reference archive.
Does Zendesk Talk replace Dixa's built-in phone system? Zendesk Talk covers most features (IVR, callbacks, call recording, queue routing) but is a separate paid add-on with its own pricing. IVR and callback require Talk Professional ($49/agent/month as of 2024). Run a feature gap analysis during planning. If Talk does not cover your needs, evaluate Aircall or Talkdesk as alternatives.
Should I use a Zendesk sandbox for testing? Yes. If you are on Suite Enterprise, use the built-in sandbox to run a dry-run migration with a representative data sample before loading into production. If on a lower plan, create a temporary Zendesk trial instance for testing. A dry-run catches mapping errors, dropdown value mismatches, and timestamp issues before they affect production data.
What happens to my Dixa account after migration? Keep Dixa active in read-only mode for 8–12 weeks post-go-live. Before cancellation, export a final data snapshot for legal/compliance retention. Check your contract for cancellation notice requirements (typically 30–90 days). Cancel only after confirming all data is validated in Zendesk and the rollback window has closed.
Frequently Asked Questions
- How long does a Dixa to Zendesk migration take?
- A typical migration for a team with 40 agents and 200K conversations takes 4–8 weeks end-to-end. The critical path is usually Flow decomposition (1–3 weeks), not data transfer. Data migration itself takes 3–10 days depending on volume and Dixa API extraction speed.
- Can Dixa conversation history be preserved in Zendesk?
- Yes. Zendesk's Ticket Import API (POST /api/v2/imports/tickets) preserves original created_at timestamps, full comment threading with per-message author attribution, and the public/private flag on each message. Every Dixa conversation becomes a Zendesk ticket with its complete history intact.
- What data can't be migrated from Dixa to Zendesk?
- Dixa Flows, IVR trees, chatbot paths, queue configurations, agent skills, analytics dashboards, and integration configurations cannot be programmatically migrated. They must be manually rebuilt in Zendesk. Conversation history, contacts, organizations, tags, and custom fields migrate cleanly. Imported tickets also do not get historical SLA or ticket metric backfill.
- Can I migrate Dixa Flows to Zendesk triggers and automations?
- Not programmatically. Each Dixa Flow must be manually decomposed into individual Zendesk triggers, automations, SLA policies, and views. A complex Flow with 10 branches may become 10–15 separate Zendesk objects. This is typically the most time-consuming part of the migration.
- Is there a free tool to migrate from Dixa to Zendesk?
- There is no free automated tool for a full Dixa-to-Zendesk migration with threaded conversation history. The Dixa API and Zendesk Ticket Import API are both free to use, but building the ETL pipeline requires engineering work. Self-serve tools can automate standard record transfer but do not handle routing redesign, IVR, or reporting.
