A funnel of ticket cards passing through a narrow gate marked by a page-count bar, then spreading into a self-hosted server; an osTicket-style database cylinder joins from below with a dashed arrow.

Getting out of Freshdesk is an API problem. Getting out of osTicket is a database problem. Which one you have decides how the move goes more than which new help desk you pick.

From Freshdesk you can export tickets, replies, contacts, agents and attachments through its API, with a few limits that catch people. From osTicket you already hold the database, but almost no newer tool has an osTicket importer. Either way, your automation rules, SLAs and canned responses don't come along.

Getting data out of Freshdesk

Escalated's Freshdesk importer, like most, reads from Freshdesk's API. What you need to know, from the Escalated import guide:

  • API access depends on your plan. Escalated's docs say it isn't available on the free plan and needs Growth or above. Freshworks' pricing page lists no free plan as of November 2026, so check what your account has before you pick a cutover date.
  • Use an admin API key. The key belongs to whoever is logged in, and a non-admin key won't see every ticket and group.
  • The ticket list stops at 30,000 per query. That's 300 pages. Escalated's adapter works around it by splitting your history into 30-day windows from 2010 and halving any window that fills all 300 pages. A hand-written export script will hit the ceiling.
  • Attachment links expire. Freshdesk returns temporary signed URLs, so download soon after you get one. The adapter refetches the conversation for a fresh link when a download fails.
  • Tags have no endpoint. They come from the ticket records.

What comes across

The import order is agents, custom fields, departments (Freshdesk groups), contacts, tickets, replies and attachments, with tags collected from the tickets. Statuses and priorities map directly:

Freshdesk Escalated
Status 2 (Open) open
Status 3 (Pending) waiting_on_customer
Status 4 (Resolved) resolved
Status 5 (Closed) closed
Priority 1 to 4 (Low, Medium, High, Urgent) low, medium, high, urgent

Nothing on that list is configuration, so automation rules, SLA policies, canned responses and knowledge base articles stay behind and you rebuild them. In Escalated, a Freshdesk rule that reacts to a new ticket becomes a workflow, one that acts after elapsed time becomes an automation, and a canned response becomes a macro. The Zendesk migration guide has the full mapping.

Getting data out of osTicket

Nothing about osTicket sits behind someone else's API plan, because you host it. The difficulty is on the other side. Escalated's documentation lists importers for Zendesk, Freshdesk, Help Scout and Intercom, and none for osTicket.

That leaves two routes:

  1. Write an adapter. Escalated's import system has a documented ImportAdapter interface and a public guide to building one. The adapter reads your osTicket database and yields normalised records, and the framework handles job tracking, retries and resuming. It's real development work, and you need to know the osTicket schema.
  2. Export and script it. Pull tickets and threads out of the database with SQL and load them through the new tool's API. That's fine for a few thousand tickets and weak if you need exact history.

Either way, run it against a copy of the database first, then check ticket counts, thread order, authors and attachments on a sample.

Why people leave, and who should stay

Freshdesk users leave over cost that grows per seat, data held by a vendor, and limited room to change the product. If none of that bothers you, stay. Moving takes time, and a hosted product asks nothing of you operationally.

osTicket users leave over a dated interface, thin automation, or a wish to run something on a stack they already know. It's still a solid choice for a simple setup, and a team that's happy with it should stay.

What each option needs to run

From each project's repository, November 2026. A blank means the project doesn't state it.

Project Licence Requirements Install
osTicket GPL-2.0 PHP 8.2 to 8.4, MySQL 5.5+ php manage.php deploy --setup <webroot>, then a web installer
FreeScout AGPL-3.0 PHP 7.4 to 8.x, MySQL, MariaDB or PostgreSQL Shared hosting supported
Zammad AGPL-3.0 PostgreSQL 15+, Elasticsearch optional but recommended Docker, Helm, DEB or RPM packages
Libredesk AGPL-3.0 PostgreSQL Docker, or one binary: ./libredesk --install
Escalated MIT PHP 8.2+ for the Laravel package composer require escalated-dev/escalated-laravel, then php artisan escalated:install and php artisan migrate

None of these projects states memory or CPU needs in its docs, and the sizing figures in blog posts are mostly unsourced. Size from a test install.

Which to pick:

  • FreeScout suits non-developers and shared hosting. It handles email and has mobile apps.
  • Zammad suits a team that wants a full standalone help desk and can run PostgreSQL, and ideally Elasticsearch.
  • Escalated suits a team that already ships a web application in one of its 11 supported frameworks, with the help desk living in your app using your users and database.

Ten agents, three years

Freshdesk's prices in November 2026, per agent per month billed annually: $19 (Growth), $55 (Pro), $89 (Enterprise). The self-hosted line assumes a $20 a month server, 10 hours of setup and 3 hours of upkeep a month, with an hour worth $50. Replace those with yours.

Freshdesk, 10 agents, 3 years
  Growth      $19 x 10 x 12 x 3   =  $6,840
  Pro         $55 x 10 x 12 x 3   = $19,800
  Enterprise  $89 x 10 x 12 x 3   = $32,040

Self-hosted, same period
  Year 1   server 240 + setup 500 + upkeep 1,800   = $2,540
  Year 2   server 240 + upkeep 1,800               = $2,040
  Year 3   server 240 + upkeep 1,800               = $2,040
  Total                                             = $6,620

At Growth, $6,620 against $6,840 is a tie, and one unlucky month of upkeep decides it. Against Pro or Enterprise at ten agents, self-hosting wins by a wide margin. If you're on Growth and price is your only objection, moving may not pay. The hosted line grows with every seat and the self-hosted one mostly doesn't, so the case gets stronger as the team grows.

The migration itself is extra on the self-hosted side: the import and the rule rebuild are one-off work this table doesn't count.

Migrating

  1. List your rules. Export or screenshot every automation, SLA policy and canned response, because the import won't move them.
  2. Check API access on the Freshdesk plan and create an admin API key. For osTicket, copy the database.
  3. Import a trial batch into a throwaway install and compare counts and a sample of threads.
  4. Pick a history window. Open tickets plus a recent period is common.
  5. Rebuild the rules, then set up inbound email and test a reply to an imported ticket. See the email ticketing guide.
  6. Run both for a short while with the old system read-only, then cut over addresses, widgets and links.
  7. Keep the old data until you're sure.

The Freshdesk import from a terminal, with credentials as environment variables:

ESCALATED_IMPORT_FRESHDESK_DOMAIN=acme \
ESCALATED_IMPORT_FRESHDESK_API_KEY=your-api-key \
php artisan escalated:import freshdesk --no-interaction

If it's interrupted, php artisan escalated:import freshdesk --resume=<job-id> picks up from the exact date window and page it stopped at.

Where Escalated fits

Escalated is MIT-licensed and self-hosted, with no per-agent fees. It installs as a package inside your own application, using your database and your sign-in, and it has importers for Freshdesk, Zendesk, Help Scout and Intercom. It's a fit if you already run an application in a supported framework. It's the wrong choice if you have no application to put it in, or if you need IT service management, which it doesn't include. The comparison page sets it beside hosted products.

FAQ

What's the best self-hosted alternative to Freshdesk? FreeScout and Zammad if you want a standalone application. Escalated if you want the help desk inside your own product. Match it to the stack you can run.

Can I migrate Freshdesk tickets to a self-hosted help desk? Yes, if the destination has an importer or you write a script. Escalated's Freshdesk importer handles Freshdesk's 30,000-ticket query limit. Your automations, SLAs and knowledge base don't come across.

Is osTicket outdated? It's maintained and works for a simple help desk. Teams leave for a more modern interface or more automation. Escalated has no osTicket importer, so plan to write an adapter or a script.

What are the server requirements? The table above has the versions each project states. None gives a memory or CPU figure, so test on a small server.

Is self-hosting cheaper than Freshdesk? Often at Pro and Enterprise pricing, and about even at Growth for ten agents. It depends on what an hour of upkeep is worth to you.

Prices and requirements as of November 2026.